您好!
我正在尝试使用外部石英40MHz 从 TCAN 4550发送消息。 要发送的消息是具有扩展 ID 的 CAN2.0b。
问题是、当我尝试使用 TX 缓冲器0发送消息时、CAN 上没有任何内容正在进行、我看到消息仍处于挂起状态(通过读取 TXBRP)
收发器配置步骤如下所示:
1/清除状态寄存器0x000CU (写入0xFFFFFFFF)
2/仅激活 CANDOM 和 CANSLNT (0x0830寄存器)
3/如果 PWRON 中断、则将其清除(在0x0820寄存器处)
4/解锁受保护的寄存器
5/停用 FD 运行(FDOE 和 BRSE = 0x00)
6/配置标称时序,我想要500kbit 与81.3% SP :
您能为本部分提供帮助吗? 我认为我对40Mhz 晶体是正确的:
NBRP = 0x0001U /* 0x02 = 0x01、因为收发器解释(val + 1)*/
NTSEG1 = 0x1EU; /* 0x20 = 0x1E、因为-1用于 SYNC 位和收发器解释(val + 1)*/
NTSEG2 = 0x07U; /* 0x08 = 0x07、因为收发器解释(val + 1)*/
NSJW = 0x00U; /* 0x01但0x00、因为收发器解释(val + 1)*/
7/即使未使用、也要配置数据位时序
8/配置全局过滤器(拒绝所有远程帧、接受所有其他帧用于测试目的)
9/配置 MRAM:
- 清除所有 MRAM (用0填充)
- 0x8000:ID 过滤器接受
- 0x8100:RX FIFO
- 0x8200:RX 缓冲区
- 0x8300:TX FIFO
- 0x8400:TX 缓冲器
10/锁定保护的寄存器
11/激活中断 RF0N_EN 以接收新消息
12/激活线路中断:EINT0 = 0x01
13/设置时钟基准(40MHz)
14/设置正常模式
15/在 TX 缓冲器地址上写入我的 CAN 消息
16/写入 TXBAR 0x01
我做错了什么?
谢谢!
凯文