原子哥,我在你的CAN总线的例程上做了点修改,我用两块开发板做实验,实验结果表明在回环模式下是两个开发板都能实现发送和接收数据,但是当把两个板连接起来,用普通模式下却发不出数据,在硬件仿真下看到发送状态sta=0x05,发送是失败的。不知为什么?我的开发板没有CAN模块,都外加上去的。在回环模式下,两个开发板都是可以的,在普通模式下两个CAN模块的CANH和
CANH 连接,CANL和
CANL连接。这是我的修改程序,其它地方都没改:
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "can.h"
//#define KEY0 PCin(0) //PC0
u8 sendbuf[8]={0x09,0x02,0x09,0x04,0x05,0x06,0x07,0x08};
u8 receivebuf[8];
int main(void)
{
u8 key;
u8 res;
u8 mode=0;//CAN工作模式;0,普通模式;1,环回模式
Stm32_Clock_Init(9); //系统时钟设置
uart_init(72,9600); //串口初始化为9600
delay_init(72); //延时初始化
CAN_Mode_Init(1,8,7,5,mode);//CAN初始化,波特率450Kbps
while(1)
{
res=Can_Send_Msg(sendbuf,8);//发送8个字节
key=Can_Receive_Msg(receivebuf);
}
} |