1. 配置CAN 管脚
2. 修改时钟为外部时钟
样机使用48Mhz外部晶振,之前这里选的是内部时钟导致CAN一直不通
对应原理图如下:
修改如下:
3. 使用SDK中的CAN示例代码,发现CAN发送一直异常
现象: 单步CAN发送一帧数据,使用CANPro接收会一直接收同一帧数据,停不下来,
而且发现CAN没有进入到发送完成中断里面去
出现CAN发送异常的SDKs版本如下:
原因:
工程中使用的SDKs版本不一样导致的,示例代码中对应的是S32K116的开发板而我们用的是116的样机板,
所以SDKs的版 本选择有一定不一样
解决办法如下:
1.重新创建工程
2.选择SDKs时选择最新的版本 2.9.2版本,如下
4. SDKs版本选择以及示例代码选择建议
以后推荐就用SDKv2.92版本的 (其他版本指不定出啥问题)
5. CAN 发送和接收 中断模式和阻塞模式调试区别
6. CAN过滤器使用方法
a .使用MB的方式
(1) 每个MB buffer对应一个can id, 目前使用的此方法,测试正常。
(2) 注意必须CAN RX api必须使用中断模式(多次触发中断正常),不能使用阻塞模式(测试只能触发一次后续触发不了)
(3)***CAN_Receive接口每个都RX_MAILBOX都必须要对应***
(4)另外: 接收中断处理完后,必须再重起所以RX_MAILBOX buffer的CAN_Receive
b.使用fifo的方式
使用FIFO的方式,设置滤波和接收buffer.
但是使用此方法一直会有各种数据接受异常,所以未调通,一直使用上面方面