許多針對(duì)物聯(lián)網(wǎng) (IoT) 的設(shè)計(jì)都依靠模擬電路,以便滿足應(yīng)用對(duì)傳感器和致動(dòng)器的信號(hào)調(diào)節(jié)、電流控制和其他功能的獨(dú)特要求。雖然專用的信號(hào)鏈 IC 可以滿足這種需求,但是成本和空間嚴(yán)格受限的設(shè)計(jì)需要一種專門方法,這種方法不但應(yīng)該滿足性能要求,還應(yīng)該使用更少的零件來實(shí)現(xiàn)這一功能。
為滿足這一需求,微控制器應(yīng)運(yùn)而生。通過集成諸如模數(shù)轉(zhuǎn)換器 (ADC) 和比較器等模擬外設(shè),微控制器可以簡(jiǎn)化傳感器和致動(dòng)器的接口性質(zhì)。然而,直到最近,工程師們通常還需要添加模擬零件,來提供大多數(shù)設(shè)計(jì)所需的信號(hào)調(diào)節(jié)或輸出緩沖。
通過在微控制器上添加這些模擬信號(hào)調(diào)節(jié)電路,開發(fā)人員現(xiàn)在只需操作幾行代碼,即可有效配置這些元件,從而滿足可穿戴設(shè)備和其他物聯(lián)網(wǎng)設(shè)備的各種模擬接口要求。
本文將討論物聯(lián)網(wǎng)連接設(shè)備對(duì)前端模擬信號(hào)調(diào)節(jié)要求的需求,然后介紹一類具有高度集成模擬功能的微控制器,并說明如何應(yīng)用此類微控制器。
將傳感器連接到微控制器
傳感器設(shè)計(jì)通常需要一個(gè)或兩個(gè)放大器來調(diào)節(jié)變送器的輸出信號(hào),然后才能到達(dá)微控制器的 ADC 輸入。諸如用于心率監(jiān)測(cè)的脈搏血氧計(jì)等較復(fù)雜器件需要多個(gè)信號(hào)鏈,才能產(chǎn)生 LED 激勵(lì)波形,轉(zhuǎn)換光電二極管輸出,并最終提取脈沖數(shù)據(jù)(圖 1)。即使是工業(yè)應(yīng)用中通常用于將傳感器連至可編程邏輯控制器的簡(jiǎn)單電流環(huán)路,也需要其他設(shè)備來驅(qū)動(dòng)和控制電流輸出。但是,通過使用 MSP430FR2355 MCU 中的內(nèi)部模擬元件,開發(fā)人員可以實(shí)現(xiàn)更緊湊的設(shè)計(jì),一般只需添加幾個(gè)無(wú)源元件即可。
?
圖 1:用戶期待更緊湊產(chǎn)品能夠提供更多高級(jí)功能,這意味著,開發(fā)人員需要在實(shí)現(xiàn)復(fù)雜信號(hào)路徑(如此圖中脈搏血氧計(jì)的路徑)時(shí)大幅減少零件的數(shù)量。(圖片來源:Texas Instruments)
集成模擬元件
Texas Instruments MSP430FR2355 MCU 基于 16 位 RISC 處理器內(nèi)核,可提供許多物聯(lián)網(wǎng)設(shè)備設(shè)計(jì)中通常需要的全套功能。作為 TI MSP430 FRAM 系列器件之一,MSP430FR2355 集成了 32 KB 的低功耗鐵電存儲(chǔ)器 (FRAM)。FRAM 非常適合物聯(lián)網(wǎng)設(shè)計(jì),具有閃存的非易失性存儲(chǔ)優(yōu)勢(shì),以及 RAM 的寫入速度和耐用性。因此,開發(fā)人員可以利用 FRAM 的類似于 RAM 的性能品質(zhì),在激活模式下存儲(chǔ)數(shù)據(jù)和程序代碼,并且可以利用 FRAM 的非易失性功能,在休眠模式或其他需要節(jié)省電能的運(yùn)行狀態(tài)下保留數(shù)值。MSP430FR2355 支持多種低功耗模式,旨在滿足這些設(shè)計(jì)中典型的低功耗要求。
除了低功耗特性外,MSP430FR2355 還可通過幾個(gè)集成的模擬外設(shè)支持物聯(lián)網(wǎng)接口要求,這些外設(shè)包括 12 通道 12 位 ADC、配有集成數(shù)模轉(zhuǎn)換器 (DAC) 的模擬比較器以及多個(gè)片上電壓基準(zhǔn)。MSP430FR2355 MCU 的最獨(dú)特模擬功能是它的四個(gè)智能模擬組合 (SAC) 模塊,開發(fā)人員可通過編程方式配置這些模塊,以滿足特定需求。
每個(gè) SAC 模塊均包括一個(gè) 12 位 DAC、一個(gè)軌至軌運(yùn)算放大器 (OA) 和一個(gè)可將 OA 轉(zhuǎn)變?yōu)榭删幊淘鲆娣糯笃?(PGA) 的反饋電阻梯。每個(gè)元件的專用寄存器可控制其配置和工作模式。例如,開發(fā)人員可以簡(jiǎn)單地在 SAC (SACx) 模塊的 OA 寄存器 (SACxOA) 中加載 0:1 位,從而將 OA 的正輸入設(shè)置為某個(gè)外部源、DAC 輸出或成對(duì)的 SAC 源(如下所述)。
TI 公司的驅(qū)動(dòng)程序庫(kù)將這些位操作抽象為一組直觀的應(yīng)用程序編程接口 (API) 調(diào)用。因此,開發(fā)人員只需幾行代碼(清單 1),即可將 SAC 模塊編程為通用放大器,以便完全取代傳感器信號(hào)調(diào)節(jié)放大器,從而減少零件數(shù)量,縮小設(shè)計(jì)尺寸(圖 2)。
復(fù)制 //Select external source for both positive and negative inputs SAC_OA_init(SAC0_BASE, SAC_OA_POSITIVE_INPUT_SOURCE_EXTERNAL, SAC_OA_NEGATIVE_INPUT_SOURCE_EXTERNAL); //Select low speed and low power mode SAC_OA_selectPowerMode(SAC0_BASE, SAC_OA_POWER_MODE_LOW_SPEED_LOW_POWER) // Enable OA SAC_OA_enable(SAC0_BASE); // Enable SAC SAC_enable(SAC0_BASE);
清單 1:在該示例中,要實(shí)現(xiàn)通用放大器,開發(fā)人員只需調(diào)用幾次 Texas Instruments 驅(qū)動(dòng)程序庫(kù),初始化 SAC OA 輸入 (SAC_OA_init),然后將其功耗模式 (SAC_OA_selectPowerMode) 設(shè)置為低功耗,最終啟用 OA 和 SAC 即可。(代碼來源:Texas Instruments)
?
圖 2:開發(fā)人員可以使用 MCU 四個(gè)智能模擬組合 (SAC) 模塊的其中一個(gè),通過 Texas Instruments MSP430FR2355 MCU 內(nèi)部實(shí)現(xiàn)的運(yùn)算放大器來取代外部運(yùn)算放大器。(圖片來源:Texas Instruments)
要充當(dāng)輸出波形發(fā)生器,SAC 模塊需要接入更多元件(圖 3)。在這種情況下,開發(fā)人員可通過編程方式,將數(shù)據(jù)加載到可設(shè)置內(nèi)部 DAC 輸出的專用數(shù)據(jù)寄存器 (SACxDAT) 中,從而實(shí)現(xiàn)波形控制。DAC 輸出隨即可為 OA 提供基準(zhǔn)電壓。在此配置中,開發(fā)人員可將 PGA 寄存器 (SACxPGA) 中的 0:1 位 (MSEL) 設(shè)置為緩沖模式 (01b),以此增強(qiáng) OA 的驅(qū)動(dòng)強(qiáng)度,緩沖模式 (01b) 對(duì)應(yīng)于浮動(dòng)輸入。要配置此工作模式,開發(fā)人員只需多執(zhí)行幾次 API 調(diào)用(清單 2)即可——與上述通用配置所需的調(diào)用相比。
?
圖 3:開發(fā)人員可使用 SAC 模塊的數(shù)模轉(zhuǎn)換器和運(yùn)算放大器元件,實(shí)現(xiàn)可編程波形發(fā)生器。(圖片來源:Texas Instruments)
//Select internal shared reference as DAC reference voltage SAC_DAC_selectRefVoltage(SAC0_BASE, SAC_DAC_SECONDARY_REFERENCE);
//Select the load trigger for DAC data latch //DAC always loads data from DACDAT at the positive edge of Timer output TB2.1 SAC_DAC_selectload(SAC0_BASE, SAC_DAC_LOAD_DEVICE_SPECIFIC_0); //Enable DAC Interrupt SAC_DAC_interruptEnable(SAC0_BASE);
//Write data to DAC Data Register SACxDAT //DAC_data is an unsigned int type variable defined by user SAC_DAC_setData(SAC0_BASE, DAC_data);
//Enable DAC SAC_DAC_enable(SAC0_BASE);
//Select internal DAC for positive input and PGA source for negative input SAC_OA_init(SAC0_BASE, SAC_OA_POSITIVE_INPUT_SOURCE_DAC, SAC_OA_NEGATIVE_INPUT_SOURCE_PGA);
//Select Buffer Mode SAC_PGA_setMode(SAC0_BASE, SAC_PGA_MODE_BUFFER);
//Enable OA SAC_OA_enable(SAC0_BASE);
//Enable SAC SAC_enable(SAC0_BASE);
清單 2:要將 SAC 模塊配置為波形發(fā)生器,除了用作通用放大器所需的 API 調(diào)用之外,開發(fā)人員只需多執(zhí)行幾次 API 調(diào)用即可。(代碼來源:Texas Instruments)
多級(jí)
在許多情況下,開發(fā)人員需要使用多個(gè)放大器構(gòu)建的信號(hào)條件或輸出鏈。例如,傳感器系統(tǒng)設(shè)計(jì)人員通常可級(jí)聯(lián)放大器,以緩沖變送器輸出,并放大緩沖信號(hào),從而與位于信號(hào)鏈一端的 ADC 的滿量程響應(yīng)相符。同樣,輸出接口的開發(fā)人員通常需要級(jí)聯(lián)放大器來生成波形,并控制柵極驅(qū)動(dòng)器。例如,為了構(gòu)建電流環(huán)路接口,開發(fā)人員可使用配置為 DAC 模式的 SAC 模塊來提供調(diào)制信號(hào)電壓。通過將第二個(gè) SAC 模塊配置為 OA 模式,可以使用外部晶體管將信號(hào)電壓轉(zhuǎn)換為電流(圖 4)。
?
圖 4:為了構(gòu)建電流環(huán)路接口,工程師可以使用一個(gè)配置為 DAC 模式的 SAC 模塊來生成調(diào)制信號(hào)電壓,然后使用第二個(gè)配置為 OA 模式的 SAC 模塊來驅(qū)動(dòng)晶體管,從而產(chǎn)生環(huán)路電流 ILOOP (I1 + I2)。(圖片來源:Texas Instruments)
MSP430FR2355 MCU 為級(jí)聯(lián)放大器提供了更高效的方法。對(duì)于不需要其他外部元件的設(shè)計(jì),開發(fā)人員可利用內(nèi)置路由,在內(nèi)部將 SAC 模塊互連成兩對(duì):SAC0 內(nèi)部連接到 SAC2,SAC1 連接到 SAC3。
這種互連可應(yīng)用于傳感器系統(tǒng),例如需要將光電二極管的電流輸出轉(zhuǎn)換為電壓電平以進(jìn)一步進(jìn)行轉(zhuǎn)換的煙霧探測(cè)器。開發(fā)人員只需幾行代碼,即可通過一對(duì) SAC 模塊來實(shí)現(xiàn)這一信號(hào)鏈(清單 3)。在本電路圖中,SAC2 被配置為跨阻放大器,可將光電二極管的電流輸出轉(zhuǎn)換為電壓,而成對(duì)的 SAC0 可為下游 ADC 放大該電壓(圖 5)。如清單 3 所示,SAC2 和 SAC0 之間的內(nèi)部連接僅在 API 調(diào)用 (SAC_OA_init) 中創(chuàng)建,以便通過將 PGA 用作 OA 的負(fù)輸入源 (SAC_OA_NEGATIVE_INPUT_SOURCE_PGA),將成對(duì) OA 用作正輸入源 (SAC_OA_POSITIVE_INPUT_SOURCE_PAIR_OA) 來初始化 SAC0 (SAC0_BASE)。
//Configure Op-Amp functionality GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P3, GPIO_PIN1 | GPIO_PIN3 | GPIO_PIN2, GPIO_TERNARY_MODULE_FUNCTION);
//Select external source for both positive and negative inputs SAC_OA_init(SAC2_BASE, SAC_OA_POSITIVE_INPUT_SOURCE_EXTERNAL, SAC_OA_NEGATIVE_INPUT_SOURCE_EXTERNAL); //Select low speed and low power mode SAC_OA_selectPowerMode(SAC2_BASE, SAC_OA_POWER_MODE_LOW_SPEED_LOW_POWER); SAC_OA_enable(SAC2_BASE);
// Enable SAC2 OA SAC_enable(SAC2_BASE);
// Enable SAC2 //Select external source for both positive and negative inputs SAC_OA_init(SAC0_BASE, SAC_OA_POSITIVE_INPUT_SOURCE_PAIR_OA, SAC_OA_NEGATIVE_INPUT_SOURCE_PGA);
SAC_OA_enable(SAC0_BASE);
// Enable SAC0 OA SAC_enable(SAC0_BASE);
// Enable SAC0
清單 3:開發(fā)人員只需初始化 MSP430FR2355 MCU 的一對(duì) SAC 模塊,并規(guī)定下游級(jí)的輸入端需將成對(duì) OA 用作其來源 (SAC_OA_POSITIVE_INPUT_SOURCE_PAIR_OA),即可創(chuàng)建一個(gè)兩級(jí)信號(hào)鏈。(代碼來源:Texas Instruments)
?
圖 5:通過配置 MSP430FR2355 MCU 的成對(duì) SAC 模塊,實(shí)現(xiàn)典型煙霧探測(cè)器輸入信號(hào)鏈中所需的跨阻放大器 (TIA) 和可編程增益放大器 (PGA),開發(fā)人員可以有效地消除煙霧探測(cè)器設(shè)計(jì)中對(duì)外部模擬 IC 的需求。(圖片來源:Texas Instruments)
使用這種方法,開發(fā)人員幾乎可實(shí)現(xiàn)物聯(lián)網(wǎng)設(shè)計(jì)及可穿戴設(shè)備所需的全套模擬輸入和輸出電路。例如,開發(fā)人員可使用 MSP430FR2355 SAC 模塊,將復(fù)雜的模擬設(shè)計(jì)(如圖 1 所示的脈搏血氧計(jì))簡(jiǎn)縮成更緊湊的版本(圖 6)。除了 LED、光電二極管和相關(guān)電阻器外,設(shè)計(jì)人員只需 MCU 即可實(shí)現(xiàn)同樣的功能。
?
圖 6:開發(fā)人員可以使用 MSP430FR2355 MCU 及其 SAC 模塊,在需要多個(gè)輸出激勵(lì)源和多級(jí)輸入信號(hào)鏈的脈搏血氧計(jì)等設(shè)計(jì)中,大幅減少零件的數(shù)量。(圖片來源:Texas Instruments)
要評(píng)估 MSP430FR2355 MCU 及其 SAC 模塊的用途,開發(fā)人員可利用 Texas Instruments MSP-EXP430FR2355 LaunchPad 開發(fā)套件。該電路板設(shè)計(jì)用于加快原型開發(fā),包括基于 MSP430FR2355 的完整系統(tǒng),系統(tǒng)配有光傳感器、LED、按鈕(用于與簡(jiǎn)單示例應(yīng)用程序交互)以及用于軟件開發(fā)的板載調(diào)試探頭。
Grove 連接器可連接各種基于 Grove 的附加組件,TI BoosterPack 連接器則可讓開發(fā)人員通過 RF BoosterPacks 輕松擴(kuò)展基礎(chǔ)平臺(tái),從而實(shí)現(xiàn)無(wú)線連接。TI 還提供一組示例軟件應(yīng)用程序,這些程序設(shè)計(jì)用于在 LaunchPad 套件上立即運(yùn)行。除了運(yùn)行 LaunchPad 開發(fā)板之外,示例軟件還演示了基本設(shè)計(jì)模式,例如清單 3 代碼片段中顯示的 SAC 模塊互連方法。
結(jié)論
任何與現(xiàn)實(shí)世界交互的器件一般都需要模擬接口。然而,在針對(duì)可穿戴設(shè)備和物聯(lián)網(wǎng)設(shè)備的許多設(shè)計(jì)中,構(gòu)建這些接口所需的附加設(shè)備與更緊湊設(shè)計(jì)和減少零件數(shù)量的要求背道而馳。
通過配置集成在 Texas Instruments MSP430FR2355 MCU 中的模擬元件,開發(fā)人員通常只需添加幾個(gè)無(wú)源元件,即可實(shí)現(xiàn)這些設(shè)計(jì)所需的信號(hào)鏈功能。
評(píng)論