调试spi转can芯片MCP2518和can芯片MCP2542FD
硬件连接(MCU STM32H743)
1.MCP2518FD连接MCU。
将2518的SDO接到MCU的SPI_MISO,SDI接到MCU的SPI_MOSI,SCK接到MCU的SPI_SCK,nCS接到MCU的NRF_CS。*此外,2518所在板卡的GND要和MCU所在板卡共地!!!
2.MCP2518连接CAN芯片MCP2542FD

CAN芯片封装如上图所示,其中TxD是Transmit Data Input,即数据输入管脚;RxD是Receive Data Output,即数据输出管脚。
2518的TxCAN连接到CAN芯片的TxD,RXCAN接到CAN芯片的RxD。CAN芯片的STBY接地,VIO接3.3v,VDD接5V,VSS接地。
3.CAN芯片连接CAN盒
为方便查看数据发送结果,将CAN的H和L分别接到CAN盒(USBCANFD 200U)的H和L。
软件
2518的demo。若直接将demo拷贝的工程中,提示无法连接到memory,是因为文件过大。根据APP_CANFDSPI_Init()函数摘取主要部分即可,且spi部分可使用mcu库函数实现。
调试问题
1.调试CAN 2.0模式
问题:只有每次MCU和2518同时复位后,才可收发数据,且每次只能收发30s左右。
解决:CAN芯片的STBY管脚接地
2.调试CANFD加速模式
问题1:不接CAN盒时,测试MCU的SPI_MOSI管脚及2518的TXCAN管脚,数据及仲裁段、数据域的波特率均正常,但接上CAN盒后,CAN盒无法接收、发送数据,且一直闪红灯,再测试上述两管脚,数据乱码。
解决:CAN盒默认配置成CANFD-ISO标准,改为Non-ISO后,可收发数据。注意:CAN盒的终端电阻必须要使能,否则会扰乱can总线的数据。
(CAN-FD首先由博世提出,早期的CAN-FD称之为“no-iso”;后来can-fd标准化(11898-2:2015),一个3位填充位计数器和一个额外的奇偶校验位被引入,CRC的计算值也改变了,导致两者不兼容。早期的CAN-FD控制器是“no-iso”的,而目前大部分CAN设备默认都是ISO的,在使用的时候需要选配。)
问题2.CAN盒正常接收三四帧数据后,接收的数据变为全1。监测2518的TXCAN管脚发现发送的数据即为全1.
解决:调试代码发现,发送数据时从2518的SFR寄存器读取的用户地址超出RAM范围,向根据此用户地址计算的发送地址发送的数据无法读取,且读取2518的CiBDIAG0、CiBDIAG1寄存器,提示EFMSGCNT(ERROR FREE MESSAGE CNT)有计数值,即错误空信息计数。故确定是用户地址出现问题。确认读取用户地址的寄存器地址无误后,计算TEF、TX Queue和FIFO所占总空间,发现超出RAM大小,删除TEF和TX Queue并修改FIFO Payload Size,使其在RAM大小范围内即可。
RAM内分部
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)