软件 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内分部
|