龙芯1B linux中I2C的宏定义

/*register*/
#define REG_I2C_PRER_LO	0x0
#define REG_I2C_PRER_HI	0x1
#define REG_I2C_CTR		0x2
#define REG_I2C_TXR		0x3
#define REG_I2C_RXR		0x3
#define REG_I2C_CR		0X4
#define	REG_I2C_SR		0X4

查看用户手册

i2c-0模块寄存器物理地址基址为:0xbfe58000,地址空间16KB
  • 分频器锁存器低字节寄存器(PRERlo):位宽[7:0],偏移量:0x00,复位值:0xff
  • 分频器锁存器低字节寄存器(PRERhi):位宽[7:0],偏移量:0x01,复位值:0xff
  • 控制寄存器(CTR):位宽[7:0],偏移量:0x02,复位值:0x00
  • 发送数据寄存器(TXR):位宽[7:0],偏移量:0x03,复位值:0x00
位域位域名称位宽访问描述
7:1DATA7W存放下一个将要发送的字节
0DRW1W

当数据传送时,该位保存的是数据最低位

当地址传送时,该位指示读写状态

  • 接收数据寄存器(RXR):位宽[7:0],偏移量:0x03,复位值:0x00
位域位域名称位宽访问描述
7:0RXR8R存放最后一个接收到的字节
  • 命令控制寄存器(CR):位宽[7:0],偏移量:0x04,复位值:0x00
位域位域名称位宽访问描述
7STA1W产生START信号
6STO1W产生STOP信号
5RD1W产生读信号
4WR1W产生写信号
3ACK1W产生应答信号
2:1Reserved2W保留
0IACK1W产生中断应答信号
  • 状态寄存器(SR):位宽[7:0],偏移量:0x04,复位值:0x00
位域位域名称位宽访问描述
7RxACK1R

收到应答信号

0收到应答信号

1没收到应答信号

6Busy1R

i2c总线忙标志

0总线在闲

1总线在忙

5AL1R

i2c核失去i2c总线控制权时,该位置为1

4:2Reserved3R保留
1TIP1R

指示传输过程

0表示数据传输完毕

1表示正在数据数据

0IF1R中断标志位,一个数据传输完,或另一个器件发起数据传输,该位置为1

 

对应上方的命令控制寄存器,对控制指令的编码 
/*control*/
#define I2C_C_START		0x80
#define I2C_C_STOP		0x40
#define	I2C_C_READ		0x20
#define I2C_C_WRITE		0x10
#define I2C_C_WACK		0x8
#define I2C_C_IACK		0x1

对应上方的状态寄存器,对状态指令的编码  

/*status*/
#define	I2C_S_RNOACK	0x80
#define I2C_S_BUSY		0x40
#define I2C_S_RUN		0x2
#define	I2C_S_IF		0x1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值