基于ARM920T核心的32位CMOS微控制器特性
TMS320F28015簡介,TMS320F28015是德州儀器(Texas Instruments)推出的一款32位數(shù)字信號處理器(DSP)芯片,主要應用于實時控制和數(shù)字信號處理領域。其主要特性包括:架構?:采用32位的C28x DSP架構,適用于實時控制和數(shù)字信號處理應用。?處理能力?:具有60 MHz的工作頻率,能夠實現(xiàn)高性能的信號處理和控制算法。?存儲器?:內置32KB的閃存程序存儲器和4KB的RAM數(shù)據(jù)存儲器。?通信接口?:支持UART和SPI等通信接口。?定時器和PWM?:具有多個定時器和PWM輸出。?輸入/輸出?:具有多個GPIO引腳,適用于連接外部設備和傳感器。?供電和封裝?:支持1.8V至3.6V的單電源供電,封裝形式為LQFP?3。
S3C2440和TMS320F28015是兩種不同的微處理器,分別屬于ARM架構和DSP架構,具有各自獨特的特點和應用領域。?
S3C2440簡介
S3C2440是一款基于ARM920T核心的32位CMOS微控制器,具有以下主要特性:
?供電電壓?:1.2V內核供電,1.8V/2.5V/3.3V存儲器供電,3.3V外部I/O供電。
?緩存和處理器?:具備16KB的I-Cache和16KB的DC Cache/MMU處理器。
?外部存儲控制器?:支持SDRAM控制和片選邏輯。
?接口?:包括4通道DMA、3通道UART、2通道SPI、1通道IIC-BUS接口(多主支持)、1通道IIS-BUS音頻編解碼器接口、AC'97解碼器接口、2端口USB主機/1端口USB設備(1.1版)、4通道PWM定時器和1通道內部定時器/看門狗定時器、8通道10位ADC和觸摸屏接口、具有日歷功能的RTC、相機接口等。
?其他特性?:具有130個通用I/O口和24通道外部中斷源,支持普通、慢速、空閑和掉電模式,具有PLL片上時鐘發(fā)生器,F(xiàn)BGA-289封裝?12。
1.1 S3C2440及TMS320F28015簡介
Samsung公司的處理器S3C2440是內部集成了ARM公司ARM920T處理器內核的32位微控制器,資源豐富,帶獨立的16 KB的指令Cache和16 KB數(shù)據(jù)Cache,最高主頻可達400 MHz.它擁有130個通用I/O、24個外部中斷源以及豐富的外部接口能實現(xiàn)各種功能,包括支持多主功能的I2C總線接口、3路URAT、2路SPI、攝像頭接口等。
1.2 I2C總線接口
I2C總線是一種用于IC器件之間連接的串行總線,采用SDA(數(shù)據(jù)線)和SCL(時鐘線)兩線連接每個帶有I2C總線接口的器件或模塊。串行的8位雙向數(shù)據(jù)傳輸率在標準模式下可達100 kb/s,快速模式下可達400 kb/s.多個微控制器可以通過I2C總線接口非常方便地連接在一起構成系統(tǒng),并根據(jù)地址識別每個器件。這種總線結構的連線和連接引腳少,器件間總線簡單,結構緊湊。因此其構成系統(tǒng)的成本較低,并且在總線上增加器件不會影響系統(tǒng)的正常工作,所有的I2C總線器件共用一套總線,因此其系統(tǒng)修改和可擴展性好。
總線必須由主機(通常為微控制器)控制,主機產(chǎn)生串行時鐘( SCL) 控制總線的數(shù)據(jù)傳輸,并產(chǎn)生起始和停止條件。SDA 線上的數(shù)據(jù)狀態(tài)僅在SCL為低電平的期間才能改變,SCL為高電平的期間,SDA 狀態(tài)的改變被用來表示起始和停止條件。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.考慮到阻抗不匹配等因素會影響總線數(shù)據(jù)傳輸效果,因此在將兩塊芯片的I2C_DATA和I2C_CLK引腳直連時,在直連線路上各串聯(lián)一個小電阻。
I2C_SDA和I2C_CLK是雙向電路,必須都通過一個電流源或上拉電阻連接到正電源電壓上。由于S3C2440和F28015的輸出高電平均為3.3 V,所以在硬件設計時將I2C_SDA和I2C_CLK總線通過上拉電阻連接到了3.3 V的VCC電源上。
2 ARM和DSP通信軟件設計
運行Linux操作系統(tǒng)的ARM微控制器作為主控制器,在數(shù)據(jù)管理及多任務調度等方面有顯著優(yōu)勢,可以很好地組織外圍器件采集的數(shù)據(jù);主要實現(xiàn)對系統(tǒng)的整體控制,并通過總線設備驅動程序控制I2C總線模塊,通過主機尋址實現(xiàn)向I2C總線上掛載的下層DSP的數(shù)據(jù)收發(fā)。為保證數(shù)據(jù)通信的實時性,F(xiàn)28015通過中斷響應的方式實現(xiàn)數(shù)據(jù)接收和發(fā)送。
2.1 ARM9平臺的嵌入式Linux的I2C總線驅動設計
2.1.1 I2C總線讀寫時序
ARM9微控制器作為主機向從機DSP寫數(shù)據(jù),首先向從機發(fā)送啟動信號,然后發(fā)送7位從機地址和1位寫標志位,再等待從機的應答信號。在收到應答信號后,主機發(fā)送數(shù)據(jù)給從機,再次等待應答信號。當主機收到應答信號之后再次發(fā)送數(shù)據(jù)。之后,主機等待從機的應答信號,如此直到數(shù)據(jù)發(fā)送完成,主機發(fā)送停止信號。I2C總線寫數(shù)據(jù)幀格式如圖3所示。

圖3 I2C總線寫數(shù)據(jù)幀格式
主模式下讀數(shù)據(jù),是指每次從指定的位置讀取一個或多個字節(jié)數(shù)據(jù)。主機首先向從機發(fā)送啟動信號,然后發(fā)送 7位從機地址和1位讀標志位,等待從機應答。當收到從機的應答信號后,主機準備接收從機發(fā)送的數(shù)據(jù),接收完成后發(fā)送一個應答信號,如此直到數(shù)據(jù)接收完成,主機發(fā)送一個停止信號。圖4為I2C總線讀數(shù)據(jù)幀格式。

圖4 I2C總線讀數(shù)據(jù)幀格式
2.1.2 Linux下I2C總線驅動程序概述
Linux系統(tǒng)的I2C總線驅動采用體系化結構設計,包括I2C總線適配器驅動和I2C總線設備驅動??偩€驅動實現(xiàn)對I2C總線適配器(S3C2440的I2C總線模塊)的控制,設備驅動實現(xiàn)對具體設備(F28015的I2C總線模塊)的讀寫控制。圖5為總體驅動框架,可以分為三個層次:
① I2C框架。內核中i2c.h和i2ccore.c為I2C總線框架的主體,提供了核心數(shù)據(jù)結構的定義、I2C總線適配器驅動和設備驅動的注冊、注銷管理、I2C總線通信方法上層的、與具體適配器無關的代碼、檢測設備地址的上層代碼等。i2cdev.c用于創(chuàng)建I2C總線適配器的設備節(jié)點,提供I2C總線設備訪問方法等。
② I2C總線適配器驅動。定義描述具體I2C總線適配器的數(shù)據(jù)結構,實現(xiàn)在具體I2C總線適配器上的I2C總線通信方法。
③ I2C總線設備驅動。定義描述具體設備的數(shù)據(jù)結構,借助I2C總線框架的相關函數(shù)實現(xiàn)設備的注冊,并為用戶提供上層應用程序編程接口。

圖5 總體驅動框架
Linux的I2C總線驅動框架中的主要數(shù)據(jù)結構包括: i2c_driver、i2c_client、i2c_adapter和 i2c_algorithm,它們被定義在內核中的i2c. h頭文件中。i2c_adapter對應于物理上的一個適配器,而i2c_algorithm對應一套通信方法,用來為適配器提供通信函數(shù)。i2c_algorithm中的關鍵函數(shù)master_xfer()用于產(chǎn)生I2C總線訪問周期需要的信號,以i2c_msg(即I2C總線消息)為單位。該結構體原型如下:
struct i2c_msg{
_ _u16 addr;/*設備地址*/
_ _u16 flags;/*標志*/
_ _u16 len;/*消息長度*/
_ _u8 *buf;/*消息數(shù)據(jù)*/
};
i2c_driver對應一套驅動方法,是用于輔助作用的數(shù)據(jù)結構。i2c_client對應于真實的物理設備,每個I2C總線設備都需要一個i2c_client來描述。i2c_adapter和i2c_client的關系與I2C總線硬件體系中適配器和設備關系一致,即i2c_client依附于i2c_adapter.

圖6 設備驅動模塊加載流程
在Linux內核源代碼中drivers目錄下的i2c_dev.c文件,是通用的I2C總線設備驅動文件,為應用程序提供open()、write()、read )、ioctl()和close()等操作接口來訪問設備。應用層可以借用這些接口訪問掛接在適配器上的I2C總線設備的存儲空間或寄存器,并控制I2C總線設備的工作方式。
2.1.3 S3C2440的I2C總線驅動
設備驅動S3C2440內部的I2C總線控制器通過4個寄存器實現(xiàn)對通信的控制,分別是I2C控制寄存器(I2CCON)、I2C狀態(tài)寄存器(I2CSTAT)、I2C收發(fā)數(shù)據(jù)移位寄存器(I2CDS)、I2C地址寄存器(I2CADD)。
按照Linux中I2C總線框架要求,S3C2440的I2C總線驅動設計主要完成以下工作:設計i2c_adapter_s3c_init()模板加載函數(shù)和對應于i2c_adapter_s3c_exit()模板卸載函數(shù);設計i2c_adapter_s3c_xfer()模板S3C2440適配器通信方法函數(shù)。
i2c_adapter_s3c_init()通過注冊s3c2440_i2c_driver結構體實現(xiàn)總線驅動的平臺注冊,s3c2440_i2c_driver結構體包含了具體適配器的probe()函數(shù)、remove()函數(shù)、resume()函數(shù)指針等信息。代碼如下:
static int _ _init i2c_adap_s3c_init(){
int ret;
ret=platform_driver_regisiter(&s3c2440_i2c_driver);//注冊platform_driver結構體
if(ret==0){//注冊失敗
ret=platform_driver_regisiter(&s3c2440_i2c_driver);
if(ret)
platform_driver_unregisiter (&s3c2440_i2c_driver);
}
return ret;
}
static struct platform_driver s3c2440_i2c_driver={
.probe=s3c24xx_i2c_probe,
.remove=s3c24xx_i2c_remove,
.resume=s3c24xx_i2c_resume,
.driver={
.owner=THIS MODULE,
.name=“s3c2440i2c”,
},
} ;
完成了S3C2440的I2C總線適配器驅動注冊后,就可以將具體設備驅動注冊到該總線平臺上,實現(xiàn)I2C總線數(shù)據(jù)通信。i2c_dev.c文件是內核源碼提供的通用I2C總線設備驅動文件,針對每個I2C總線適配器生成一個主設備號為89的設備文件,設備驅動模塊加載流程如圖6所示。完成加載后,驅動提供i2cdev_read()、i2cdev_write()、i2cdev_ioctl()函數(shù)來對應用戶空間的read()、write()、ioctl()函數(shù),供用戶使用。用戶通過這些接口函數(shù)實現(xiàn)I2C總線數(shù)據(jù)的讀寫功能。
2.2 DSP數(shù)據(jù)接收中斷程序設計

圖7 I2C總線中斷服務程序流程
通過配置F28015的I2C模塊寄存器,設置I2C模塊為從工作方式,同時利用I2C總線中斷響應程序實現(xiàn)對總線上數(shù)據(jù)的接收和發(fā)送,進而完成數(shù)據(jù)通信。F28015產(chǎn)生了I2C總線中斷后,就執(zhí)行中斷服務程序,圖7為I2C總線中斷服務程序流程。
中斷服務程序通過查詢狀態(tài)寄存器(I2CSTR)標志位,得出中斷類型碼,然后調用相應的子程序,完成數(shù)據(jù)接收發(fā)送。代碼如下:

圖8 數(shù)據(jù)接收和發(fā)送子程序
3 測試結果
通過NFS文件系統(tǒng)將編譯成模塊的I2C的總線驅動和設備驅動加載到運行Linux操作系統(tǒng)的S3C2440平臺上(先加載總線驅動),再將F28015的測試程序燒寫到RAM中。運行F28015等待I2C總線上的數(shù)據(jù),再執(zhí)行Linux系統(tǒng)中的I2C總線測試程序。測試結果顯示,芯片通過I2C總線接口完成了數(shù)據(jù)通信,具有良好的實時性和可靠性。
?S3C2440和TMS320F28015是兩款在嵌入式系統(tǒng)中廣泛使用的微處理器和數(shù)字信號處理器。?
S3C2440簡介
S3C2440是一款基于ARM920T核心的32位CMOS微控制器,由三星電子設計。其主要特性包括:
?內核供電電壓為1.2V,存儲器供電電壓支持1.8V/2.5V/3.3V,外部I/O供電為3.3V?。
?內置16KB的I-Cache和16KB的DC Cache/MMU處理器?。
?支持多種存儲器類型,如SDRAM、SRAM和NAND Flash?。
?具有豐富的外設接口,包括3個UART、2個SPI、1個I2C總線接口、1個IIS-BUS音頻編解碼器接口、2個USB主機和1個USB設備接口?。
?支持多種通信協(xié)議,如SD卡和MMC卡接口??12。
TMS320F28015簡介
TMS320F28015是德州儀器(Texas Instruments)推出的一款32位數(shù)字信號處理器(DSP)。其主要特性包括:
?基于32位的C28x DSP架構?,工作頻率為60 MHz。
?內置32KB的閃存程序存儲器和4KB的RAM數(shù)據(jù)存儲器?。
?具有12位的模擬輸入(ADC),適用于采集模擬信號?。
?支持UART和SPI等通信接口?,適用于多種實時控制和數(shù)字信號處理應用,如工業(yè)控制、電機控制、電源轉換等?4。
功能特點
–100 MHz(10 ns循環(huán)時間)
–60 MHz(16.67-ns循環(huán)時間)
–低功耗(1.8V內核,3.3V I/O)設計
?JTAG邊界掃描支持
–IEEE標準1149.1-1990標準測試接入端口和邊界掃描體系結構
?高性能32位CPU(TMS320C28x)
–16×16和32×32 MAC操作
–16×16雙MAC
–哈佛總線體系結構
–原子操作
–快速的中斷響應和處理
–統(tǒng)一的內存編程模型
–代碼高效(在C/C++和匯編中)
?引導ROM(4K×16)
–具有軟件引導模式(通過SCI、SPI、CAN、I2C和并行I/O)
TMS320F28015(以下簡稱F28015)是TI公司的32位處理器,它具有強大的控制和信號處理能力,能夠實現(xiàn)復雜的控制算法。片上整合了Flash存儲器、I2C總線模塊、快速的A/D轉換器、增強的CAN總線模塊、事件管理器、正交編碼電路接口及多通道緩沖串口等外設,此種整合能夠方便地實現(xiàn)功能的擴展。同時,快速的中斷響應使它能夠保護關鍵的寄存器并快速(更小的中斷延時)地響應外部異步事件。