打印
[模拟产品/SiC]

调试spi转can芯片MCP2518和can芯片MCP2542FD

[复制链接]
2363|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wiba|  楼主 | 2021-9-2 09:25 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
硬件连接
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。


使用特权

评论回复
沙发
wiba|  楼主 | 2021-9-2 09:26 | 只看该作者
软件

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



使用特权

评论回复
板凳
chenyuean| | 2024-3-11 15:57 | 只看该作者
请问demo可以分享一下吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

3312

帖子

3

粉丝