本帖最后由 lf飞蝗腾达 于 2020-9-21 13:24 编辑
参考了技术文档(HC32F030系列用户手册Rev2.2.pdf)和参考工程之后还是存在一些感觉很奇怪的问题 ,发到论坛问一下各位。
1、OPA模块例化端口问题。想尝试一下这个芯片里的运算放大器功能,并将其配置为电压跟随器使用。但是在文档的第八章(端口控制器(GPIO))和第二十七章(运算放大器(OPA))中没有找到关于绑定引脚到OPA的具体描述。但是在工程中找到了这样的代码:
#define OP0_INP() { M0P_GPIO->PCADS_f.PC06 = 1; M0P_GPIO->PCDIR_f.PC06 = 1;}
#define OP0_INN() { M0P_GPIO->PBADS_f.PB15 = 1; M0P_GPIO->PBDIR_f.PB15 = 1;}
#define OP0_OUT() { M0P_GPIO->PCADS_f.PC07 = 1; M0P_GPIO->PCDIR_f.PC07 = 1;}
#define OP1_INP() { M0P_GPIO->PBADS_f.PB13 = 1; M0P_GPIO->PBDIR_f.PB13 = 1;}
#define OP1_INN() { M0P_GPIO->PBADS_f.PB12 = 1; M0P_GPIO->PBDIR_f.PB12 = 1;}
#define OP1_OUT() { M0P_GPIO->PBADS_f.PB14 = 1; M0P_GPIO->PBDIR_f.PB14 = 1;}
#define OP2_INP() { M0P_GPIO->PBADS_f.PB10 = 1; M0P_GPIO->PBDIR_f.PB10 = 1;}
#define OP2_INN() { M0P_GPIO->PBADS_f.PB02 = 1; M0P_GPIO->PBDIR_f.PB02 = 1;}
#define OP2_OUT() { M0P_GPIO->PBADS_f.PB11 = 1; M0P_GPIO->PBDIR_f.PB11 = 1;}
由代码的字面意思而言,为将端口配置为模拟模式(PxADS_f置高位),并设置为输入(PxDIR置高位)。芯片是如何做到将这些脚绑定到具体编号的OPA上的呢?二次开发的时候如何改动才是有效的?
2、ADC的校准问题。在调试ADC模块的时候,使用使用中断方式进行单次转换。芯片工作在5V,转换周期为AdcSampTime12Clk,待测点输入阻抗约为1M。在这个条件下发现所得测试结果漂移非常严重。将bAdcInBufEn配置为高,使用内部2.5V参考电压之后情况有好转,但是所得结果与电阻分压计算值有偏差。故尝试配置使用OPA进行电压跟随。但是还是存在这样的疑惑,这款芯片的ADC校准该如何实现,是否有类似STM32的校准方式?
3、GPIO设置引脚状态后,如何去使能,将其重新设置为高阻态(高阻输入模式)?,在文档中没找到相关的说明,还是说高阻输入(floating input)和真值表里的浮空输入是一个意思?(感觉是这样,但是还是希望文档能写的严谨一点)
最后,官网留的邮件地址好像发不了邮件,有人能帮忙测试一下吗
|