ti工程师:
您好!
28377的datashhet上面说CANaRegs的寻址范围是0x00048000到0x000487ff,而datasheet上面给出的详细的CANREGS的寻址范围是0x00048000到0x00048160。分别如图所示
从dsp惯用的按照字来编址方式来看,上表可以看出CAN_CTL寄存器应该是0x4*16位的,CAN_REL寄存器应该是0x10*16位的,但再看这两个寄存器的详细配置,这两个寄存器均是32位的。
我的问题是:1,CAN_REGS的空间只用了0x160个,那其余还有那么多空间是干嘛的呢?datasheet上面也没详细给出来?
2,CAN模块寄存器的编址方式应该也是按照16位的方式来编址的吧?如果是那么表2对应的各个寄存器的偏移地址与各个寄存器的具体大小貌似是对应不上的,这个现象怎么解释呢?
非常感谢
shook xu:
怎么没人回答啊,顶一下,盼ti工程师回复,谢谢!
ti工程师:
您好!
28377的datashhet上面说CANaRegs的寻址范围是0x00048000到0x000487ff,而datasheet上面给出的详细的CANREGS的寻址范围是0x00048000到0x00048160。分别如图所示
从dsp惯用的按照字来编址方式来看,上表可以看出CAN_CTL寄存器应该是0x4*16位的,CAN_REL寄存器应该是0x10*16位的,但再看这两个寄存器的详细配置,这两个寄存器均是32位的。
我的问题是:1,CAN_REGS的空间只用了0x160个,那其余还有那么多空间是干嘛的呢?datasheet上面也没详细给出来?
2,CAN模块寄存器的编址方式应该也是按照16位的方式来编址的吧?如果是那么表2对应的各个寄存器的偏移地址与各个寄存器的具体大小貌似是对应不上的,这个现象怎么解释呢?
非常感谢
shook xu:
回复 shook xu:
急切盼望得到ti工程师的回答啊,非常急切
ti工程师:
您好!
28377的datashhet上面说CANaRegs的寻址范围是0x00048000到0x000487ff,而datasheet上面给出的详细的CANREGS的寻址范围是0x00048000到0x00048160。分别如图所示
从dsp惯用的按照字来编址方式来看,上表可以看出CAN_CTL寄存器应该是0x4*16位的,CAN_REL寄存器应该是0x10*16位的,但再看这两个寄存器的详细配置,这两个寄存器均是32位的。
我的问题是:1,CAN_REGS的空间只用了0x160个,那其余还有那么多空间是干嘛的呢?datasheet上面也没详细给出来?
2,CAN模块寄存器的编址方式应该也是按照16位的方式来编址的吧?如果是那么表2对应的各个寄存器的偏移地址与各个寄存器的具体大小貌似是对应不上的,这个现象怎么解释呢?
非常感谢
Johnson Chen1:
回复 shook xu:
其实在CAN 的例程中有说明,例如CAN.c文件中有如下说明:
The CAN bus bridge uses a different addressing scheme in order to// allow byte accesses. Because of this, 32-bit reads/writes can execute// abnormally at higher optimization levels. The CAN driver functions// have been adjusted to explicitly use two 16-bit read/writes to access// the full 32-bit register where HWREGH(base + offset) represents the// lower 16-bits and HWREGH(base + offset + 2) represents the upper// 16-bits.
因此应该是用8位来编址的。