这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » CAN通讯的一个简单例子

共14条 1/2 1 2 跳转至

CAN通讯的一个简单例子

专家
2024-01-16 22:03:16   被打赏 50 分(兑奖)     打赏

        前面我学习了CAN通讯的一些简单知识,这次,准备直接上实际测试,增加感性认识。为了保证出成功,使用已集成了CAN通讯的一块开发板。

图片1.png

        板子上已经集成了两个CAN通讯外设,方便我们简单的测试。CAN收发的控制芯片为TJA1050。主控芯片STM32F107VCT6本身是带CAN外设控制器,

图片2.png

        通过外接CAN的收发器TJA1050,就可以构成CAN的收发线路了。

图片3.png

图片6.png

        为了方便测试,我们可以把CAN1和CAN2接起来,由CAN1发送数据,由CAN2接收数据。因为本次测试仅仅是为了感性认识CAN的收发处理,因此对程序不过多解读。

        主处理中,在初始化阶段默认发送一次数据,由CAN1发出去。因为和CAN2直连,所以CAN2会收到数据。接受的数据通过串口打印出来。之后循环检索4个按钮,哪个按钮按下,就发送和按钮编号匹配的数据。CAN2接收到后依旧从串口打印出来。


int main(void) {
    int i = 0;
    
/* Setup STM32 system (clocks, GPIO, NVIC) */
SystemInit();
    System_Setup();
    NVIC_Configuration(); 
    USART_Configuration();  
    
GPIO_Configuration_Can();
CAN_Configuration();
NVIC_Configuration_Can();
    
    LED_Configuration();//LED配置
Key_Configuration();   
    
    
    RS232_Send_Data("Start test ...\r\n",20);
    
    RS232_Send_Data("Can1 send test : 0 \r\n",20);
    CAN1_DATA[7] = '0';
    CAN1_Write_Data(CAN1_ID);
    
while (1) {
//if(can1_rec_flag == 1) {
//can1_rec_flag = 0;
//CAN1_Write_Data(CAN1_ID);
//}
        
        One_LED_ON(Key_Value());//有按键按下则点亮相应的LED
        
if(can2_rec_flag == 1) {
            RS232_Send_Data("Can2 reciev, data = : ",50);
            RS232_Send_Data(CAN2_DATA, 8);
            RS232_Send_Data("\r\n", 8);
can2_rec_flag = 0;
CAN2_Write_Data(CAN2_ID);
}
}
}

        主程序以外的代码,我就不贴出来了,我会把整个工程的压缩包在帖子后面附上。

        这个程序演示了在拥有CAN外设的单片机上,如何实现建立CAN总线的数据收发,由于大部分机能都已经被封装以及被底层处理完成,需要我们处理的事情就很少了,你可以像使用串口那样简单地发送、接收数据即可。而且使用了专用的CAN收发器,外围电路实际上也很简单。

        最后,贴上实际整个装置的图片以及测试过程中串口的输出信息。

图片5.jpg

        后面打算使用其它单片机,搭建CAN收发模块,实现CAN收发电路。另外时间合适的话,会用示波器捕捉本次实验的通讯波形,并对照CAN通讯协议,深入学习、理解CAN有关的知识。

工程:can.zip




关键词: 菜鸟学单片机     CAN收发数据    

院士
2024-01-16 22:50:06     打赏
2楼

版主厉害了!

CAN通讯是不是很复杂啊?

P.S. 版主你的截图怎么这么不清晰啊!图片像是被压缩了


院士
2024-01-17 06:13:01     打赏
3楼

谢谢楼主的分享~!


专家
2024-01-17 08:15:52     打赏
4楼

不错,学习了


高工
2024-01-17 09:06:39     打赏
5楼

谢谢分享


专家
2024-01-17 09:42:00     打赏
6楼

咦,串口通讯的截图是来自电脑窗体的硬拷贝啊,怎么会这么不清晰,还有雪花点?看来下次发帖自己得多检查检查。


专家
2024-01-17 10:09:48     打赏
7楼

谢谢分享


院士
2024-01-17 12:58:34     打赏
8楼

版主 继续啊!

今天晚上还有新帖子放出来吗?


专家
2024-01-17 15:51:01     打赏
9楼

哪有那么快啊,哈哈哈。我每一次调试成功了才敢发帖子的。现在在准备下一次试验用的材料。


专家
2024-01-19 01:03:53     打赏
10楼

谢谢楼主的分享


共14条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]