ch32v203 adc 初始化的坑

void ADC_Init(ADC_TypeDef *ADCx, ADC_InitTypeDef *ADC_InitStruct)

{

    uint32_t tmpreg1 = 0;

    uint8_t  tmpreg2 = 0;


    tmpreg1 = ADCx->CTLR1;

    tmpreg1 &= CTLR1_CLEAR_Mask;

    tmpreg1 |= (uint32_t)(ADC_InitStruct->ADC_Mode | (uint32_t)ADC_InitStruct->ADC_OutputBuffer |

                          (uint32_t)ADC_InitStruct->ADC_Pga | ((uint32_t)ADC_InitStruct->ADC_ScanConvMode << 8));

    ADCx->CTLR1 = tmpreg1;

...

}

ADC_OutputBuffer,ADC_Pga没有初始化 也没有 and 位 直接 or

可能想象不到的错误


void ADC_StructInit(ADC_InitTypeDef *ADC_InitStruct)

{

    ADC_InitStruct->ADC_Mode = ADC_Mode_Independent;

    ADC_InitStruct->ADC_ScanConvMode = DISABLE;

    ADC_InitStruct->ADC_ContinuousConvMode = DISABLE;

    ADC_InitStruct->ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;

    ADC_InitStruct->ADC_DataAlign = ADC_DataAlign_Right;

    ADC_InitStruct->ADC_NbrOfChannel = 1;

}

自带的函数 也没有对 ADC_OutputBuffer,ADC_Pga没有初始化


例子也没有初始化 这两个参数 ADC_OutputBuffer,ADC_Pga


*** 严重表示不满 折腾了一天才找出来 ***

你好,pga为我们芯片特有功能,我们是为了保持库的兼容性,如若使用pga,可直接使能buffer后对寄存器操作

image.png


你跟我说的我知道,关键你们的文档要改,库函数要改,例程也要改.

这么明显的错漏有什么好解释的.

我也是想着同行们别跟我踩同样的坑.


沁恒公开的代码都是存在很多问题,不是你一个发现,我公司的几个前辈就跟我们说过,用沁恒做不的项目,我开始也想用554 usb_cdc做项目,花了差不多半个月了,结果还是掉坑里了,用官方代码就是因有USB收发数据没的响应的BUG。最后还是改用其他晶片,一天完成。真搞不明是沁恒的工程师是技术问题还是技术保留???其实沁恒为什么要给用户踩坑????????????????????????


USB-CDC昨天刚发了个贴,USB接收时效性很高,基本没法实用.还是改为增加CH340做USB-TTL做前端.不过WCH的芯片还是很牛的,应该是部分功能和代码还待改进.我也用CH32F103和CH559做了很多案子,现在刚改用V系列,目前CH32V003,CH32V203和CH32V307各开发了一个方案.


垃圾玩意,放弃CH32 Q 我也是ADC搞得头痛


CH552的历程里也是,收发长度只有一个字节,超过256的描述符必爆掉


@7# 

554问题可以测试官网最新的例程,早先做过了修改。将此处的长度限制去掉,即可发送256以上的描述符。收发长度只有1个字节的问题可以再具体描述下。

image.png


只有登录才能回复,可以选择微信账号登录