I2C-Master Core Specification中Transmit register与Receive register应该如何理解?
时间:10-02
整理:3721RD
点击:
I2C-Master Core Specification中Transmit register与Receive register应该如何理解?
opencore的I2C-Master Core Specification中
Transmit register与Receive register应该如何理解?
Transmit register是不是用来保存从器件地址吧?
看文档中写着7:1定义是Next byte to transmit via I2C
第0位的定义则是:
In case of a data transfer this bit represent the data’s LSB.
In case of a slave address transfer this bit represents the RW bit.
‘1’ = reading from slave
‘0’ = writing to slave
给我的感觉是不是这个传输寄存器只记录从器件地址,最末位用来设置读写控制的吧?
后面的操作状态机 第一步会先读这个传输寄存器 然后再进行读写移位寄存器里面的数据吧?
那个Receive register就有点看不明白了
看定义是Last byte received via I2C
看代码也一下没看明白
谁解释一下吧
opencore的I2C-Master Core Specification中
Transmit register与Receive register应该如何理解?
Transmit register是不是用来保存从器件地址吧?
看文档中写着7:1定义是Next byte to transmit via I2C
第0位的定义则是:
In case of a data transfer this bit represent the data’s LSB.
In case of a slave address transfer this bit represents the RW bit.
‘1’ = reading from slave
‘0’ = writing to slave
给我的感觉是不是这个传输寄存器只记录从器件地址,最末位用来设置读写控制的吧?
后面的操作状态机 第一步会先读这个传输寄存器 然后再进行读写移位寄存器里面的数据吧?
那个Receive register就有点看不明白了
看定义是Last byte received via I2C
看代码也一下没看明白
谁解释一下吧
在这个模块中wb_adr_i是不是只是作为寄存器地址来使用的了 见代码中: case (wb_adr_i) // synopsis parallel_case 3'b000 : prer [ 7:0] <= #1 wb_dat_i; 3'b001 : prer [15:8] <= #1 wb_dat_i; 3'b010 : ctr <= #1 wb_dat_i; 3'b011 : txr <= #1 wb_dat_i; default: ; endcase 按照这意思就是使用到的寄存器 通过这个wb_adr_i来选择外部控制器发地址3'b000 就是告诉I2C-Master Core 我要给你发Clock Prescale register的参数了
在设计模块进行状态的控制中是否应该按照下面的逻辑来实现
写信号:<Start><Write Slave Address+Write Bit><Ack><Register Index><Ack><Data><Ack> …… <Stop>
读信号:<Start><Write Slave Address+Write Bit><Ack><Register Index><Ack><Start><Write Slave Address+Read Bit><Data><Ack> …… <Stop>
verilog 中怎么实现Schmitt Trigger和Spike Suppression
请问,你已经实现了i2c吗?快速和高速模式下的Schmitt Trigger和Spike Suppression 怎么理解?代码中可以实现么?谢谢!
