我想将数据写入指定的存储器、指定的存储器将使用 MEMORY_ADDRESS 和 MEMORY_DATA 寄存器。 MEMORY_ADDRESS 是一个8位字寄存器、用于向存储器写入地址、MEMORY_ADDRESS 寄存器的前6个 MSB 定义了要访问的序列字(有64个序列、如下图5-24的 MSB 地址列所示)、 最后2个 LSB 决定要访问哪个字(如下面的图5-24所示、MSG-M、MSG_L、Delay、Next Address)。 要写入由 MEMORY_ADDRESS 寄存器寻址的存储器中的数据由 memory_data 寄存器提供。 每次写入/读取 MEMORY_DATA 寄存器时、MEMORY_ADDRESS 的值都会增加。
现在、我要向一个指定的序列写入四个数据。 从下面的图5-24可以看出、这四个数据存储器地址(MEMORY_ADDRESS)是相邻的、TPS65930支持 IIC 突发写入访问。 因此、我可以在写入器件地址和寄存器地址后一次输入全部四个数据、而不是每次在写入数据之前写入器件地址和寄存器地址。 例如、如果我要将四个数据21、E、32和2E 写入到序列地址为2B (101011)的序列、首先我要将它们写入 MEMORY_Write MEMORY ADDRESS 寄存器的 MEMORY ADDRESS 10101100、 然后我开始在数据寄存器中写入 MEMORY_WRITE 数据21、E、32、2E、
这是我读取数据的顺序:
因为每次我写入/读取 MEMORY_DATA 时、MEMORY_ADDRESS 寄存器的值都会自动增加。 因此、在写入四个 MEMORY_DATA 寄存器数据后、MEMORY_ADDRESS 的值会自动增大、因此 MEMORY_ADDRESS 寄存器的值首先写入10101100、然后开始从 DATA 寄存器读取数据。
以上是我写入和读取 MEMORY_DATA 寄存器顺序的方式。 但当我写完这些数据后、当我读出来的时候、我发现我读出的数据与我写的数据不一致。 我读取的数据是0、0、0、3F、这是对应于这些存储器地址的默认值。 或者、我可以假定我没有成功写入、或者从其他存储器位置读取数据。
您能帮助我确认 我写入或读取的 memory_data 寄存器的逻辑 是正确还是错误吗? 如果正确、是什么导致我向 MEMORY_DATA 寄存器写入与读取的内容不一致的内容?