微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 基于Linux操作系统的ARM/DSP多机I2C通信设计方案

基于Linux操作系统的ARM/DSP多机I2C通信设计方案

时间:02-20 来源:互联网 点击:

中断类型码,然后调用相应的子程序,完成数据接收发送。代码如下:

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 测试结果

通过NFS文件系统将编译成模块的I2C的总线驱动和设备驱动加载到运行Linux操作系统的S3C2440平台上(先加载总线驱动),再将F28015的测试程序烧写到RAM中。运行F28015等待I2C总线上的数据,再执行Linux系统中的I2C总线测试程序。测试结果显示,芯片通过I2C总线接口完成了数据通信,具有良好的实时性和可靠性。

  4 结论

该设计利用I2C总线实现了ARM9微控制器与DSP芯片间实时可靠的数据通信。ARM9微控制器结合Linux操作系统作为上层控制核心,DSP芯片实现下层控制算法,可充分发挥ARM9微控制器在数据采集和任务管理等方面的优势以及DSP芯片在算法实现和底层控制的长处。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top