wsuocheng
发表于 2024-1-15 15:53:04
不知道这个1.19V高低温特性如何?
神农鼎
发表于 2024-1-15 15:58:25
抗温飘的, +-1%
注意,是假定2次采样转换期间 【ADC_VREF+ = ADC_VCC = MCU_VCC】不变
===所以对外部采样转换一次,也要对内部ADC15接的信号源立即采样转换一次
Honsiti
发表于 2024-1-17 17:41:53
void ADC_Init(){
P_SW2 |= 0x80;
//代码
P_SW2 &= 0x7f;
//代码
}
我想请教一下为什么P_SW2要先打开 bit7 位后在关闭bit7,可以不关闭吗??我不是太理解P_SW2 &= 0x7f; 的实际意义
神农鼎
发表于 2024-1-17 18:59:40
没必要关闭,我是建议不关闭
注意,是假定2次采样转换期间 【ADC_VREF+ = ADC_VCC = MCU_VCC】不变
===所以对外部采样转换一次,也要对内部ADC15接的信号源立即采样转换一次
LAOXU
发表于 2024-1-26 08:53:20
Honsiti 发表于 2024-1-17 17:41
void ADC_Init(){
P_SW2 |= 0x80;
//代码
一般用户使用(99%), 建议主函数 main入口(开始) , 就直接置位 P_SW2 |= 0x80;
然后不用管他(除非你用到片外扩展 XRAM).
乐此不疲
发表于 2024-4-4 22:04:17
LAOXU 发表于 2024-1-26 08:53
一般用户使用(99%), 建议主函数 main入口(开始) , 就直接置位 P_SW2 |= 0x80;
然后不用管他(除非你用到 ...
层主的意思是否就是我这样的配置:
void main()
{
GPIO_set(); //预置所有I/O口全部为准双向口
EAXSFR(); //允许访问扩展RAM区特殊功能寄存器( XFR)
********
EAXSFR();是官方头文件里定义好的,就是宏定义P_SW2 |= 0x80
而GPIO_set();是我自己在头文件里添加的宏定义,使用起来方便省事。
LAOXU
发表于 2024-4-5 04:04:03
乐此不疲 发表于 2024-4-4 22:04
层主的意思是否就是我这样的配置:
void main()
{
估计会出错, 因为 你的 GPIO_set(); 函数, 可能会用到 XFR定义.
正确方法是上下两行对换一下, EAXSFR(); 永远放在首行, 保险.
乐此不疲
发表于 2024-4-5 12:30:07
LAOXU 发表于 2024-4-5 04:04
估计会出错, 因为 你的 GPIO_set(); 函数, 可能会用到 XFR定义.
正确方法是上下两行对换一下, EAXSFR(); ...
多谢指点!目前使用还没发现有问题,但以后就把顺序改过来用好了,谢了。
乐此不疲
发表于 2024-4-5 12:36:41
本帖最后由 乐此不疲 于 2024-4-5 12:49 编辑
在此也把端口宏定义分享给大家,虽然班门弄斧但用起来真心方便也就不敢藏私了,也请大神把关指正:
#define GPIO_set() do{\
P0M0 = 0x00;\
P0M1 = 0x00;\
P1M0 = 0x00;\
P1M1 = 0x00;\
P2M0 = 0x00;\
P2M1 = 0x00;\
P3M0 = 0x00;\
P3M1 = 0x00;\
P4M0 = 0x00;\
P4M1 = 0x00;\
P5M0 = 0x00;\
P5M1 = 0x00;\
P6M0 = 0x00;\
P6M1 = 0x00;\
P7M0 = 0x00;\
P7M1 = 0x00;\
}while(0)
神农鼎
发表于 2024-5-26 21:38:44
外部固定,就可以知到内部1.19V实际是多少/也可以校准,
内部校准固定后,也就可以反推外部了
每个MCU个体不一样,这个1.19V 是出厂时校准的,
可能 1.190V, 可能 1.191V, 可能 1.189V, 1.188V,
读出来的值是出厂时校准后的最优值,但不可能全是 1.190V,
只会是这附近