查看: 2352|回复: 0

NXP S08P-LITE-V3开发板试用 4、ADC电压采样

[复制链接]
  • TA的每日心情
    开心
    2 小时前
  • 签到天数: 1057 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2018-11-14 22:38:58 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 TLLED 于 2018-11-14 22:38 编辑

        ADC电压采集测试,使用板子上的电位器来调整电压,串口输出采样到的电压值。


        一、硬件电路
             1.png


            电位器电压采集端口是ADP12
             2.png
        二、软件部分

            2.1、程序初始化与读取函数
    1. void Init_ADC(void)
    2. {
    3.         uint8_t temp;
    4.         ADC_APCTL1 = 0x00;         
    5.         ADC_APCTL2 = 0x00;
    6.         ADC_SC3    = 0x58;
    7.        
    8.         temp = ADC_APCTL2;
    9.         temp |= (1<<4);                        //ADPC12
    10.         ADC_APCTL2 = temp;
    11. }

    12. unsigned short ADC_ReadDat( unsigned char channel)
    13. {
    14.         ADC_SC1 = channel; // initial the ADC conversion,select Vrefh
    15.         while( !ADC_SC1_COCO );
    16.         return ADC_R;
    17. }
    复制代码

            程序中使用到的寄存器:        
            引脚控制寄存器1---ADC_APCTL1 配置ADPC0-ADPC7引脚。
             101.png
            引脚控制寄存器2---ADC_APCTL2 配置ADPC8-ADPC15引脚。
             102.png
           状态与控制寄存器1
           103.png
             104.png      
             105.png
            状态与寄存器3
           106.png
             107.png
             108.png


            2.2、主程序部分
            
    1. <font size="3">void main(void)
    2. {
    3.     uint8_t i = 0;
    4.     uint8_t j=0;
    5.     uint32_t cnt=0;
    6.     uint16_t adc_val=0;
    7.     //char adc_buf[10];
    8.     float adc_val1=0;
    9.     uint16_t adc_val2=0;
    10.    
    11.     uint8_t u8IRDATxCnt = 0;
    12.    
    13.     volatile uint8_t w25q32_id = 0;
    14.     volatile unsigned char dummy;
    15.     unsigned short uiCount;
    16.    
    17.     //Initialize system including clocks
    18.     //Watchdog: disabled
    19.     //FEE: BUS clock 16MHz
    20.     //Serial terminal: SCI2 baudrate 9600
    21.     Sys_Init();
    22.     EnableInterrupts;

    23.     printf("\n-- S08-LITE FAT BEGINS --\n");
    24.     printf("\n");

    25.    
    26.     printf("adc test \n");
    27.     Init_ADC();                //初始化ADC
    28.     for(i=0;i<100;i++)
    29.     {
    30.             adc_val=ADC_ReadDat(12);
    31.             printf("adc_val = %x \n    ",adc_val);
    32.             for(cnt=0;cnt<10000;cnt++);
    33.     }
    复制代码


        三、执行结果

            调节板子上的电位器, 串口数值变化。
             201.png
















    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-4-26 23:44 , Processed in 0.103755 second(s), 15 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.