| | | | | CAN总线没有主机,用ID区分消息优先级和功能,没有地址的概念。
|
|
|
| | | | | | | 那比如要发送几个变量,Vout Iout PIN Pout,怎么确定哪个ID对应哪个变量,能否简单给举个例子?
ID 0X300 对应Vout
ID 0X500 对应Iout 需要怎么配置。
|
|
|
| | | | | | | | | 你可以直接用ID区分,也可以用数据帧的第一个字节区分,具体协议自己定就行了。CAN只是硬件层面的。 |
|
|
|
|
| | | | | | | 是有相关的寄存器么,我没有找到,demon code中定义的结构体,然后直接给ID赋值了
|
|
|
| | | | | 例如某款CAN电源( 目前知道,3款都类似实现)。
远程,扩展帧 ,125K
ID 固定 4Byte 0xHHHHHHHH ;
数据 8 BYTE 0x HHHHHHHH HHHHHHHH
前面 4 BYTE 可以放ID;后面 4 BYTE 可存放数值。
|
|
|
| | | | | | | 谢谢回答,现在可以实现最基本的收发功能,但是滤波部分没有起作用,所有ID DSP都可以接收。滤波配置如下:
C1FLTCON0Lbits.F0BP = 1 ; // message stored in FIFO1
C1FLTOBJ0L = 0x1000; // EID = 0x00002
C1FLTOBJ0H = 0x4000; // Match messages with extended identifier address
C1MASK0L = 0xF7FF; // MEID = 0x1FFFE - Last bit is 0
C1MASK0H = 0xFFFF; // Match message types
C1VECLbits.FILHIT = 0;
C1FLTCON0Lbits.FLTEN0 = 1; // Enable the filter 0
理论上应该只能通过ID= 0x00002 和ID= 0x00003的报文,请问能否看出问题出在哪里?
另外,接收报文必须使用滤波器么?上位机给DSP发什么,接收什么不就可以了。
|
|
|