你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32F750 Linux CAN驱动收发测试成功

[复制链接]
STMCU小助手 发布时间:2022-4-7 18:28
CAN功能调通是这次做板最大的收获。1 n6 W0 i" a# j' m
: N2 H0 j( S4 Q
在做这块板子之前我是没有调通STM32 Linux socket CAN的,但是我觉得CAN接口是很有用的,于是抱着不成功便成仁的心态先把CAN收发器和接口做到板子上了。; |# K- e! g. X- f* M! {9 \
) j! J8 a0 l5 W7 r
调试开始后,一切都很顺利,u-boot ok,linux ok,之前F429上能用的功能在F750上都成功了,最后轮到CAN接口了。# E4 k& [- c+ `% a. t5 q% z) c

- d/ S- @7 n/ r由于我没有现成的CAN网络,我的测试方式是把两块板子的CAN接口连起来组成最小的网络,一块板子发送,另一块接收。
/ Q9 T" [0 J# L, d1 {9 Q; }+ F% R+ d1 i% t: j) _( t( C  }
我用的测试程序来自于can-utils工具包,cansend是发送程序,candump是接收程序,一开始cansend可以执行但是接收那边没有动静,打开debug调试信息一看,原来can数据帧没有发出去一直mailbox里。这个问题困扰我好几天,网上搜索说STM32的CAN没接收发器或者没连入网络的时候会发不出去数据,可是我这里接了啊。$ I* J& {( u  r& t1 [& u- |
0 |" k& A% t( f8 S9 J' j" O
于是仔细检查电路,最后发现原因了,CAN TX/RX和收发器接反了(以前做RS232串口经常犯的错误又重现了,很没有面子啊),好在CAN接口是用跳线连接的,对调一下就可以。
- g/ v8 Q3 Q% F3 C9 |3 W) P
, s" K% R; r0 V( f检查连接无误后再次上电,先打开接收板的CAN接收程序(candump),然后在发送端敲入cansend 。。。。。。,接收端正确接收到的数据了,这次终于成了!!!
& `8 s( p' u. o0 ?( `$ f+ c/ R
0 L! K: M" S5 L6 E' d! ]% l" Z+ ~! B- u
STM32裸机CAN收发也许不算什么,但是在Linux下还是很不一样的,它是按照网络套接字(socket)机制工作的,用户只需要写应用,至于数据收发,是否成功,超时检测都由系统做了。以后做CAN应用就可以像网络编程那样写程序了(虽然还有很多不明白的地方)。+ W% ^+ l6 n; N2 b
, X' h- ^% e) q+ Q6 R4 K
6ZO82E4Z9Q{~_WBQU]Y$U@G.png
- D; l4 K# z, v. i) R 20190401163248508.png
! W( W, f+ w: {' _( X/ Z
: U, B3 d& ]+ k8 [$ i8 _3 J
; f8 B$ c, V% S( f0 n/ f5 G# p$ F# z& b- M; O/ e
9 P( q% J  U& u
; o5 u  H5 X. Y2 R+ e' K
' T0 G. c" K6 h3 _

! i! c1 R/ [( c! V4 A: v4 Q
赞 收藏 评论0 发布时间:2022-4-7 18:28

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版