⑴ 我使用的單片機AD採集的數據儲存到寄存器中的是u16(無符號16位),但是在運算中是float,怎麼解決類型轉換
「單片機AD採集的數據儲存到寄存器中的是u16(無符號16位)」
這個是指采樣得到的數字量讀數,要換算後才能得到實際的模擬值。例如16位ADC的采樣范圍是0~3.3V,那麼每個bit對應於50μV。當讀數為0x0123、即十進制的291時,代表此時采樣電壓為14.55mV左右。
「在運算中是float的」
這要看你運算中取用數據的要求。假如你運算時直接要以mV或μV為單位進行運算,例如上面的例子,你就需要將採集的u16值0x0123轉換為float型代表的14.55。這個轉換過程就需要你編寫函數進行轉換,而不是直接強轉的。
⑵ GD32單片機由帶16位AD轉換器的型號嗎
推薦你用EN8F158,這顆雖然只有10位AD但是空間有4k,有AD和EEPROM 還有PWM,關鍵是價格還合適
精簡指令集架構
8 層硬體堆棧 x12bit
2T 或 4T 指令周期
4Kx14b 程序存儲空間
i. 程序存儲空間的 checksum 自動校驗
ii. 可配置,User Option
256x8b 數據 EEPROM
i. 數據 EEPROM 在應用編程
ii. 可配置,Factory Option
高耐用性 EEPROM
i. 程序和數據 EEPROM 可經受 100 萬次寫操作
ii. EEPROM 保存時間>40 年
256x8b SRAM
1 x 帶 8 位預分頻的定時器 0
1 x 帶 3 位預分頻的 16 位定時器 1
1 x 帶 8 位預分頻的
定時器 2 i.
慢時鍾周期測量模式
增強性捕捉、比較和可編程 ― 死區 ‖ 時間的 PWM 模塊
i. 時鍾源可選:系統時鍾或者是內部 32MHz 時鍾
ii. 單次脈沖模式
iii. 最多 3 對帶 ― 死區 ‖ 的 PWM 輸出
4x12bit Timer,4x12bit PWM,支持 BUZZER 模式
i. 支持每組 PWM 的互補脈沖輸出
ii. 時鍾最快 32M
iii. 外設時鍾輸出
1x9bit 可編程脈沖發生器(PPG)
i. 兩個重載寄存器
ii. 脈沖極性可選擇
iii. 支持脈寬限制
iv. 支持不可重復觸發模式
v. 手動觸發方式和比較器結果觸發方式
帶 7 位預分頻的 WDT,溢出頻率范圍為 16ms~256s
上電延遲計數器 PWRT
低功耗模式 SLEEP
多個喚醒源,外部中斷 INT、埠變化中斷、WDT 和數據 EEPROM 寫完成,等等
i. 可配置硬體去抖的外部中斷 INT
內置高速 16M RC 振盪器
內置低速 32K RC 振盪器
支持外部晶振 16M 或 32K,以及外部時鍾模
式 i. 時鍾缺失檢測
⑶ 現在的單片機都有16通道單端/差分ADC,這個16通道是指什麼意思了呢,可以16AD採集通
你知道ADC0809吧?這個ADC有8個模擬輸入端,所以叫8通道。單片機內部的ADC也是這樣。