松翰单片机_SN8F570310——ADC
SN8F570310——ADC
平台:松翰 SN8F570310
官网:http://www.sonix.com.tw/masterpage-tw
代码示例:
#include "Equ.h" /* 硬件: P13 AIN10 */ /* 1 将 ADC 输入通道设置为输入模式(由 PnM 寄存器设置); 2 必须禁止 ADC 输入通道的内部上拉电阻(由 PnUR 寄存器设置); 3 选择和使能 ADC 输入通道(由 CHS[3:0]位和 GCHS 位设置); 4 必须将 ADC 模拟输入通道的控制位设置为 1(由 PnCON 寄存器设置); 5 选择 ADC 高参考电压(由 VREFH 寄存器设置); 6 选择 ADC 时钟频率(由 ADCKS[1:0]位设置); 7 设置 ADENB 位后, ADC 准备开始转换。 */ void adc_init(void) { P1M &= ~0x08; //1.输入模式 P1UR &= ~0x08; //2.禁止上拉 ADM |= 0x8A; //3.选择和使能 ADC 输入通道 1010 P1CON |= 0x08; //4.模拟输入通道的控制位设置为 1 VREFH = 1<<2; //5.高参考电压 VDD ADR = 1<<6 | 2<<4 ; //6.ADC 时钟频率 IEN2 = 3<<1; //开启ADC中断 ADM |= 0X40; //7.开始转换 } void ADCInterrupt(void) interrupt ISRAdc { unsigned int ADCBuffer = 0; // data buffer unsigned long p; if ((IRCON2 &0x01) == 0x01){ IRCON2 &= ~0x01; //清除ADC标志位 ADCBuffer = (ADB << 4) | (ADR &0x0f); for(p=0;p<30000;p++){} for(p=0;p<30000;p++){} S0BUF = ADCBuffer; ADM &= ~0X20; //转换结束,手动清零 ADM |= 0X40; //开始转换 } }
测试:
复位按键和电源
笔记:
1. 11个输入通道,12位数字信号采集所以分辨率为2^12=4096 ,参考高压可设置与参考低压为零,则将外部电压(参考低压—参考高压)转换为12位数字信号(0—4096);
Stay hungry, stay foolish
待续。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!