基于ARM和FPGA的智能小車監控系統
2.2 網絡傳輸模塊電路設計
網絡傳輸模塊選用DAVICOM公司推出的一款高速以太網接口芯片DM9000A,內部集成10/100M物理層接口,16 KB SRAM用作接收發送的F-IFO緩存,支持8/16 b內存數據存取接口。
S3C2440A內部沒有專用以太網控制器,需要外部總線外掛一個以太網控制器,才能實現S3C2440A連接以太網的需要,該系統選用DM9000A作為以太網的物理層接口。DM9000A與S3C2440A的連接比較簡單,如圖4所示。S3C2440A數據總線DATA0~DATA15與芯片的SD0~SD15連接;地址線ADDR2與芯片的CMD連接;片選線nGCS3與芯片nCS的相連;9號外中斷與芯片的INT相連。DM9000A以太網控制器的工作基址為0x300,而S3C2440A的地址線ADDR2與芯片的命令/數據使能端CMD相連,所以對其進行操作時的地址是0x300(地址端口)或0x304(數據端口)。
2.3 運動控制電路設計
速度采集模塊由紅外傳感器和脈沖整形電路組成,經整形后的脈沖送往ARM中斷進行脈沖捕獲。運動控制模塊選用型號為RS-380SH的直流電機控制車模的前進或后退,選用型號為FUTABA-S3010的舵機控制車模的轉向,電機驅動芯片選用L298N實現對電機調速、正反轉的控制。
該系統運動控制包括電機控制和舵機控制兩部分。電機控制如圖5所示,PWM1,PWM2用于控制電機的轉速,IN11,IN12,IN21,IN22用于控制電機正反轉。舵機控制電路簡單,外接有3根線,紅色為電源線,黑色為地線,另外一個為PWM信號輸入線。兩者的主要控制信號是PWM信號,S3C2440A發送命令控制FPGA輸出占空比可調的PWM信號。舵機PWM信號的周期固定為20 ms,脈寬分布在1~2 ms之間,因此選定PWM信號頻率為50 Hz,占空比固定在5%~10%之間。直流電機PWM信號頻率選定10 kHz,占空比可在0%~100%波動,當IN11=1,IN12=0,電機正轉且轉速隨PWM1信號的占空比不同而變化,當IN11=0,IN12=1,電機反轉且轉速也隨著PWM1信號占空比變化。
3 系統軟件設計
3.1 圖像采集驅動開發
該系統圖像采集模塊硬件電路由CMOS圖像傳感器芯片和S3C2440A的CAMIF單元組成。為此在編寫圖像采集驅動程序時,就需要對圖像傳感器芯片的寄存器和S3C2440A的CAMIF單元的寄存器同時配置,否則就得不到正常圖像。S3C2440A以I2C總線的方式對CMOS圖像傳感器芯片的寄存器進行配置。
在WinCE下,圖像采集驅動是基于流接口設計的。首先在CIS_Init函數下對相機接口的寄存器進行配置,主要配置功能包括:設置相機接口輸出時鐘;設置圖像輸入輸出格式;設置裁剪圖像偏移量;設置幀緩沖區中圖像像素大小;設置編碼通道和預覽通道幀緩沖區起始地址。然后S3C2440A以I2C總線方式對OV9650的寄存器進行配置,需要注意的是相機接口的配置功能要和OV9650的配置功能完全一致,否則采集不到圖像,兩者之間通信協議如圖6所示。最后利用API函數CreateThread()創建中斷服務線程。
中斷服務線程函數負責具體的中斷操作,在該線程函數內利用CreateEent()函數創建CAMIF單元的中斷事件。然后調用InterruptInitia-lize()函數將該中斷事件與CAMIF單元的邏輯中斷相關聯。最后調用Wait For SingleObject()等待中斷事件的到來,當中斷到來時,將讀取事件置位,在應用程序中即可利用ReadFile()函數讀取YCbCr數據,為圖像壓縮提供數據源。
評論