stm32调试can总线使用tja1050和vp230 61mctcvg4遇到的问题
一开始使用vp230 61mctcvg4这个模块 貌似也叫sn65hvp230这个芯片调试can总线,他的供电为3.3v
如下图
丝印为vp230 61mctcvg4
买了4个调了2天也没通,估计买到假货了,在淘宝买的,当然也不知道是哪的问题。在次注意以后不要用此片子。
后来买了tja1050收发芯片,使用千目电子的usb-can-A1+软件工具,进行分析调试。一开始使用监听模式能收到数据,正常连接无法接收。技术支持说波特率不对。
我让stm32作发送器,usb-can作接收器。
在调试的时候,要使用仿真对波特率进行比对。在配置波特率的时候有一个公式是
// fclk=36M FCLK/((SJW+BS1+BS2)*PRESCALE) CAN_Normal_Init(1,8,7,5,1);
//baud:36M/((1+8+7)*5)=450Kbps
这个公式不适用所有的波特率,唯一的正确的方式是进行仿真。如下图
在外设里找到can contrloer 确认波特率。
我的设置成800k .CAN_Mode_Init(CAN_SJW_2tq,CAN_BS1_10tq,CAN_BS2_6tq,5,mode);
can transmit mailbox发送的数据为
使用千目电子的工具接收的数据为
两者比较正确。
调试can的正确步骤
1 先使用回环电路测试软件是否存在问题。
2 连接单片机和can收发器然后跟PC端的usb can 分析仪通信。
3 2阶段可以使用示波器测试波形,得到的波形如果让单片机发送,PC接收,那么stm32的PA12脚有波形
总线上的canH CANL都有方波,且方波对称
4 3有问题换收发器
最新评论