VECENT_LIN
发表于 2023-6-21 11:11:15
void ADC_Config()
{
P1M1 = 0x08;P1M0 = 0x00; // P1.3设置为高阻输入模式
ADCTIM = 0x3F; // ADC时序设置:通道选择时间:1个时钟,通道保持时间:4个时钟,采样时间:32个时钟
ADCCFG = 0x2F; // ADC频率设置:系统时钟/2/16,数据右对齐
ADC_CONTR = 0xC3;
}
梁工,你好!这样设置P1.3口ADC转换启动应该没问题吧?
梁工
发表于 2023-6-21 12:19:45
VECENT_LIN 发表于 2023-6-21 11:11
void ADC_Config()
{
P1M1 = 0x08;P1M0 = 0x00; // P1.3设置为高阻输入模式
请参考我的例程:
#define ADC_START (1<<6) /* 自动清0 */
#define ADC_FLAG (1<<5) /* 软件清0 */
#define ADC_SPEED 1 /* 0~15, ADC时钟 = SYSclk/2/(n+1) */
#define RES_FMT (1<<5) /* ADC结果格式 0: 左对齐, ADC_RES: D9 D8 D7 D6 D5 D4 D3 D2, ADC_RESL: D1 D0 000000 */
/* 1: 右对齐, ADC_RES: 000000D9 D8, ADC_RESL: D7 D6 D5 D4 D3 D2 D1 D0 */
#define CSSETUP (0<<7) /* 0~1,ADC通道选择时间 0: 1个ADC时钟, 1: 2个ADC时钟,默认0(默认1个ADC时钟) */
#define CSHOLD (1<<5) /* 0~3,ADC通道选择保持时间(n+1)个ADC时钟, 默认1(默认2个ADC时钟) */
#define SMPDUTY 20 /* 10~31, ADC模拟信号采样时间(n+1)个ADC时钟, 默认10(默认11个ADC时钟) */
/* ADC转换时间: 10位ADC固定为10个ADC时钟, 12位ADC固定为12个ADC时钟. */
P_SW2 |=0x80; //访问XSFR
P1n_pure_input(0x40); //设置要做ADC的IO做高阻输入
ADC_CONTR = 0x80 + 6; //ADC on + channel
ADCCFG = RES_FMT + ADC_SPEED;
ADCTIM = CSSETUP + CSHOLD + SMPDUTY;
VECENT_LIN
发表于 2023-6-21 13:57:44
梁工 发表于 2023-6-21 12:19
请参考我的例程:
#define ADC_START (1
音频输入可以直接接P1.3口或P1.6口吗?
梁工
发表于 2023-6-21 14:02:58
VECENT_LIN 发表于 2023-6-21 13:57
音频输入可以直接接P1.3口或P1.6口吗?
任意一个ADC输入口都可以采集音频信号。
VECENT_LIN
发表于 2023-6-23 10:08:10
梁工 发表于 2023-6-21 14:02
任意一个ADC输入口都可以采集音频信号。
已经调试好了,谢谢!
神农鼎
发表于 2023-6-23 10:19:07
开心,一起前进
405616736
发表于 2023-7-18 09:20:21
读取交流电adc的均方根就是交流电的有效值吗?
梁工
发表于 2023-7-18 11:35:51
本帖最后由 梁工 于 2023-7-18 17:08 编辑
405616736 发表于 2023-7-18 09:20
读取交流电adc的均方根就是交流电的有效值吗?
是的,详情可以翻翻《电工学》中相关章节,有效值就是一个积分,程序用离散方式实现,就是采样计算均方根值。
faddei
发表于 2023-7-18 16:08:17
学习学习学习学习学习
kongming
发表于 2023-7-19 16:11:36
学习了