關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > ARM9微控制器如何實(shí)現(xiàn)上層控制算法解析方案

ARM9微控制器如何實(shí)現(xiàn)上層控制算法解析方案

作者: 時(shí)間:2012-03-15 來(lái)源:網(wǎng)絡(luò) 收藏

引言

本文引用地址:http://butianyuan.cn/article/202368.htm

在很多嵌入式控制系統(tǒng)中,系統(tǒng)既要完成大量的信息采集和復(fù)雜的算法,又要實(shí)現(xiàn)精確的控制功能。采用運(yùn)行有嵌入式Linux操作系統(tǒng)的完成信號(hào)采集及實(shí)現(xiàn)上層,并向DSP芯片發(fā)送上層算法得到控制參數(shù),DSP芯片根據(jù)獲得的參數(shù)和下層實(shí)現(xiàn)精確、可靠的閉環(huán)控制。

1 多機(jī)系統(tǒng)組成

該多機(jī)控制系統(tǒng)以s3c2440為核心,采用I2C總線掛載多個(gè)DSP芯片TMS320F28015作為協(xié)控制器,構(gòu)成整個(gè)控制系統(tǒng)的核心。

1.1 S3C2440及TMS320F28015簡(jiǎn)介

Samsung公司的處理器S3C2440是內(nèi)部集成了ARM公司20T處理器內(nèi)核的32位,資源豐富,帶獨(dú)立的16 KB的指令Cache和16 KB數(shù)據(jù)Cache,最高主頻可達(dá)400 MHz.它擁有130個(gè)通用I/O、24個(gè)外部中斷源以及豐富的外部接口能實(shí)現(xiàn)各種功能,包括支持多主功能的I2C總線接口、3路URAT、2路SPI、攝像頭接口等。

TMS320F28015(以下簡(jiǎn)稱F28015)是TI公司的32位處理器,它具有強(qiáng)大的控制和信號(hào)處理能力,能夠?qū)崿F(xiàn)復(fù)雜的。片上整合了Flash存儲(chǔ)器、I2C總線模塊、快速的A/D轉(zhuǎn)換器、增強(qiáng)的CAN總線模塊、事件管理器、正交編碼電路接口及多通道緩沖串口等外設(shè),此種整合能夠方便地實(shí)現(xiàn)功能的擴(kuò)展。同時(shí),快速的中斷響應(yīng)使它能夠保護(hù)關(guān)鍵的寄存器并快速(更小的中斷延時(shí))地響應(yīng)外部異步事件。

1.2 I2C總線接口

I2C總線是一種用于IC器件之間連接的串行總線,采用SDA(數(shù)據(jù)線)和SCL(時(shí)鐘線)兩線連接每個(gè)帶有I2C總線接口的器件或模塊。串行的8位雙向數(shù)據(jù)傳輸率在標(biāo)準(zhǔn)模式下可達(dá)100 kb/s,快速模式下可達(dá)400 kb/s.多個(gè)微控制器可以通過(guò)I2C總線接口非常方便地連接在一起構(gòu)成系統(tǒng),并根據(jù)地址識(shí)別每個(gè)器件。這種總線結(jié)構(gòu)的連線和連接引腳少,器件間總線簡(jiǎn)單,結(jié)構(gòu)緊湊。因此其構(gòu)成系統(tǒng)的成本較低,并且在總線上增加器件不會(huì)影響系統(tǒng)的正常工作,所有的I2C總線器件共用一套總線,因此其系統(tǒng)修改和可擴(kuò)展性好。

總線必須由主機(jī)(通常為微控制器)控制,主機(jī)產(chǎn)生串行時(shí)鐘( SCL) 控制總線的數(shù)據(jù)傳輸,并產(chǎn)生起始和停止條件。SDA 線上的數(shù)據(jù)狀態(tài)僅在SCL為低電平的期間才能改變,SCL為高電平的期間,SDA 狀態(tài)的改變被用來(lái)表示起始和停止條件。I2C總線起始和停止時(shí)序如圖1所示。

基于Linux操作系統(tǒng)的ARM/DSP多機(jī)I2C通信設(shè)計(jì)方案


圖1 I2C總線起始和停止時(shí)序

1.3 硬件電路

S3C2440和F28015自身均集成了I2C總線模塊,支持多主設(shè)備I2C總線串行接口,可以方便地掛接到I2C總線上。因此,兩者之間的I2C總線接口電路的設(shè)計(jì)變得十分簡(jiǎn)單,只要將兩者的對(duì)應(yīng)引腳I2C_CLK(對(duì)應(yīng)I2C總線中的SCL線)和I2C_SDA(對(duì)應(yīng)I2C總線中的DATA線)連接起來(lái)即可。S3C2440和TMS320F28015的硬件接口電路如圖2所示。

基于Linux操作系統(tǒng)的ARM/DSP多機(jī)I2C通信設(shè)計(jì)方案

圖2 S3C2440和TMS320F28015的硬件接口

電路S3C2440的PA55和PA56引腳分別對(duì)應(yīng)I2C_SDA和I2C_CLK,而F28015的GPIO32和GPIO33也可以分別復(fù)用為I2C_SDA和I2C_CLK.考慮到阻抗不匹配等因素會(huì)影響總線數(shù)據(jù)傳輸效果,因此在將兩塊芯片的I2C_DATA和I2C_CLK引腳直連時(shí),在直連線路上各串聯(lián)一個(gè)小電阻。

  I2C_SDA和I2C_CLK是雙向電路,必須都通過(guò)一個(gè)電流源或上拉電阻連接到正電源電壓上。由于S3C2440和F28015的輸出高電平均為3.3 V,所以在硬件設(shè)計(jì)時(shí)將I2C_SDA和I2C_CLK總線通過(guò)上拉電阻連接到了3.3 V的VCC電源上。

2 ARM和DSP通信軟件設(shè)計(jì)

運(yùn)行Linux操作系統(tǒng)的ARM微控制器作為主控制器,在數(shù)據(jù)管理及多任務(wù)調(diào)度等方面有顯著優(yōu)勢(shì),可以很好地組織外圍器件采集的數(shù)據(jù);主要實(shí)現(xiàn)對(duì)系統(tǒng)的整體控制,并通過(guò)總線設(shè)備驅(qū)動(dòng)程序控制I2C總線模塊,通過(guò)主機(jī)尋址實(shí)現(xiàn)向I2C總線上掛載的下層DSP的數(shù)據(jù)收發(fā)。為保證數(shù)據(jù)通信的實(shí)時(shí)性,F(xiàn)28015通過(guò)中斷響應(yīng)的方式實(shí)現(xiàn)數(shù)據(jù)接收和發(fā)送。

通過(guò)配置F28015的I2C模塊寄存器,設(shè)置I2C模塊為從工作方式,同時(shí)利用I2C總線中斷響應(yīng)程序?qū)崿F(xiàn)對(duì)總線上數(shù)據(jù)的接收和發(fā)送,進(jìn)而完成數(shù)據(jù)通信。F28015產(chǎn)生了I2C總線中斷后,就執(zhí)行中斷服務(wù)程序,圖7為I2C總線中斷服務(wù)程序流程。

中斷服務(wù)程序通過(guò)查詢狀態(tài)寄存器(I2CSTR)標(biāo)志位,得出中斷類型碼,然后調(diào)用相應(yīng)的子程序,完成數(shù)據(jù)接收發(fā)送。代碼如下:

interrupt void i2c_int1a_isr(void) {//I2CA的中斷響應(yīng)函數(shù)

Uint16 IntSource;// 讀取中斷碼

IntSource=I2caRegs.I2CISRC.bit.INTCODE 0x7;//I2CA中斷源,讀后3位

switch(IntSource){//依中斷源而確定相關(guān)接收和發(fā)送策略

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,接收數(shù)據(jù)已準(zhǔn)備好

DataReceive();//調(diào)用數(shù)據(jù)接收子函數(shù)接收數(shù)據(jù)

break;

case I2C_TX_ISRC://=5,發(fā)送數(shù)據(jù)已準(zhǔn)備好

DataTransmit();//調(diào)用數(shù)據(jù)發(fā)送子函數(shù)接收數(shù)據(jù)

break;

default:

asm(“ESTOP0”); //無(wú)效數(shù)據(jù),則停止

}

PieCtrlRegs.PIEACK.all=PIEACK_GROUP8;

}

F28015中的數(shù)據(jù)接收子程序和數(shù)據(jù)發(fā)送子程序是在I2C總線的中斷服務(wù)程序中根據(jù)不同的狀態(tài)碼進(jìn)行調(diào)用,它們是整個(gè)通信程序的核心部分。數(shù)據(jù)接收子程序和數(shù)據(jù)發(fā)送子程序的流程如圖8所示。

基于Linux操作系統(tǒng)的ARM/DSP多機(jī)I2C通信設(shè)計(jì)方案

圖8 數(shù)據(jù)接收和發(fā)送子程序

3 測(cè)試結(jié)果

通過(guò)NFS文件系統(tǒng)將編譯成模塊的I2C的總線驅(qū)動(dòng)和設(shè)備驅(qū)動(dòng)加載到運(yùn)行Linux操作系統(tǒng)的S3C2440平臺(tái)上(先加載總線驅(qū)動(dòng)),再將F28015的測(cè)試程序燒寫到RAM中。運(yùn)行F28015等待I2C總線上的數(shù)據(jù),再執(zhí)行Linux系統(tǒng)中的I2C總線測(cè)試程序。測(cè)試結(jié)果顯示,芯片通過(guò)I2C總線接口完成了數(shù)據(jù)通信,具有良好的實(shí)時(shí)性和可靠性。

4 結(jié)論

該設(shè)計(jì)利用I2C總線實(shí)現(xiàn)了ARM9微控制器與DSP芯片間實(shí)時(shí)可靠的數(shù)據(jù)通信。ARM9微控制器結(jié)合Linux操作系統(tǒng)作為上層控制核心,DSP芯片實(shí)現(xiàn)下層控制算法,可充分發(fā)揮ARM9微控制器在數(shù)據(jù)采集和任務(wù)管理等方面的優(yōu)勢(shì)以及DSP芯片在算法實(shí)現(xiàn)和底層控制的長(zhǎng)處。



關(guān)鍵詞: ARM9 微控制器 控制算法 方案

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉