ARM9微控制器如何实现上层控制算法解析方案
来源:元器件交易网 作者:—— 时间:2012-02-24 11:27
通过配置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 测试结果
通过NFS文件系统将编译成模块的I2C的总线驱动和设备驱动加载到运行Linux操作系统的S3C2440平台上(先加载总线驱动),再将F28015的测试程序烧写到RAM中。运行F28015等待I2C总线上的数据,再执行Linux系统中的I2C总线测试程序。测试结果显示,芯片通过I2C总线接口完成了数据通信,具有良好的实时性和可靠性。
4 结论
该设计利用I2C总线实现了ARM9微控制器与DSP芯片间实时可靠的数据通信。ARM9微控制器结合Linux操作系统作为上层控制核心,DSP芯片实现下层控制算法,可充分发挥ARM9微控制器在数据采集和任务管理等方面的优势以及DSP芯片在算法实现和底层控制的长处。
- •瑞萨电子广受欢迎的RA0系列推出新产品, 卓越的功耗、更宽的温度范围2025-04-22
- •东芝推出带有嵌入式微控制器的SmartMCD系列栅极驱动IC2024-03-28
- •东芝推出“TXZ+族高级系列” ARM Cortex-M3微控制器2023-06-27
- •瑞萨电子发布首颗22纳米微控制器样片2023-04-11
- •PC 及其他电子消费品对微控制器需求 Q4 预计大幅下滑,但汽车需求稳定2022-11-09
- •国民技术与华夏芯公司就高性能微控制器项目开展研发合作2021-06-02
- •意法半导体推出具有更高性能和先进网络安全功能的STM32U5超低功耗微控制器2021-03-12
- •微控制器厂盛群IC类产品,全面调高15%价格2021-02-02
- •英飞凌推出安全微控制器,构筑全面的物联网生命周期管理解决方案2020-10-20
- •Maxim发布微控制器,提供业界最低功耗、尺寸的同时提高系统可靠性2020-06-28