MM32SPIN2x 電機(jī)專用MCU功能特色——電壓比較器
上一章節(jié)中已經(jīng)教大家如何使用MM32SPIN2x的硬件除法器和硬件開方器,本章節(jié)將與大家一起配置MM32SPIN2x的內(nèi)嵌比較器。電壓比較器能夠作為模擬電路與數(shù)字電路的接口,可以用作波形產(chǎn)生和變換電路,針對(duì)電機(jī)應(yīng)用中的過流比較等功能,MM32SPIN2x內(nèi)部集成了五個(gè)獨(dú)立的電壓比較器,使得單片機(jī)更加方便地和外部的模擬電路進(jìn)行連接,減小了單片機(jī)系統(tǒng)硬件電路設(shè)計(jì)的復(fù)雜性,縮小了單片機(jī)應(yīng)用系統(tǒng)的物理尺寸和物料成本。
芯片內(nèi)嵌五個(gè)通用比較器 COMP1、 COMP2、 COMP3、 COMP4 和 COMP5,可獨(dú)立使用(適用所有終端上的 I/O 口),也可與定時(shí)器結(jié)合使用。它們可用于多種功能,包括:
• 由模擬信號(hào)觸發(fā)低功耗模式喚醒事件
• 調(diào)節(jié)模擬信號(hào)
• 與定時(shí)器輸出的 PWM 相結(jié)合,組成逐周期的電流控制回路
• 支持五個(gè)獨(dú)立的比較器
MM32SPIN2x內(nèi)嵌比較器的反相輸入可選為內(nèi)部比較電壓 CRV 可選擇 AVDD 或者內(nèi)部基準(zhǔn)電壓Vref的分壓電壓值,這個(gè)功能可以起到窗口比較器的功能,也可以實(shí)現(xiàn)過流過壓保護(hù)和掉電保護(hù)等功能。輸出可以選擇為IO端口,也可以重定向到定時(shí)器的輸入端,或觸發(fā)外部中斷。比較器有可選的濾波周期和遲滯電壓,能夠最大程度的消除輸入電壓波動(dòng)帶來的干擾。四種工作模式,在具體應(yīng)用中可以通過調(diào)整比較器功耗和相應(yīng)時(shí)間得到最優(yōu)的結(jié)果。帶有比較器輪詢的功能,一個(gè)比較器可以分時(shí)復(fù)用實(shí)現(xiàn)多個(gè)比較器的功能。出于安全的考慮,在某些特定的有較高安全需求的應(yīng)用中,為了保證比較器設(shè)置不能被無(wú)效寄存器訪問或者程序計(jì)數(shù)器破壞所改變,可以將比較器控制和狀態(tài)寄存器設(shè)為寫保護(hù)(只讀)。
圖1 比較器框圖
MCU內(nèi)嵌三個(gè)單通道比較器和兩個(gè)四通道比較器, 功能包括:
• 由模擬信號(hào)觸發(fā)低功耗模式喚醒事件
• 調(diào)節(jié)模擬信號(hào)
• 定時(shí)器輸出的 PWM 相結(jié)合,組成逐周期的電流控制回路
• 支持五個(gè)獨(dú)立的比較器
• 軌對(duì)軌比較器
• 每個(gè)比較器有可選門限
– 可復(fù)用的 I/O 引腳
– 內(nèi)部比較電壓 CRV 可選擇 AVDD 或者內(nèi)部基準(zhǔn)電壓的分壓電壓值
• 可編程遲滯電壓
• 可編程的速率和功耗
• 支持比較結(jié)果的濾波功能
• 輸出端可以重定向到一個(gè) I/O 端口或多個(gè)定時(shí)器輸入端,可以觸發(fā)以下事件:
– 捕獲事件
– OCref_clr 事件(逐周期電流控制)
– 為實(shí)現(xiàn)快速 PWM 關(guān)斷的剎車事件
• 兩個(gè)比較器可以組合在一個(gè)窗口比較器中使用
• COMP1/2/3 只有一個(gè)正相輸入和一個(gè)反相輸入
• COMP4/5 有 4 個(gè)正相輸入和 4 個(gè)反相輸入,帶有輪詢功能:
– 可以實(shí)現(xiàn)定周期切換的輪詢功能
– 可控制輪詢通道 1/2/3 或 1/2
– 可選固定反向輸入端
• 每個(gè)比較器都可產(chǎn)生中斷,并支持把 CPU 從睡眠和停機(jī)模式喚醒(通過 EXTI 控制器)特別地,四通道比較器COMP4/5的輸入通道可以在普通模式通過軟件選擇,也可以在輪詢工作模式下通過硬件輪詢的方式分時(shí)檢測(cè)多個(gè)通道的比較結(jié)果,類似于多個(gè)比較器同時(shí)工作。
下面教大家如何配置使用MM32SPIN2x內(nèi)置比較器。
本文使用的是比較器4,首先打開比較器時(shí)鐘使能,然后通過配置寄存器COMP->COMP4_CSR來選擇比較器的正相輸入、反相輸入以及輸出,使用PA6作為COMP4正相輸入,CRV選擇1/2VDD作為比較器反相輸入,輸出腳使用IO口PA11,輸出濾波為64個(gè)時(shí)鐘周期,遲滯電壓90mv,消除電壓擾動(dòng)帶來的誤差。最后使能比較器,并打開比較器鎖,防止比較器配置被更改。
比較器配置代碼:
void Comp4_Config(void)
{
RCC->AHBENR |= RCC_AHBENR_GPIOAEN; //使能GPIO時(shí)鐘
RCC->APB2ENR |= RCC_APB2RSTR_CPTEN; //使能比較器時(shí)鐘
GPIOA->CRH &= 0xFFFF0FFF;
GPIOA->CRH |= 0x0000B000; //COMP4_OUT-PA11
GPIOA->AFRH &= 0xFFFF0FFF;//復(fù)位GPIOA端口復(fù)用功能寄存器
GPIOA->AFRH |= 0x00007000;
COMP->COMP4_CSR = 0x00000000; //復(fù)位比較器控制狀態(tài)寄存器
COMP->COMP4_CSR |= 1<<7;//COMP4_INP3(PA6)為比較器正相輸入
COMP->COMP4_CSR |= 3<<4;//CRV為比較器反相輸入
COMP->COMP4_CSR |= 4<<18;//比較器輸出濾波為64個(gè)時(shí)鐘周期
COMP->COMP4_CSR |= 3<<16;//比較器遲滯電壓90mv
COMP->COMP4_CSR |= 3<<2;//COMP4為高速率模式
COMP->COMP_CRV = 0x00000000;//復(fù)位比較器外部參考電壓寄存器
COMP->COMP_CRV |= 3<<4; //比較器外部參考電壓使能,選擇AVDD為比較器外部參考電壓源
COMP->COMP_CRV |= 9; //比較器外部參考電壓分壓選擇,為10/20AVDD
COMP->COMP4_CSR |= 0x1; //使能COMP4
COMP->COMP4_CSR |= 1<<31; //打開比較器寫保護(hù)
}
主程序:
int main(void)
{
delay_init();
Comp4_Config();
while(1)
{
;
}
}
將COMP4的正相輸入腳(PA6)接10KHz方波,使用內(nèi)部的CRV作為反相輸入的信號(hào)源,CRV選擇為1/2AVDD電壓。下圖是使用示波器觀察到的COMP4_OUT(PA11)引腳波形:
圖2 測(cè)試結(jié)果波形
通道1是正相輸入的100Hz方波,幅值4v的三角波行,通道2是比較器輸出腳的波形,且相較于輸入波形有600ns(64個(gè)時(shí)鐘周期濾波周期)左右滯后,符合程序設(shè)置。
編輯:admin 最后修改時(shí)間:2018-12-27