引言
在很多嵌入式控制系統中,系統既要完成大量的信息采集和復雜的算法,又要實現精確的控制功能。采用運行有嵌入式Linux操作系統的ARM9微控制器完成信號采集及實現上層控制算法,并向DSP芯片發送上層算法得到控制參數,DSP芯片根據獲得的參數和下層控制算法實現精確、可靠的閉環控制。
1 多機系統組成
該多機控制系統以ARM9微控制器s3c2440為核心,采用I2C總線掛載多個DSP芯片TMS320F28015作為協控制器,構成整個控制系統的核心。
1.1 S3C2440及TMS320F28015簡介
Samsung公司的處理器S3C2440是內部集成了ARM公司ARM920T處理器內核的32位微控制器,資源豐富,帶獨立的16 KB的指令Cache和16 KB數據Cache,最高主頻可達400 MHz.它擁有130個通用I/O、24個外部中斷源以及豐富的外部接口能實現各種功能,包括支持多主功能的I2C總線接口、3路URAT、2路SPI、攝像頭接口等。
TMS320F28015(以下簡稱F28015)是TI公司的32位處理器,它具有強大的控制和信號處理能力,能夠實現復雜的控制算法。片上整合了Flash存儲器、I2C總線模塊、快速的A/D轉換器、增強的CAN總線模塊、事件管理器、正交編碼電路接口及多通道緩沖串口等外設,此種整合能夠方便地實現功能的擴展。同時,快速的中斷響應使它能夠保護關鍵的寄存器并快速(更小的中斷延時)地響應外部異步事件。
1.2 I2C總線接口
I2C總線是一種用于IC器件之間連接的串行總線,采用SDA(數據線)和SCL(時鐘線)兩線連接每個帶有I2C總線接口的器件或模塊。串行的8位雙向數據傳輸率在標準模式下可達100 kb/s,快速模式下可達400 kb/s.多個微控制器可以通過I2C總線接口非常方便地連接在一起構成系統,并根據地址識別每個器件。這種總線結構的連線和連接引腳少,器件間總線簡單,結構緊湊。因此其構成系統的成本較低,并且在總線上增加器件不會影響系統的正常工作,所有的I2C總線器件共用一套總線,因此其系統修改和可擴展性好。
總線必須由主機(通常為微控制器)控制,主機產生串行時鐘( SCL) 控制總線的數據傳輸,并產生起始和停止條件。SDA 線上的數據狀態僅在SCL為低電平的期間才能改變,SCL為高電平的期間,SDA 狀態的改變被用來表示起始和停止條件。I2C總線起始和停止時序如圖1所示。
圖1 I2C總線起始和停止時序
1.3 硬件電路
S3C2440和F28015自身均集成了I2C總線模塊,支持多主設備I2C總線串行接口,可以方便地掛接到I2C總線上。因此,兩者之間的I2C總線接口電路的設計變得十分簡單,只要將兩者的對應引腳I2C_CLK(對應I2C總線中的SCL線)和I2C_SDA(對應I2C總線中的DATA線)連接起來即可。S3C2440和TMS320F28015的硬件接口電路如圖2所示。
圖2 S3C2440和TMS320F28015的硬件接口
電路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;
}
F28015中的數據接收子程序和數據發送子程序是在I2C總線的中斷服務程序中根據不同的狀態碼進行調用,它們是整個通信程序的核心部分。數據接收子程序和數據發送子程序的流程如圖8所示。
圖8 數據接收和發送子程序
3 測試結果
通過NFS文件系統將編譯成模塊的I2C的總線驅動和設備驅動加載到運行Linux操作系統的S3C2440平臺上(先加載總線驅動),再將F28015的測試程序燒寫到RAM中。運行F28015等待I2C總線上的數據,再執行Linux系統中的I2C總線測試程序。測試結果顯示,芯片通過I2C總線接口完成了數據通信,具有良好的實時性和可靠性。
4 結論
該設計利用I2C總線實現了ARM9微控制器與DSP芯片間實時可靠的數據通信。ARM9微控制器結合Linux操作系統作為上層控制核心,DSP芯片實現下層控制算法,可充分發揮ARM9微控制器在數據采集和任務管理等方面的優勢以及DSP芯片在算法實現和底層控制的長處。
上一篇:Linux的MISC類設備AD7859L的驅動程序開發
下一篇:嵌入式系統的存儲測試技術及無線傳輸應用
推薦閱讀
史海拾趣
2020年新冠疫情的爆發對全球供應鏈造成了巨大沖擊。然而,Flextronics(Flexxon Pte Ltd)憑借其強大的供應鏈管理和風險管理能力,迅速調整生產計劃、優化資源配置、加強員工健康防護,確保了生產線的穩定運行和訂單的及時交付。在疫情期間,Flextronics還積極為客戶提供遠程技術支持和解決方案,助力客戶應對市場挑戰。這一系列舉措不僅展現了公司的韌性和實力,也進一步鞏固了其在電子制造服務領域的領先地位。
隨著全球對環保意識的日益增強,Excelsys公司積極響應綠色環保的號召,將環保理念融入到產品設計和生產過程中。公司采用環保材料、優化生產工藝、提高能源利用效率等措施,減少了對環境的影響。同時,公司還積極參與環保公益活動,為行業的綠色發展貢獻力量。
為了滿足市場不斷變化的需求,CIPS公司不斷推出創新產品和服務。例如,推出了CIPS匯路指南、CIPS數據洞察等產品服務,這些服務不僅解決了跨境支付過程中的信息不對稱問題,還提高了支付效率,降低了退匯率。此外,CIPS還推出了港元業務等多元化服務,進一步豐富了其服務內容與形式。
為了進一步拓展業務版圖,千志電子開始進軍國際市場。2006年,千志電子在香港設立了千志電子(香港)有限公司,將其作為國際服務據點重心之一。這一舉措使千志電子能夠更好地了解國際市場需求和趨勢,加強與國外客戶的聯系和合作。同時,千志電子還積極參加國際展覽和論壇,展示其優質產品和先進技術,提高了品牌知名度和國際影響力。
千志電子一直注重技術研發和創新,不斷推動產業升級。公司擁有一支專業的研發團隊和先進的研發設備,致力于電阻技術的研發和創新。通過與高校和科研機構的合作,千志電子不斷引進新技術、新工藝和新材料,提高產品的技術含量和附加值。同時,千志電子還注重知識產權的保護和管理,積極申請專利和注冊商標,維護了自身的合法權益。
在電子行業的初期,Connection One公司憑借其創始人對半導體技術的深刻理解,成功研發出一款具有劃時代意義的芯片。這款芯片不僅性能卓越,而且功耗極低,立即在市場上引起了轟動。公司因此迅速積累了第一筆資金,為后續的研發和擴展打下了堅實基礎。