MCU與DSP的SPI通信設計
引言
現今的工控系統中,為了提高系統的實(shí)時(shí)性和適用性,一般采用DSP來(lái)完成核心算法與控制,而使用MCU來(lái)實(shí)現人機對話(huà),以實(shí)現實(shí)時(shí)控制功能。這樣,DSP和MCU需要一種高效的數據總線(xiàn)來(lái)完成它們之間的大量數據傳送。SPI總線(xiàn)由于占用的接口線(xiàn)少,通信效率高,并且大部分處理器芯片都支持,因而是一種理想的設計方案。
針對交流伺服系統實(shí)際使用的要求,采用TI公司的高性能DSP控制器TMS320LF2407A(簡(jiǎn)稱(chēng)“2407A”)作為控制核心;選用TI公司生產(chǎn)的MSP430系列單片機中的MSP430F149作為人機界面的控制芯片,來(lái)實(shí)現按鍵和數據采集以及顯示的功能;采用SPI串口通信實(shí)現單片機與DSP之間的數據傳輸。
1 系統硬件的構成
1.1 MSP430
MSP430系列單片機是TI公司近幾年開(kāi)發(fā)的新一代單片機。該單片機在設計上打破常規采用了全新的概念,其突出的優(yōu)點(diǎn)是低電源電壓、超低功耗、多種功能。由于其功能遠遠超過(guò)其他系列單片機的功能,因而又稱(chēng)為“混合型單片機”。MSP430具有非常高的集成度,單片集成了多通道的12位A/D轉換、片內精密比較器、多個(gè)具有PWM功能的定時(shí)器、片內USART、看門(mén)狗定時(shí)器、片內數控振蕩器、大量的I/O端口以及大容量的片內存儲器。同時(shí),MSP430F149是Flash存儲器型單片機,具有良好的仿真開(kāi)發(fā)技術(shù),設置有JTAG仿真接口和高級語(yǔ)言編譯器。在系統支持軟件下,在線(xiàn)實(shí)現對目標系統的硬件調試及軟件開(kāi)發(fā),包括匯編語(yǔ)言、C語(yǔ)言、連接及動(dòng)態(tài)調試,具有單步、多斷點(diǎn)和跟蹤,并且開(kāi)放全部存儲器、寄存器,可以方便、可靠地對系統進(jìn)行軟硬件開(kāi)發(fā)[12]。
基于以上特點(diǎn),該系列單片機在便攜式儀表、智能傳感器、實(shí)用檢測儀器、電機控制、家庭自動(dòng)化等領(lǐng)域的應用較為普遍。
1.2 TMS320LF2407A
2407A是TI公司為滿(mǎn)足工業(yè)控制應用,尤其是電機控制而設計的。把一個(gè)高性能的 DSP核和許多外圍設備集成到單片內。2407A的40 MIPS的處理速度可以滿(mǎn)足快速地處理大量數據和算法的需要。
2407A具有豐富的外設模塊: 3K字的Flash程序存儲器、1.5K字的數據/程序RAM、544字雙口RAM(DARAM)和2K字的單口RAM(SARAM)、2個(gè)事件管理器EVA和EVB、16通道輸入的A/D轉換器,具有看門(mén)狗定時(shí)器模塊(WDT)、串行通信接口(SCI)、16位的串行外設接口模塊(SPI)、控制器局域網(wǎng)絡(luò )(CAN)2.0B模塊、基于鎖相環(huán)的時(shí)鐘發(fā)生器、高達40個(gè)可單獨編程或復用的通用輸入/輸出引腳、5個(gè)外部中斷。由此可以看出,2407A確實(shí)有著(zhù)很強的實(shí)時(shí)處理能力,不失為高性能伺服驅動(dòng)控制的理想器件之一[3]。
1.3 硬件接口設計與SPI通信的實(shí)現
SPI通信設備在硬件連接上只需要將主機的發(fā)送與從機的接收相連,將主機的接收與從機的發(fā)送相連,將主機產(chǎn)生的時(shí)鐘信號輸出至從機的時(shí)鐘引腳上。單片機與外設的硬件連接如圖1所示。
圖1 MSP430F149與DSP的接口連接電路
單片機MSP430F149作為串行通信的主機, DSP 2407A則作為從機(slave)。其中,SPICLK為SPI時(shí)鐘引腳, SPISIMO為SPI從動(dòng)輸入/主動(dòng)輸出,SPISOMI為從動(dòng)輸出/主動(dòng)輸入,SPISTE為從動(dòng)發(fā)送使能。
從圖1可以看出,SPI通過(guò)一根時(shí)鐘引線(xiàn)將主機和從機同步,因此,它的串行數據交換不需要增加起始位、停止位等用于同步的格式位,直接將要傳送的數據寫(xiě)入主機的SPI發(fā)送數據寄存器。這個(gè)寫(xiě)入過(guò)程自動(dòng)啟動(dòng)主機的發(fā)送過(guò)程,即在同步時(shí)鐘SPICLK的節拍下把SPITXBUF的內容一位一位地移到引腳SPISIMO;對于從機,同樣在SPICLK的節拍下將出現在引腳SPISIMO上的數據一位一位地移到從機的移位寄存器,當接收完一個(gè)完整的數據塊后,設置中斷標志通知從機這個(gè)數據塊已接收完畢,并同時(shí)將移位寄存器接收到的內容復制到從機的SPI接收數據寄存器SPIRXBUF??梢钥闯?,用戶(hù)編程只需在發(fā)送數據時(shí)寫(xiě)數據到SPI發(fā)送數據寄存器,在接收數據時(shí)讀SPI接收數據寄存器,其余的工作都由SPI模塊自動(dòng)完成[4]。
評論