全球旧事资料 分类
作在从模式,这样EEPROM部分的电路就可以舍弃。软件驱动CMOS图像传感器需要嵌入式系统的软件驱动才能正常工作,并输出正确的图像数据。由于处理端的嵌入式系统采用的是嵌入式Li
ux操作系统,接口的驱动程序已经集成在I2C操作系统内部,中断资源可以作为资源来申请,操作系统还提供了调用其它资源的接口函数,这极大地方便了驱动程序的编写。在本次设计中采用了Li
ux系统下模块形式的字符设备驱动程序的编写方法。整个软件驱动需要完成两个功能模块:接口的初始化模块和接收输出的数据。初始化
f1CSI模块的初始化。根据ICM105C芯片的数据手册,CSI的重置信号需要保持有效直至输入电压保持恒定大于两个时钟周期,图4是时序图。
图4软重置信号时序图由于主处理板是一上电就开始工作,而ICM105C的驱动程序必须在处理板上的操作系统启动后才开始工作。尤其是时钟信号只有在驱动加载后才开始提供给ICM105C,要造成重置信号的时序效果,必须使用一个软件控制的重置信号,在时钟输出到传感器后至少两个时钟周期保持有效,然后拉高电平使之无效。在设计中,采用了摩托罗拉MC9328MX1处理器一个GPIO端口来实现软重置信号。2设置时钟,初始化I2C接口。ICM105C需要24MHz的时钟,摩托罗拉的MC9328MX1处理板的外频是96MHz,因此需要四分之一的主频。只需要设置相应的时钟产生模块寄存器的值即可保证输出24MHz。I2C总线的两个信号线SDA,SCL需要设置相应GPIO的两个引脚,使其用来进行I2C传输。还需要挂载Li
ux操作系统的I2C驱动,编写I2C读和写的功能函数。需要注意的是ICM105C的I2C地址值为21H。3初始化CMOS传感器。ICM105C内部控制和状态寄存器通过I2C总线来初始化CMOS,初始化序列寄存器的地址、值序列由ICMedia公司提供,初始化完成后,就可以接收到数据和时序信号了。接收数据接收数据是驱动程序中最重要的一个部分,它需要协调好中断和DMA传输,保证数据的正确接收,并且在出错时能够正确地恢复。这一部分的软件流程如图5所示。
f图5
接收数据软件流程图其中在开始阶段申请中断和DMA资源并申请内存空间存放接收的数据。中断的主要任
务是在每一帧开始时,开始DMA传输。DMA传输主要将从FIFO中读出数据保存在内存中,并处理可能出现的错误。本例中一旦出现DMA传输错误就丢弃该帧。数据处理下面就是数据的处理模块。由于接收到的数据还是原始数据,需要处理才能形成最终的图像数据。具体的处理过程如下:1线性插值。由于制作工艺的问题r
好听全球资料 返回顶部