?
電子發燒友網訊:無論是8位、16位、還是32位的單片機在日常生活中都可以找到各自的應用空間。近年來,單片機在體系架構上正從8位向16位和32位升級。在8位單片機方面,美國微芯科技已經雄踞霸主地位,但是隨著調制解調器、GPS、路由器、等中高端應用需求的增長,預計32位單片機未來的應用增長速度將會超越16位單片機,未來32位單片機的前景將會更加寬廣。
德州儀器 (TI) 是全球領先的模擬及數字半導體 IC 設計制造公司。除了提供模擬技術、數字信號處理 (DSP) 以外,TI 在單片機領域也涉入較深,推出一系列的32位單片機,其中Piccolo系列微處理器最具代表性,具體型號如C2000和F28x系列。
一、德州儀器(TI)32位單片機系列產品
1、C2000? 32 Bit 實時 MCU 概述
與市場上其他MCU不同,TI C2000 MCU專為實時控制應用而設計,如今進入市場已超過15年。從最低價格少于2美元、工作頻率高達80MHz 的Piccolo定點和浮點MCU、到頻率高達300MHz并帶有浮點性能的Delfino系列 MCU ,乃至整合C28x內核和ARM Cortex-M3內核,從而提供完整的控制和連接性能的Concerto MCU,TI C2000 MCU平臺正持續拓展,在諸如擁有廣闊市場前景的電機控制、太陽能市場、電力線通信市場以及對成本有更高要求的大學和其他更多領域源源不斷地推出新的解決方案。
C2000器件是支持高性能集成外設的 32 位微控制器,適用于實時控制應用。其數學優化型內核可為設計人員提供能夠提高系統效率、可靠性以及靈活性的方法。 C2000 器件具有功能強大的集成型外設,是理想的單芯片控制解決方案。C2000 開發工具策略及軟件 (controlSUITE) 可創建開放式平臺,不但可最大限度地提高可用性,同時還可最大限度地縮短開發時間。
TI C2000 MCU的特性與優勢:
?C2000 MCU真正將數字信號處理內核的優良性能與微控制器相關的集成化和易用性結合了起來;
?無人比肩的獨特數學引擎包括 C28x DSP內核和浮點選項,控制法則加速器、維特比復雜數學處理單元 (VCU)和一個ARM? CortexTM-M3協處理器。這些特性提供定制的、增強的處理能力,這使得開發人員能只使用一個單MCU高效地執行復雜控制和通信操作,這樣減少了物料清單的總成本和系統成本;
?C2000 MCU提供高級的、面向控制的外設,此外設可傳送準確、快速和清晰無誤的數據以提高系統效率;
?C2000 MCU提供更多的高級連接功能,如10/100 以太網,集成PHY 的USB On-The-Go、雙通道 CAN等;
?C2000微控制器系列產品多樣性使得開發人員能夠很容易地規劃他們的設計并重復使用代碼。
內核架構:C28x 32 位 CPU
C2000 控制器采用了32 位中央 CPU 內核,名為 C28x,可與高度優化的外設和中斷管理總線耦合。作為常規微處理器與數字信號處理器之間的橋梁,C28x 內核為 DSP 帶來了優秀的代碼密度和執行速度,以及簡便易用性和微處理器的可訪問性。特性包括:
帶有硬件的高效 C 引擎可使 C 編譯器生成具有世界領先代碼密度的緊湊代碼。
單周期讀 - 修改 - 寫指令、單周期 32 位乘法。
具有自動零周期背景保存的快速中斷服務時間(低至 9 個周期)。
96 個專用中斷矢量,無需軟件決策制定
Delfino 控制器中的 32 位浮點部件
Piccolo 器件通過使用獨立控制律加速器 (CLA) 處理浮點控制環路,使 CPU 得到釋放,以便完成其它任務。
3 個 32 位通用 CPU 定時器可為任何應用提供史無前例的準確性和靈活性。
代碼安全模塊可防止反向工程并保護知識產權
功能強大的外設
C2000 控制器具有先進的集成外設模塊,為系統帶來更多好處。外設包括:
增強型 PWM 模塊,提供高分辨率(低至 65 皮秒)的占空比、周期和相位控制。此外,完全可編程跳閘區域檢測和死區時間發生器為系統提供了完善的故障和電涌保護。
業內領先的嵌入式 ADC - 具有高達 16 路模擬輸入通道以及高達 12.5MSPS 的 12 位 ADC 采樣。專門針對速度和靈活性設計,C2000 的 ADC 具有自動定序功能,可以最大程度地減少 CPU 中斷。
基于 32 位定時器的增強型捕捉部件,具有高準確度的感應和更出色的靈活性。
正交編碼器脈沖 (QEP) 模塊,通過硬件選擇控制器解碼位置信號。
SPI、UART/SCI、CAN、I2C 和 LIN 通信模塊使 C2000 控制器與系統其它部件得以連接。
2、Piccolo? 32 位微控制器系列
Piccolo? F28x 32 位微控制器可為低成本應用提供用于實現更高能源利用率的實時控制。
Piccolo? C28x? 低成本、高集成度 32 位微控制器采用最新的架構技術成果和增強型外設,能夠為通常難以承擔相應成本的應用帶來 32 位實時控制功能的優勢。無論是需要具有 F2802x 系列、額外閃存和 F2803x 系列高效控制環路 CLA 的定點 40-60 MHz 性能,還是浮點、雙倍內存和 F2806x 系列的新型 Viterbi 復雜數學運算法 (VCU),Piccolo MCU 均可滿足您的需求。Piccolo 的實時控制通過在諸如太陽能逆變器、白色家電設備、混合動力汽車電池、電力線通信 (PLC) 和 LED 照明等應用中實施高級算法,實現了更高的系統效率與精度。
Piccolo F2806x 方框圖與特性
![](/uploads/allimg/120808/16363615U-0.jpg)
二、Piccolo微控制器的軟件支持
德州儀器 (TI) 與 Visual Solutions 宣布,VisSim/Embedded Controls Developer v8.0 (VisSim) 可為 TI 最新 TMS320C2000 Piccolo 浮點微控制器 (MCU) 提供完全模型化的支持,其可簡化編程,加速設計進程。該軟件支持快速應用開發,并可為算法創建、位真仿真、器件初始化、原型設計以及生產性 C 語言代碼生成提供可視化支持。VisSim v8.0 完整版(可免費試用兩個月)現已開始提供,可與 TI F28069 controlSTICK 及 F28069 實驗板套件配合使用。
VisSim/Embedded Controls Developer v8.0 的主要特性與優勢
? 直觀易用的界面可確保在幾分鐘內啟動開發;
? 生產級 C 語言代碼生成器不但支持高速采樣速率以及低 RAM 與低閃存需求,而且還可自動生成高效定點與浮點運算;
? 便捷的下拉菜單可引導為所有外設生成中斷驅動型高效代碼,其中包括 A/D 轉換器及 PWM 的高級模式;
? 仿真特性可幫助開發人員在以圖形方式互動查看結果的同時,確認、調試和調諧算法;
? VisSim 環境可自動使用 TI Code Composer Studio IDE 與仿真功能(F2806x套件包含的)編譯算法,并將其鏈接和下載到目標上;
? USB JTAG 的熱鏈路支持下載與目標通信的實時主機服務,可對響應進行互動制圖,并在目標執行過程中改變參數;
? F2806x MCU 的范例圖包含互動 FFT、PSD、電機控制、數字電源以及各種其它應用,可為開發工作實現跨越式發展;
? 現有的 VisSim 圖無需調整圖的結構,便可輕松改變目標,將其指向任何 C2000 MCU,從而可顯著降低支持多目標所需的工程設計成本。
三、Piccolo USB工具
德州儀器 (TI) 兩款適用于 Piccolo? 32 位 TMS320F2802x 微處理器 (MCU) 的USB工具,使設計人員能夠為成本敏感型應用帶來32 位實時控制功能。新型評估與開發工具使設計人員得以更輕松地評估 Piccolo MCU,并開發出更節能的實時控制應用,如微型太陽能逆變器、LED 照明、白色家電以及混合動力汽車電池等。
售價為 39 美元的 Piccolo controlSTICK 可提供工程實例,包括從簡單的閃爍 LED 到配置高分辨率的 ePWM 外設等Piccolo MCU 高級功能;售價為 79 美元的 Piccolo 實驗板套件可提供開發過程中的下一步功能,使設計人員能夠便捷地針對基于 Piccolo
MCU 的全面項目進行原型設計與開發。首批 F2802x Piccolo MCU —TMX320F28027PTA 與 TMX320F28023DAA頻率變動范圍介于 40 ~ 60 MHz 之間,并具有高達 64 KB 的閃存、12 位 ADC、ePWM 以及其它各種外設。
Piccolo controlSTICK 重要特性Piccolo USB 實驗板套件重要特性
· 售價39 美元的評估工具
· 可幫助設計人員評估并了解 Piccolo MCU
· 小型USB 棒狀封裝
· 板上 USB JTAG 可快速簡便地進行項目評估
· 通過排針引腳接入所有控制外設
· 32 KB 有限 Code Composer Studio? IDE 和工程實例· 售價 79 美元的完整開發套件,包括價值 49 美元的
Piccolo controlCARD
· 設計人員可利用原型設計通過 Piccolo MCU 實現更快速的開發
· 通過連接外部仿真器與電源進行板上 USB JTAG 仿真
· 可接入所有 Piccolo 引腳
· 32 KB 有限 Code Composer Studio IDE
四、德州儀器 Piccolo MCU 新品
TI推新型C2000 32位F2803x和F2806x Piccolo微控制器
德州儀器 (TI) 的 Piccolo微控制器可實現設計升級、改善性能并簡化數字實時控制系統的開發,從而為電機控制應用帶來全新的效率與創新。TMS320F2803x 和 TMS320F2806x Piccolo微控制器現包含一個通過一款新型C 編譯器實現的、可采用C 語言進行編程的集成型控制律加速器 (CLA) 協處理器,旨在提升創新設計的水平。該 CLA 是一個32 位浮點數學加速器,專為獨立于 TMS320C28x CPU 內核工作而設計,以分擔復雜的高速控制算法。這種分擔將 CPU 解放出來去處理輸入/輸出和反饋環路測量,從而可使閉環應用的性能提升5 倍之多。此外,該 CLA 還可直接訪問片上外設以實現算法的并行執行,進而加快系統響應時間并改善效率。
新型 CLA C 編譯器軟件庫可通過 controlSUITE軟件平臺訪問,而且還提供了用于電機控制應用開發的系統范例。該 CLA 能提供有效的軟件分區,而 TI 優化型免費源代碼軟件庫以及在控制律加速器 (CLA) 上運行的系統范例則提供了軟件代碼塊,從而使開發人員能夠簡便快捷地完成定制設計,并在電機控制應用中實現 15%-20% 的性能提升。
F2803x 和 F2806x Piccolo微控制器系統的特性與優勢:
F2803x 和F2806x Piccolo 微控制器上通過一款用于 CLA 的新型 C 編譯器實現的、可采用 C 語言進行編程的 32 位浮點協處理器利用元語言工具簡化了編程、改善了靈活性與兼容性,并可直接訪問片上外設以實現算法的并行執行。另外,該 CLA 還實現了更快的系統響應、高 MHz 的控制環路、改進的觸發以及故障檢測功能,旨在提高系統的穩健性。
F2803x Piccolo 微控制器內置了 TI 增強型脈寬調制器(150ps 分辨率的 ePWM)、12 位模數轉換器 (ADC) 和兩個 10 MHz 片上振蕩器,并能替代多個電子組件(即:外部電源 IC),以在降低總體系統成本的同時實現高級電源電子線路管理。
F2806x Piccolo 微控制器內置了一個 Viterbi、復數數學和 CRC 單元 (VCU) 以及 C28x 內核與 CLA,可提供 75 條專用數學指令以加速通信算法的處理。另外,芯片上還包括 USB 2.0 和 CAN 接口(用于改善通信吞吐量和 PWM)、一個 16 通道、3 MSPS 12 位 ADC 以及三個帶 10 位基準的模擬比較器,旨在免除外部設計組件。
與軟件配合使用的電機控制與數字電源開發套件、培訓及全天候支持可簡化開發流程并使產品快速上市。
C2000 微控制器平臺上的代碼兼容性允許開發人員在 40 MHz 至 300 MHz 的范圍內進行解決方案的調整。
controlCARD、controlSTICK和C2000 實驗套件、C2000的靈活與模塊化設計理念使得開發人員能夠對各種不同的 C2000 微控制器進行試驗,以滿足價格、性能和外設特性集的要求。
包括controlSUITE軟件,因而可提供針對電機控制開發以及數字電源的易用型開源演示 GUI、軟件范例和文檔。
五、Piccolo MCU應用
Piccolo是一個口袋大小的單機數控(CNC)平臺。不用70美元,你就能夠組裝自己的Arduino兼容包,玩基本的數控輸出。還有比如讓它快速的涂鴉,印刷一次性名片,或者多個Piccolo合作一起制作一個大型的壁畫等等,這個套件提供了一個在2D和3D數字化制造平臺的小規模試驗。
目前作者打算把Piccolo原型做成一個簡單,能快速組裝,且易于使用的開源程序,完全由數字化制造的零部件和廉價的現成硬件組成。
![](http://m.xsypw.cn/uploads/allimg/120312/0932543531-0.jpg)
Piccolo項目包括Arduino和處理庫,Piccolo有多種使用方式,如自主移動或響應傳感器和數據,同時提供了一個方便的教育工具和新的輸出草圖。
2、如何使用PICCOLO系列MCU產生0~100占空比的PWM波形
(1)、簡介
在某些應用場合中,需要使用占空比從0%~100%變化的PWM波形來進行控制。PICCOLO系列中TMS320X2802X具有強大的PWM控制模塊,利用它可以產生任意占空比的PWM波形。EPWM模塊有三種計數方式,分別為增計數方式、增減計數方式、減計數方式,下面將詳細講解如何利用前面兩種計數方式產生占空比任意變換的PWM波形。
(2)、具體描述
增計數模式
增計數模式下,當TBCTR計數值等于TBPRD的時候,CMPA陰影寄存器中的值賦值到CMPA活動寄存器中,同時計數值等于0的時候置位PWM波形,增計數等于CMPA值的時候清除復位PWM波形。在這種情況下,當CMPA值大于周期值時產生占空比為100%的波形;當CMPA值等于0的時候產生占空比為0%的波形。下面將對兩個臨界點做一下詳細的說明。
產生100%的占空比,CMPA值需要大于周期值。在增計數模式下,等于0的時候置位PWM波形,開始時,置位PWM波形,波形只有在計數值等于CMPA的時候才會清除,由于計數值不可能等于CMPA,所以PWM波形將一直都是高電平,即產生100%占空比波形。為什么計數值到達不了CMPA時,PWM波形就不會有變換,在EPWM模塊的應用手冊中有說,增計數模式下,當CMPA值大于周期值的時候,PWM波形將不會有任何變化;而CMPA值小于等于周期值的時候,PWM波形將隨著CMPA所設定的變化而改變,這里就解釋了為什么產生100%的占空比的波形CMPA值要大于周期值,而不能大于等于周期值。
產生0%的占空比,CMPA值需要等于0。開始計數時,同時產生兩種事件,計數值等于0的事件,置位PWM波形;計數值等于CMPA值的事件,復位PWM波形。兩種事件同時產生,但是由于計數值等于CMPA值事件的優先級要高,所以開始的時候PWM波形是低電平,而計數下去,計數值永遠都是在0的位置比較,而比較事件的優先級要高于CTR=0的事件,所以PWM波形將一直都是低電平。
程序如下所示:
EPwm1Regs.TBPRD = 600; // 定時器周期601
EPwm1Regs.TBPHS.half.TBPHS = 0x0000; // 同步值
EPwm1Regs.TBCTR = 0; // 清除定時器計數
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // 定時器增減模式
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 同步脈沖裝載不使能
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW; // 從鏡像裝載
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; // 關閉同步輸出
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // TB時鐘等于SYSCLK
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // 鏡像模式
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_PRD; // 當CTR=prd的時候裝載鏡像數據
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR; // 增計數下PWM波形清零
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET; // 等于零的時候置位
EPwm1Regs.CMPA.half.CMPA = cnt; // 通過改變cnt的值來產生占空比變換的PWM波形
(3)、增減計數模式
占空比0%~100%
增減計數模式主要是用來產生對稱的PWM波形,如果在增計數模式下,產生占空比0%~100%變換的PWM波形,需要有如下設置:如果計數值在增計數時等于CMPA,置位PWM波形,如果在減計數時等于CMPA,復位PWM波形。當計數值等于0的時候,CMPA陰影寄存器中的值賦值到活動寄存器中。CMPA等于0的時候產生占空比為100%的波形,CMPA等于或大于PRD的時候產生占空比為0%的波形。下面將對產生100%和0%的占空比做詳細的說明。
產生100%的占空比,CMPA等于0。計數值在增計數方向下,如果等于CMPA,置位PWM波形。開始計數時,計數值等于0,產生計數值等于CMPA事件,置位PWM波形,而且減計數下最后計數值等于1,不能和CMPA =0產生比較事件,也就不能清除PWM波形。所以產生100%占空比波形。
產生0%的占空比,CMPA等于或大于周期值。當然開始計數時,PWM波形需要是低電平。計數值等于或大于PRD的時候,PWM波形按照CTR=RPD設置事件變化,而CTR=PRD沒有設置事件,所以PWM波形沒有任何變化,依然為低電平,即0%的占空比。
占空比0%~50%
使用增減計數模式產生占空比從50%~0%變化的不對稱PWM波形。CMPA陰影寄存器值在計數值等于周期值的時候賦值到活動CMPA寄存器。在計數值等于周期值的時候,復位PWM波形;增計數下,計數值和CMPA相等時,置位PWM波形。CMPA值等于0時,產生50%占空比波形,CMPA值等于PRD時,產生0%占空比波形。下面將對產生50%和0%的占空比做詳細的說明。
產生50%占空比,CMPA值等于0。開始計數為增計數方向,此時計數值0等于CMPA寄存器值0,置位PWM波形,繼續計數,當計數值等于周期值PRD的時候復位PWM波形,產生占空比為50%的波形。
產生0%占空比,CMPA值等于PRD。開始計數在0點沒有產生任何的事件,繼續計數當計數值等于PRD的時候,根據EPWM用戶手冊中說到。當CMPA值大于或者等于PRD的時候,產生計數值等于PRD的事件,即為清除PWM波形,PWM波形一直都為低電平,為0%占空比波形。
程序例程如下所示:
EPwm1Regs.TBPRD = 600; // 定時器周期601
EPwm1Regs.TBPHS.half.TBPHS = 0x0000; // 同步值
EPwm1Regs.TBCTR = 0; // 清除定時器計數
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // 定時器增減模式
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 同步脈沖裝載不使能
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW; // 從鏡像裝載
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; // 關閉同步輸出
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // TB時鐘等于SYSCLK
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // 鏡像模式
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_PRD; // 當CTR=prd的時候裝載鏡像數據
EPwm1Regs.AQCTLA.bit.PRD = AQ_CLEAR; // 計數值等于PRD時清除PWM
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // 增計數下計數值等于CMPA置位PWM
EPwm1Regs.CMPA.half.CMPA = cnt; // 改變cnt的值,產生占空比50%~0%變化的波形
賦值方式
通過以上的敘述可以知道,CMPA有兩種賦值方式,1、計數值等于0的時候賦值;2、計數值等于PRD的時候賦值。兩種不同的賦值方式得到的效果也不同,但是只要掌握了變化要點,就能解釋任何的PWM波形的變化。如果為增減計數模式下,產生對稱的PWM波形,不同的賦值方式,對CMPA值也有不同的要求。
如果CMPA在CTR等于0的時候賦值,那么CMPA的值必須大于或者等于1,否則不可能產生對稱的PWM波形。
如果CMPA在CTR等于RPD的時候賦值,那么CMPA的值必須小于或者等于PRD-1,否則不能產生對稱的PWM波形。
(4)、總結
由此可見,賦值方式的不同,會得到不同的效果,但是有一點可以理解的,不管什么樣的賦值方式,什么樣的置位復位模式,都必須要掌握EPWM模塊的特性,如事件優先級,對稱不對稱PWM波形的產生方式等,只有這樣才能理解任意的PWM波形產生方法。
六、Piccolo MCU的幾個小問題
1:LIN作為UART使用時,如果用FIFO,應該提供一個像280X那樣的寄存器SCIFFRX.bit.RXFFST隨時讀取到FIFO中數據的個數,并且FIFO的長度可以immediately更新,而現在的FIFO數據長度更新存在bug,沒有immediately,好像是shadow。
2: AD口增加了比較器,利用比較器可以觸發很多事件。
不過現在的比較器輸入口是固定的。
其中A2,B2;A4,B4;A6,B6是一對輸入。
如果進行雙同步采樣,習慣上把要采集的電流,電壓,比如Iu,Iv,或Uu,Uv放在一對,如A2,B2;或A1,B1。
帶來的問題就是,這樣就要多占用一個AD口,比如Iu即要做比較輸入,又要和Iv同步采樣,就需要Iu,Iv占有A1,B1,然后Iu再接到A2,此時B2可以用內部給的參考電壓。
如果三個比較器的輸入端可以用一個寄存器設定就完美了。
3:QEP接口
一個定時器
一個時間計數器
一個時間溢出標志計數器
一個脈沖計數器
Eqep有一個定時器,可以設置如100us,CLR一次。
每次CLR,時間計數器清零,時間溢出標志清零
時間計數器 ,時間溢出標志用于計算實時速度。
脈沖計數器記錄位置信息,不清零。隨時讀取count,這個脈沖計數器和現在Qep的一樣。
定時器,時間計數器,時間溢出標志計數器是需要新加入的。
這個方法,速度精度會很高,中斷程序的延時不會影響測速的精度,如果時間計數器輸入時鐘是30Mhz,速度計算精度可以在整個速度范圍達到一個pulse。而且不管速度多低,速度多高,不需要切換M,T算法。只需要在低速累加時間溢出標志,在高速,QEP信號的兩個上升沿中間的計數值是不會受到程序順序執行帶來的延時所影響。
如圖,reg讀出,清零代表中斷程序里面計算轉速。
QEP的定時器也設成100us,到了觸發一個定時中斷,也可以在PWM中斷中讀取定時器狀態,因為程序的延時不會給速度位置計算帶來誤差。
如圖計算速度用到的時間計數器reg中的值是T0+T1+T2+T3+T4。這樣的上升沿在高速狀態下,尤其是QEP信號1Mhz以上(時鐘30Mhz),可以得到很精確的速度。
![](http://m.xsypw.cn/uploads/allimg/120808/829019-120PQ62355596.jpg)
?
?
?
?
?
評論