渤海三叠浪 发表于 2013-4-12 10:04 
ID放到 IFx Arbitration Registers里面。寄存器说明在BOSCH can手册的21页。22页有详细说明 ...
谢谢你的回复。
发现CAN接收的数据不对,不知道问题在哪。还麻烦你帮着看看。
使用的是基本模式,此时IF1为发送缓冲区,IF2为接收缓冲区。初始化和CAN接收程序见附图。
能够接收数据(在CAN0_Receive函数的 RxOk 里LED正常工作),但是接收到的数据不正确,在图中红色框中的LED不能按预期工作。
详见附图。
顺便问一下CAN波特率的配置:
CAN0BT
Res[15]Tseg2[14:12]Tseg1[11:8]SJWP[7:6]BRPE[5:0]
baud = Fclkcan ÷ (BRPE+1) ÷[(Tseg2 + 1) + (Tseg1 + 1) + (SJWP + 1)]
使用内部时钟 24MHz,提供的例程使用的 1Mbps 波特率,CAN0BT =0x1402
即:Tseg2 = 1, Tseg1 = 4, SJWP = 0, BRPE = 2
baud = 24M ÷ (2+1) ÷ [(1+1)+(4+1)+(0+1)] = 1 M
我配置 500 Kbps时
CAN0BT = 0x1C02
baud = 24M ÷ (2+1) ÷ [(1+1)+(12+1)+(0+1)] = 500 K
但是,发现不能通信,不知何故?
期待您的回复,谢谢。
|