DSP精选I精选C接口应用.doc

上传人:scccc 文档编号:11294063 上传时间:2021-07-21 格式:DOC 页数:2 大小:47.50KB
返回 下载 相关 举报
DSP精选I精选C接口应用.doc_第1页
第1页 / 共2页
DSP精选I精选C接口应用.doc_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《DSP精选I精选C接口应用.doc》由会员分享,可在线阅读,更多相关《DSP精选I精选C接口应用.doc(2页珍藏版)》请在三一文库上搜索。

1、DSPI2C应用说明1. 示例程序中几种状态第一次看 i2c_eeprom 示例程序,对程序中的MsgStatus 信息状态切换非常懵懂,为什么要有这几个状态?状态切换顺序如何安排?一大堆的状态,让人有些摸不着头脑。 先把程序中的头文件涉及的 7 种状态分析一下。程序说明及流程图详细的注释可以参见程序附录, ,这里主要解释一下设备地址取0x50的缘由。从AT24C1024的数据手册可知,设备地址为。而在程序中设置的地址是 0x50,即0B01010000。看似不妥, 其实,这个例子中设备地址采用 7位地址模式,这样只取 0x50的低 7位作为设备地址的高七位, 设备地址的最低位 R/W则由寄存

2、器 I2CMDR中的TRX位决定。这样读数据时设备地址为 0B,写数据时设备地址改为 0B。通过示波器可以验证这些数据。问题 1:每次检测到SCD中断时,也就是顺利发完指定数量的数据或者接收指定数量的数据了,理论上=0,但是本人设了几个中断点去观察该寄存器的值,发现总是不为零。通过观察和,可以发现这两个寄存器为零时,也不为零。由此可知, I2CCNT不能实时反映发送/ 接收存储器中数据的数量,不过可以用 TXFFST/RXFFST来代替。图 1 主程序流程图 , 图 2 为写数据程序流程图,图 3 为读数据程序流程图,图 4 为中断函数流程图。图 1 主程序流程图图 2 写数据程序流程图图 3

3、 读数据程序流程图图 4 中断函数流程图4. 程序附录voidI2CA_Init(void);Uint16I2CA_WriteData(structI2CMSG*msg);Uint16I2CA_ReadData(structI2CMSG*msg);interruptvoidi2c_int1a_isr(void);voidpass(void);voidfail(void);#defineI2C_SLAVE_ADDR0x50InitSysCtrl();InitPieVectTable();EALLOW; if=I2C_MSGSTAT_SEND_WITHSTOP)Write_load_num+;Er

4、ror=I2CA_WriteData(&I2cMsgOut1);/ 更新作为中断服务路径的指针CurrentMsgPtr。/ 文件中找到ICINTR1A_ISR 。if(Error=I2C_SUCCESS)if=I2C_MSGSTAT_INACTIVE)if=I2C_MSGSTAT_SEND_NOSTOP)Read_load_num1+;/EEPROM空闲了,并返回ACK确认为止。/msg 状态在中断程序中被更新了。elseif=I2C_MSGSTAT_RESTART)if=1)returnI2C_STP_NOT_READY_ERROR;if=1)returnI2C_STP_NOT_READY_ERROR;=msg-SlaveAddress;if(msg-MsgStatus=I2C_MSGSTAT_SEND_NOSTOP)if(CurrentMsgPtr-MsgStatus=I2C_MSGSTAT_SEND_NOSTOP_BUSY)elseif(CurrentMsgPtr-MsgStatus=I2C_MSGSTAT_READ_BUSY)/=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1