搜索

[技术问答] 新唐M031芯片AD采集问题

[复制链接]
870|18
 楼主 | 2020-6-28 11:03 | 显示全部楼层 |阅读模式
第一次使用M031SG6AE这款芯片,现在问题是采集AD时,读回的值固定是0XFFF,基准电压3.3V正常,电位器控制有效(芯片脚电压随动),用的是内部RC振荡作时钟源。

使用特权

评论回复
 楼主 | 2020-6-28 11:08 | 显示全部楼层
电路
QQ截图20200628105832.png

使用特权

评论回复
 楼主 | 2020-6-28 11:12 | 显示全部楼层




void SYS_Init(void)
{
    /* Unlock protected registers */
    SYS_UnlockReg();

    /* Enable HIRC clock (Internal RC 48MHz) */
    CLK_EnableXtalRC(CLK_PWRCTL_HIRCEN_Msk);

    /* Wait for HIRC clock ready */
    CLK_WaitClockReady(CLK_STATUS_HIRCSTB_Msk);

    /* Select HCLK clock source as HIRC and HCLK source divider as 1 */
    CLK_SetHCLK(CLK_CLKSEL0_HCLKSEL_HIRC, CLK_CLKDIV0_HCLK(1));

    /* Enable UART0 clock */
    CLK_EnableModuleClock(UART0_MODULE);
    CLK_EnableModuleClock(UART1_MODULE);

        CLK_EnableModuleClock(TMR0_MODULE);

        CLK_EnableModuleClock(ADC_MODULE);

    /* Switch UART0 clock source to HIRC */
    CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART0SEL_HIRC, CLK_CLKDIV0_UART0(1));
    CLK_SetModuleClock(UART1_MODULE, CLK_CLKSEL1_UART1SEL_HIRC, CLK_CLKDIV0_UART0(1));

    CLK_SetModuleClock(TMR0_MODULE, CLK_CLKSEL1_TMR0SEL_HIRC, 0);
       
        CLK_SetModuleClock(ADC_MODULE, CLK_CLKSEL2_ADCSEL_HIRC, CLK_CLKDIV0_ADC(1));

    /* Update System Core Clock */
    SystemCoreClockUpdate();

        SYS->GPA_MFPH = (SYS->GPA_MFPH & ~(SYS_GPA_MFPH_PA15MFP_Msk | SYS_GPA_MFPH_PA14MFP_Msk \
                                        | SYS_GPA_MFPH_PA8MFP_Msk | SYS_GPA_MFPH_PA9MFP_Msk))| \
                                        (SYS_GPA_MFPH_PA15MFP_UART0_RXD | SYS_GPA_MFPH_PA14MFP_UART0_TXD \
                                        | SYS_GPA_MFPH_PA8MFP_UART1_RXD | SYS_GPA_MFPH_PA9MFP_UART1_TXD);
       
        SYS->GPB_MFPL = (SYS->GPB_MFPL & ~(SYS_GPB_MFPL_PB0MFP_Msk | SYS_GPB_MFPL_PB1MFP_Msk | SYS_GPB_MFPL_PB2MFP_Msk | SYS_GPB_MFPL_PB3MFP_Msk|SYS_GPB_MFPL_PB4MFP_Msk | SYS_GPB_MFPL_PB5MFP_Msk | SYS_GPB_MFPL_PB6MFP_Msk | SYS_GPB_MFPL_PB7MFP_Msk)) |
                                                (SYS_GPB_MFPL_PB0MFP_ADC0_CH0 | SYS_GPB_MFPL_PB1MFP_ADC0_CH1 | SYS_GPB_MFPL_PB2MFP_ADC0_CH2 | SYS_GPB_MFPL_PB3MFP_ADC0_CH3|SYS_GPB_MFPL_PB4MFP_ADC0_CH4 | SYS_GPB_MFPL_PB5MFP_ADC0_CH5 | SYS_GPB_MFPL_PB6MFP_ADC0_CH6 | SYS_GPB_MFPL_PB7MFP_ADC0_CH7);

         GPIO_SetMode(PB, BIT0, GPIO_MODE_INPUT);
         GPIO_SetMode(PB, BIT1, GPIO_MODE_INPUT);
         GPIO_SetMode(PB, BIT2, GPIO_MODE_INPUT);
         GPIO_SetMode(PB, BIT3, GPIO_MODE_INPUT);
         GPIO_SetMode(PB, BIT4, GPIO_MODE_INPUT);
         GPIO_SetMode(PB, BIT5, GPIO_MODE_INPUT);
         GPIO_SetMode(PB, BIT6, GPIO_MODE_INPUT);
         GPIO_SetMode(PB, BIT7, GPIO_MODE_INPUT);
         
         GPIO_DISABLE_DIGITAL_PATH(PB, BIT0|BIT1|BIT2|BIT3|BIT4|BIT5|BIT6|BIT7);
    /* Lock protected registers */
    SYS_LockReg();
}
void adc_conversion(void)

{
                ADC_Open(ADC, ADC_ADCR_DIFFEN_SINGLE_END, ADC_ADCR_ADMD_SINGLE,0xff);       
                ADC_START_CONV(ADC);
                ADC_CLR_INT_FLAG(ADC, ADC_ADF_INT);
                ADC_START_CONV(ADC);
                delay_1ms(20);
                ConversionData = ADC_GET_CONVERSION_DATA(ADC, 0);
                printf("Conversion result of channel : 0x%X (%d)\n", ConversionData, ConversionData);
                ADC_STOP_CONV(ADC);
                ADC_CLR_INT_FLAG(ADC, ADC_ADF_INT);

}




使用特权

评论回复
 楼主 | 2020-6-28 11:15 | 显示全部楼层
每次串口调试打印的值都是0XFFF,未能找到原因。

使用特权

评论回复
| 2020-6-28 11:56 | 显示全部楼层
先不说这么多,你先跑个官方例子看看能否读出来,这样好确认是软件问题还是硬件问题。

使用特权

评论回复
| 2020-6-28 12:09 | 显示全部楼层
拿官方的ad例程写进去试试,看不出代码有什么问题。

使用特权

评论回复
| 2020-6-28 12:56 | 显示全部楼层
你要先排除是软件问题还是硬件问题。

使用特权

评论回复
 楼主 | 2020-6-28 13:33 | 显示全部楼层
734774645 发表于 2020-6-28 11:56
先不说这么多,你先跑个官方例子看看能否读出来,这样好确认是软件问题还是硬件问题。 ...

官方AD程序跑出来也是0XFFF

使用特权

评论回复
 楼主 | 2020-6-28 13:34 | 显示全部楼层
余三水 发表于 2020-6-28 12:09
拿官方的ad例程写进去试试,看不出代码有什么问题。

试过官方的例程了,也是一样的结果。

使用特权

评论回复
 楼主 | 2020-6-28 15:46 | 显示全部楼层
稳稳の幸福 发表于 2020-6-28 12:56
你要先排除是软件问题还是硬件问题。

就是单端输入接入,我量了电压都是正确的,基准电压也有3.3V,硬件应该没什么问题,但是我用官方例程也没有跑通(值也是0XFFF),所以就没想明白,卡住了。

使用特权

评论回复
| 2020-6-28 18:25 | 显示全部楼层
楼主有这个芯片的开发板没,官方的,先试试看。如果官方板子没问题,那就是你的板子有问题。

使用特权

评论回复
 楼主 | 2020-6-28 19:06 | 显示全部楼层
找到问题了,谢谢各位,是硬件设计有点问题,58脚(VREF)接个上拉就可以了。

使用特权

评论回复
| 2020-6-28 19:56 | 显示全部楼层
muzili588 发表于 2020-6-28 19:06
找到问题了,谢谢各位,是硬件设计有点问题,58脚(VREF)接个上拉就可以了。 ...

是啊,这个要接到VACC,没有接参考电压无法给出测量结果。

使用特权

评论回复
| 2020-6-28 19:57 | 显示全部楼层
所以遇到这个问题就是先跑官方例子,看看有没有问题,如果有问题就是硬件问题,如果没有问题,才开始查找软件问题。

使用特权

评论回复
| 2020-6-28 21:10 | 显示全部楼层
除了STC出纯中文单片机开发文档,国内还有哪个厂子出纯中文的开发文档的?不是翻译的中文的。
谁知道告诉下。

使用特权

评论回复
| 2020-6-28 22:15 | 显示全部楼层
ko44 发表于 2020-6-28 21:10
除了STC出纯中文单片机开发文档,国内还有哪个厂子出纯中文的开发文档的?不是翻译的中文的。
谁知道告诉下 ...

新唐啊

使用特权

评论回复
| 2020-6-29 17:26 | 显示全部楼层
多谢分享经验

使用特权

评论回复
| 2020-6-29 21:38 | 显示全部楼层

坑我,
就烧录器是它的公司开发的,有个中文文档。
单片机的功能文档以及使用说明,还是英文的。挂国产的洋货。

使用特权

评论回复
| 2020-6-29 22:01 | 显示全部楼层
找代理FAE  qq1593449604

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表