使用dw_mode=8 bit,每当写入奇数地址时,它都会触发一个16位写封装前一个偶数数据字节。 该表需要一些更新:无论何时写入地址0x1,它都会触发B1XX的16位写入,XX是较低半字节中的旧数据;同样,无论何时写入地址0x3,它都会触发B3XX的16位写入。
仅当写入的连续字节超出对齐的16位边界时才会生成错误。
希望它能澄清您的问题。
我们将更新TRM,以明确说明这一点。
如果当前来的是地址0x1的数据,但是并没有来0x0地址的,那么怎么封装呢,这是否意味着我需要记录所有的偶数地址的数据呢,比如我搞一个寄存器,将所有的偶数地址的数据存入这个寄存器,如果后续有奇数地址来,就在这个大的寄存器中寻找该奇数地址的前一个偶数地址的数据。这是我的第一个问题。
第二个问题就是,对于mailbox模式,dw_mode 为8bit 和16bit 两种情况,分别是怎么映射到hic 的内部寄存器的,比如h2dbuf0(0x40),您能举出我写这个寄存器所需要给的地址嘛(针对8bit和16bit的情况)
还有一个问题就是,如果是direct mode ,外部主机读,会不会有出错的可能呢,是保证外部主机一定不会读错,还是硬件这边会加以判断,如果出错和外部主机写一样,记录错误的地址
关于第一个问题,16位写入的正确方法是先写入偶数地址,然后再写入奇数地址。 例如,应首先写入B0 (这不会触发16位写入),然后写入B1 (此事件将触发B1B0的16位写入)
关于第二个问题,邮箱寄存器将作为任何其他寄存器访问,您可以参考名为"读取的数据包装和解包"的表格。 我不知道您所面临的确切问题,能否举个例子?