不爱说话的个人空间 https://bbs.21ic.com/?83633 [收藏] [复制] [RSS]

日志

STM32F750 Linux CAN驱动收发测试成功

已有 234 次阅读2019-3-27 13:14 |个人分类:STM32F750|系统分类:嵌入式系统| STM32, STM32F7, Linux, Cortex-M7, uClinux

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应用就可以像网络编程那样写程序了(虽然还有很多不明白的地方)。


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)