阅读以下关于某嵌入式处理器和存储器方面的说明,回答问题1至问题3,将答案填入答题纸的对应栏内。 【说明】 在某嵌入式系统设计中,需要使用嵌入式主处理器对外围模拟视频信号进行采集、编码、存储和网络传输。图2-1为李工设计的该嵌入式系统的原理框图:采用

admin2015-05-21  39

问题     阅读以下关于某嵌入式处理器和存储器方面的说明,回答问题1至问题3,将答案填入答题纸的对应栏内。
【说明】
    在某嵌入式系统设计中,需要使用嵌入式主处理器对外围模拟视频信号进行采集、编码、存储和网络传输。图2-1为李工设计的该嵌入式系统的原理框图:采用两片TVP5 146芯片进行两路模拟视频数据采集,在该处理器外围采用MAX3232芯片进行串口扩展,以方便系统调试,同时在该原理图中还设计了相应的Flash存储器接口,DDR存储器,网络及电源等电路。
在该电路设计中,视频采集芯片TVP5 146需要主处理器通过I2C接口进行采集模式、亮度、对比度、增益等参数的调节,但是主处理器只有一个I2C接口,因此需要将两个TVP5146挂载的同一个I2C总线上,如图2-2所示。TVP5146的I2C芯片地址选择如表2.1所示,当进行I2C读时,I2C地址的最低位是1,当进行写操作时,I2C地址最低位是0,A0由外围电路的高低电平决定,高电平为1,低电平为0。

(答案用十六进制表示,比如0xAA)
    在李工对TVP5 146进行配置时,需要编写I2C的读写函数,在进行I2C的读写操作时,需要对I2C的控制寄存器、数据寄存器以及状态寄存器进行配置和查询。具体的写操作流程为:先配置控制寄存器为写模式,再检查状态寄存器,如果准备就绪,则向数据寄存器写数据,写完之后进行状态寄存器查询状态,根据状态退出写操作。具体的读操作流程为:先配置控制寄存器为读模式,再检查状态寄存器,如果准备就绪,则从数据寄存器中读出,然后退出。李工所选用的处理器对应的I2C控制寄存器、数据寄存器、状态寄存器各自的定义如表2.2、表2.3和表2.4所示。

李工所编写的I2C读写函数如下所示:
#define 12C—CON*(volatile unsigned int*)(0x48028080+0x20)
    //控制寄存器定义
#define 12C—STAT*(volatile unsigned int*)(0x48028080+0x24)
        //状态寄存器定义
#define 12C—DATA*(volatile unsigned int*)(0x48028080+0x28)
    //数据寄存器定义
int 12C_RRAD(unsigned char*pdata)
{
    int delaycnt=0;   
12C CON=OxC003;  //配置为主模式、读模式、使能I2C,并开启I2C
    for(delay_cnt=0;delay_cnt<1000;delay_cnt++)
    {
    if(I2C—STAT&0x8 0)
    {
    (1)  //从I2c—DATA寄存器读数据放置在pdata指针里面,并退出
    return 0;
    }
    }
    return一1;
    }
    int  I2C—WRITE(unsigned char wdata)
    {
    int delaycnt=0;
    12c CON=  (2);    //配置为主模式、写模式、使能并开启I2C
    (3)    :    //向I2c DATA寄存器写wdata
    for  (  delay_cnt=0;  delay—cnt<  1000;  delay_cnt++  )
    {
    if(    (4)    )//判断是否写完成,如果完成,则正确退出
    {
    return 0;
    }
    }
    lreturn一1;
    }
    请将空(1)~(4)处空缺的代码补充完整。

选项

答案 (1)*pdata=12C—DATA (2)0x8003 (3)I2C_DATA=wdata (4)I2C_STAT&0x80

解析 本问题考查I2C设备的读写操作过程,要求考生能够正确的根据给出的寄存器,以及对应的逻辑要求,补全相关代码。
    对I2C的操作过程实际上就是对外部设备的操作过程。这里的I2C读写函数只是给出了原子性的读写实现方法,至于操作哪类I2C设备,即读、写哪个I2C设备的哪些地址,这需要在外部逻辑实现中考虑。
    在12C的读操作中,其逻辑过程为从I2C DATA寄存器中获取准备好的I2C数据,其核心在于等待I2C控制寄存器准备好数据,实现方法为查询对应的状态寄存器的某个比特位。同时,在读操作中,需要首先将I2C控制寄存器修改为读控制状态。
    在I2C的写操作中,逻辑过程为:先将I2C控制寄存器配置为写控制状态,将要写出的数据写到I2C DATA寄存器中,然后等待写完毕,等待的方法为查询寄存器状态,待状态表明写完毕后,此次写操作才算完成。
转载请注明原文地址:https://jikaoti.com/ti/b6I7FFFM
0

最新回复(0)