STM32F750 Linux CAN驱动收发测试成功-实战经验

博主分享了在STM32F750上进行Linux CAN驱动的调试经历,从遇到数据帧无法发送的问题,到发现并解决TX/RX线路接反的错误,最终成功实现CAN收发。在Linux环境下,CAN驱动按照socket机制工作,简化了应用开发。文章还提供了相关学习资源链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要资料的可以加我:腾讯3249838614
CAN功能调通是这次做板最大的收获。

在做这块板子之前我是没有调通STM32 Linux socket CAN的,但是我觉得CAN接口是很有用的,于是抱着不成功便成仁的心态先把CAN收发器和接口做到板子上了。

调试开始后,一切都很顺利,u-boot ok,linux ok,之前F429上能用的功能在F750上都成功了,最后轮到CAN接口了。

由于我没有现成的CAN网络,我的测试方式是把两块板子的CAN接口连起来组成最小的网络,一块板子发送,另一块接收。

我用的测试程序来自于can-utils工具包,cansend是发送程序,candump是接收程序,一开始cansend可以执行但是接收那边没有动静,打开debug调试信息一看,原来can数据帧没有发出去一直mailbox里。这个问题困扰我好几天,网上搜索说STM32的CAN没接收发器或者没连入网络的时候会发不出去数据,可是我这里接了啊。

于是仔细检查电路,最后发现原因了,CAN TX/RX和收发器接反了(以前做RS232串口经常犯的错误又重现了,很没有面子啊),好在CAN接口是用跳线连接的,对调一下就可以。

检查连接无误后再次上电,先打开接收板的CAN接收程序(candump),然后在发送端敲入cansend 。。。。。。,接收端正确接收到的数据了,这次终于成了!!!

STM32裸机CAN收发也许不算什么,但是在Linux下还是很不一样的,它是按照网络套接字(socket)机制工作的,用户只需要写应用,至于数据收发,是否成功,超时检测都由系统做了。以后做CAN应用就可以像网络编程那样写程序了(虽然还有很多不明白的地方)。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值