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,
只会是这附近


页: 1 [2] 3 4 5
查看完整版本: 利用ADC15通道在内部固定接的1.19V辅助固定信号源,反推其他通道的输入电压或VCC