GD32E23x_Firmware_Library_V2.1.0 库中关于COMP接口的错误
本帖最后由 lyae 于 2024-12-21 16:40 编辑项目需要用到COMP,更新到最新库之后发现COMP的API是错误的,(库是最新的 GD32E23x_Firmware_Library_V2.1.0),其中当设置COMP的初始化时,
cmp_mode_init(CMP_ID, CMP_MODE_LOWSPEED, CMP_INVERTING_INPUT_PA0_PA2, CMP_HYSTERESIS_NO);
其中:
#define CMP_INVERTING_INPUT_PA0_PA2 CS_CMPXMSEL(6) /*!< CMP inverting input PA0 for CMP0 or PA2 for CMP1 */
意思是强制PA2 for CMP1,但问题是库里只有CMP0,没有CMP1,而实际芯片上是有CMP1的。
所以老的库在这里初始化反而是对的。
请问各位过来人这里有建议吗? 本帖最后由 zeshoufx 于 2024-12-22 11:34 编辑
E23x系列保包含3个子系列,E230、E231、和E235,从数据手册中看到E230只有一个比较器、E231有1个比较器和1-2个运放、E235有1个比较器;
从用户手册看,确实只有一个比较器,可以选择不同的引脚和
参考电压。
引脚配置如下
从这里看函数参数应该没问题,,只是官方注释让人产生误解
结果得
0x60二进制0110 0000,,,
查阅该型号的官方数据手册或技术规格书,以确认CMP外设的数量和配置。 检查固件库版本 检查固件库版本是否适用于你的MCU型号。 使用旧版固件库试试 联系技术支持 可以考虑使用其他外设或功能来替代CMP。例如,如果CMP用于模拟比较功能,你可以考虑使用ADC(模数转换器)或其他模拟电路来实现类似的功能。 多谢大家的回复!关键是我们电路上使用的是PA2,而新的固件库没办法使用PA2做为比较器的输入。。这就很奇怪了。Keil自带的1.0.2 版本反而是可以使用PA2作为比较器输入的。 本帖最后由 lyae 于 2024-12-25 14:42 编辑
zeshoufx 发表于 2024-12-22 10:55
E23x系列保包含3个子系列,E230、E231、和E235,从数据手册中看到E230只有一个比较器、E231有1个比较器和1- ...
非常感谢你的回复,我们使用的是 GD32E230C8T6,原来用keil 自带的1.0.2库是可以使用PA2作为比较器输入的。但如果用新的V2.1.0的版本反而不行。
你提示得好,我看一下是不是可以手动设置寄存器来选择PA2作为输入。如果使用V2.1.0 的API确实是不行。所以我想这可能是官方库的错误。
按API的说明,PA0对应COMP0,而PA2对应第二个比较器COMP1。。但实际上我们在老版库上是可以使用PA2作为比较器 COMP0的输入的。
多谢你的回复,对我帮助很大。
页:
[1]