主题中讨论的其他器件:TCAN4550、、 TCAN4550-Q1
您好!
在上一篇文章的帮助下、我能够与 TCAN 建立联系。 然后、我尝试将您的代码示例"转换"为用于 ST MCU 的 Keil 代码。 初始化失败。 其他 CAN 器件没有从 TCAN 获取 ACK。 尝试清除所有错误后、我立即收到"正在进行内部多传输模式访问"错误。 我在屏幕截图中记录了从我写入的寄存器读取的值。 你能看到什么问题吗?
我所做的是:
将"0xFFFFFFFFF"写入0x000C (清除 ERR 标志)
将"0"写入0x0830 (禁用中断)
从0x0820读取并将该值写回 (清除中断标志)
将"0"写入位4&3、将"1"写入0x1018的位1&0 (启用受保护的寄存器)
从0x1018读取、应用屏蔽(~(0xFFFF0C00 | 8))、将"1"设置为位9、8、1、0、并回写 (启用 BRS、FD、CCE、init)
将"1"写入0x1080的位4、2、1、0 (接受全局消息到 FIFO0)
将"5<<25 | 1<<16 | 30<<8 | 7'写到0x101C (Sjw=6、预分频器=2、tseg1=31、tseg2=8)
将"0<<16 | 13<<8 | 4<4 | 3"写入0x100C (预分频器=1、tseg1=15、tseg2=5、Sjw=4)
将"14<<8"写入0x1048 (TDCO=15)
将"0"写入到0x8000至0x87FF 之间的存储器 (清除存储器)
将"0"写入0x1084 (标准滤波器地址= 0x8000)
将"4"写入0x1088 (扩展滤波器地址= 0x8004)
将"0x800C | 5<<16| 0x80000000"写入0x10A0 (RX FIFO0元素=5、地址=0x800C)
将"0x8174 | 0<<16 | 0x80000000"写入0x10B0 (RX FIFO1元素=0、未使用)
将"0x8174"写入0x10AC (RX 缓冲元素=0、未使用)
将"0x8174 | 0<<16"写入0x10F0 (RX 缓冲元件=0、未使用)
将"0x8174 | 2<<24"写入0x10C0 (TX 缓冲元素=2、地址=0x8174)
将"7<<8 | 7<<4 | 7"写入0x10BC (RX 缓冲区大小= 64字节)
将"7"写入0x10C8 (TX 缓冲区大小= 64字节)
将"0"写入0x1018的位4、3、1、0 (禁用保护寄存器)
将"1"写入0x1054 (在 nINT 上启用 RX FIFO0中断)
将"0<<30 |1<<27 | 0x720<<16 | 0x7F9"到0x8000 (标准 id filter:SFT=0 (范围滤波器)、SFT=1 (存储在 FIFO0中)、SID1=0x720、SID2=0x7F9)
将"1<<29 | 0x12345678"写入0x8004并将"2U<<30 | 0x1FFFFFFF"写入0x8008 (XID 滤波器:EFEC=1、id=0x12345678、EFT=2、MASK=0x1FFFFFFF)
将'3U<<30| 1<<27 | 1<<10 | 1<<5'写入0x0800 (器件配置寄存器)
将"2"写入0x0800的第7位和第6位 (正常模式)
将"0xFFFFFFFFF"写入0x1050 (清除所有中断)