两个板子can通信normal模式,为何总是发送失败?

2019-07-20 09:52发布

   新手,今天想用f7阿波罗板子和f1普中板子进行can通信,发现如下问题:

F1普中板子用标准库,回环模式和正常模式都可以发送成功。而F7阿波罗板子用HAL库,回环模式可以发送成功,正常模式总是发送失败。

正常模式时,我两个板子是用线连接好CANH和CANL的,传输速率都是500kbps,F7程序用的是指南书上的标准程序,按F7的程序自己改的F1的程序。

如果是两者配置的CAN初始化参数和过滤器参数不一致,那么为何F1的板子正常模式可以发送成功,F7的板子正常模式就发送失败?

由于手头只有这两个板子,没有两个相同的板子,如果按指南书上说的,两个F7板子,进行CAN NORMAL模式通信,如果两者配置的参数不一样,也会发送失败吗?


还是有别的冲突?


请教高手,谢谢!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
duanzhiruorou
1楼-- · 2019-07-20 14:36
正点原子 发表于 2018-1-19 02:27
不影响,但是波特率必须一致。

谢谢原子哥,我已经搞定。
前提是把F7的APB1降到36兆,和F1一样。其他时间段、分频系数设成一样的,就OK 了。
对了,还有中断!!!
例程中如果CAN1_RX0_INT_ENABLE=0,则其他不变,可实现通信。
如果 CAN1_RX0_INT_ENABLE=1, 则必须将例程中的CAN_IT_FMP0 改为 CAN_IT_FF0!!!
至今也不知道为什么。。。。。。
还有今天的标识符屏蔽问题,假如发送扩展帧,历程中的报文ExtId是不变的,我现在想将ExtId随发送报文的个数增加,是每发一个数据就加一,还是发完八个数加一?
我是想实现一下发八个连续的ExtId,之后再用过滤器屏蔽掉,只接收其中一个,但是还是没
成功,要么一个也收不到,要么收八个。
该怎么实现,有哪里弄得不对?请高手赐教。
正点原子
2楼-- · 2019-07-20 19:42
 精彩回答 2  元偷偷看……
duanzhiruorou
3楼-- · 2019-07-21 00:21
 精彩回答 2  元偷偷看……
正点原子
4楼-- · 2019-07-21 02:15
duanzhiruorou 发表于 2018-1-17 09:39
没有,但是显示屏上显示的是发送成功。
想问问原子哥,两个板子频率不一样,为了保证相同的传输速率,ts ...

不影响,但是波特率必须一致。
yklstudent
5楼-- · 2019-07-21 07:58
 精彩回答 2  元偷偷看……
正点原子
6楼-- · 2019-07-21 12:29
duanzhiruorou 发表于 2018-1-19 18:30
谢谢原子哥,我已经搞定。
前提是把F7的APB1降到36兆,和F1一样。其他时间段、分频系数设成一样的,就OK ...

加多少随便你,发送长度由你自己定

一周热门 更多>