首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ARM/DSP多机I2C通信方案(3)

ARM/DSP多机I2C通信方案(3)

2.2 DSP数据接收中断程序设计
       
          图7 I2C总线中断服务程序流程
          通过配置F28015的I2C模块寄存器,设置I2C模块为从工作方式,同时利用I2C总线中断响应程序实现对总线上数据的接收和发送,进而完成数据通信。F28015产生了I2C总线中断后,就执行中断服务程序,图7为I2C总线中断服务程序流程。
          中断服务程序通过查询状态寄存器(I2CSTR)标志位,得出中断类型码,然后调用相应的子程序,完成数据接收发送。代码如下:
          interrupt void i2c_int1a_isr(void) {//I2CA的中断响应函数
          Uint16 IntSource;// 读取中断码
          IntSource=I2caRegs.I2CISRC.bit.INTCODE & 0x7;//I2CA中断源,读后3位
          switch(IntSource){//依中断源而确定相关接收和发送策略
          case I2C_NO_ISRC://=0
          case I2C_ARB_ISRC://=1
          case I2C_NACK_ISRC: //=2
          case I2C_ARDY_ISRC: //=3
          case I2C_SCD_ISRC://=6
          case I2C_AAS_ISRC://=7
          break;
          case I2C_RX_ISRC://=4,接收数据已准备好
          DataReceive();//调用数据接收子函数接收数据
          break;
          case I2C_TX_ISRC://=5,发送数据已准备好
          DataTransmit();//调用数据发送子函数接收数据
          break;
          default:
          asm("ESTOP0"); //无效数据,则停止
          }
          PieCtrlRegs.PIEACK.all=PIEACK_GROUP8;
          }
          F28015中的数据接收子程序和数据发送子程序是在I2C总线的中断服务程序中根据不同的状态码进行调用,它们是整个通信程序的核心部分。数据接收子程序和数据发送子程序的流程如图8所示。

       
          图8 数据接收和发送子程序
          3 测试结果
          测试结果显示,芯片通过I2C总线接口完成了数据通信,具有良好的实时性和可靠性。
继承事业,薪火相传
返回列表