⑴ 我使用的单片机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也是这样。