相关代码及注释:
/*配置分频系数、模块使能*/
mpc107_i2c_start();
/*设置控制器为发送模式*/
sysEUMBBARWrite(MPC107_I2CCR,MPC107_CCR_MEN
| MPC107_CCR_MSTA | MPC107_CCR_MTX );
/*送器件地址,置写标志*/
sysEUMBBARWrite(MPC107_I2CDR, 0xa0);
/*等待传输结束*/
i2c_wait();
/*送数据地址*/
sysEUMBBARWrite(MPC107_I2CDR, 0x0);
/*等待传输结束*/
i2c_wait();
/*再次发送start位*/
sysEUMBBARWrite(MPC107_I2CCR, MPC107_CCR_MEN
|MPC107_CCR_MSTA|MPC107_CCR_MTX|MPC107_CCR_RSTA);
/*送器件地址,置读标志*/
sysEUMBBARWrite(MPC107_I2CDR, 0xa1);
/*等待传输结束*/
i2c_wait();
/*发送应答位*/
sysEUMBBARWrite(MPC107_I2CCR,MPC107_CCR_MEN
|MPC107_CCR_MSTA | MPC107_CCR_TXAK);
/*做一次假读操作*/
sysEUMBBARRead(MPC107_I2CDR);
/*发送应答*/
sysEUMBBARWrite(MPC107_I2CCR,MPC107_CCR_MEN |
MPC107_CCR_TXAK);
/*读数据*/
data = sysEUMBBARRead(MPC107_I2CDR);
/*配置MCCR寄存器*/
sys107RegWrite(MCCR_ADD,T_DATA);
其它寄存器按此顺序配置。
[!--empirenews.page--] 利用SPD实现嵌入式系统中内存的自动识别和配置
相关代码及注释:
/*配置分频系数、模块使能*/
mpc107_i2c_start();
/*设置控制器为发送模式*/
sysEUMBBARWrite(MPC107_I2CCR,MPC107_CCR_MEN
| MPC107_CCR_MSTA | MPC107_CCR_MTX );
/*送器件地址,置写标志*/
sysEUMBBARWrite(MPC107_I2CDR, 0xa0);
/*等待传输结束*/
i2c_wait();
/*送数据地址*/
sysEUMBBARWrite(MPC107_I2CDR, 0x0);
/*等待传输结束*/
i2c_wait();
/*再次发送start位*/
sysEUMBBARWrite(MPC107_I2CCR, MPC107_CCR_MEN
|MPC107_CCR_MSTA|MPC107_CCR_MTX|MPC107_CCR_RSTA);
/*送器件地址,置读标志*/
sysEUMBBARWrite(MPC107_I2CDR, 0xa1);
/*等待传输结束*/
i2c_wait();
/*发送应答位*/
sysEUMBBARWrite(MPC107_I2CCR,MPC107_CCR_MEN
|MPC107_CCR_MSTA | MPC107_CCR_TXAK);
/*做一次假读操作*/
sysEUMBBARRead(MPC107_I2CDR);
/*发送应答*/
sysEUMBBARWrite(MPC107_I2CCR,MPC107_CCR_MEN |
MPC107_CCR_TXAK);
/*读数据*/
data = sysEUMBBARRead(MPC107_I2CDR);
/*配置MCCR寄存器*/
sys107RegWrite(MCCR_ADD,T_DATA);
其它寄存器按此顺序配置。
[!--empirenews.page--] 如果这篇内容对您有帮助,欢迎点赞支持!