新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > ARM9微控制器完成信号采集及实现上层控制算法解析方案

ARM9微控制器完成信号采集及实现上层控制算法解析方案

作者:时间:2012-06-19来源:网络收藏

电路S3C2440的PA55和PA56引脚分别对应I2C_SDA和I2C_CLK,而F28015的GPIO32和GPIO33也可以分别复用为I2C_SDA和I2C_CLK.考虑到阻抗不匹配等因素会影响总线数据传输效果,因此在将两块芯片的I2C_DATA和I2C_CLK引脚直连时,在直连线路上各串联一个小电阻。

I2C_SDA和I2C_CLK是双向电路,必须都通过一个电流源或上拉电阻连接到正电源电压上。由于S3C2440和F28015的输出高电平均为3.3 V,所以在硬件设计时将I2C_SDA和I2C_CLK总线通过上拉电阻连接到了3.3 V的VCC电源上。

2 ARM和DSP通信软件设计

运行Linux操作系统的ARM微器作为主器,在数据管理及多任务调度等方面有显着优势,可以很好地组织外围器件的数据;主要对系统的整体,并通过总线设备驱动程序控制I2C总线模块,通过主机寻址向I2C总线上挂载的下层DSP的数据收发。为保证数据通信的实时性,F28015通过中断响应的方式数据接收和发送。

通过配置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;

}



评论


相关推荐

技术专区

关闭