我有一个STM32L051,想驱动一个外部DAC(SPI)。
为此,我想使用manual中提到的功能将内部参考电压输出到STM32的PB1引脚。
我使用STM32Cube HAL作为基础。但是,使用VREF的示例仅限于ADC和比较器内部使用。
如果我理解正确,我可以使用CFGR3寄存器来启用VREF并将其连接到PB1。使用多维数据集驱动程序,我可以使用HAL_SYSCFG_VREFINT_OutputSelect(SYSCFG_VREFINT_OUT_PB1)
函数,但是要启用它,我应该使用HAL_ADCEx_EnableVREFINT()
或HAL_COMPEx_EnableVREFINT()
。 SEL_VREF_OUT
上的手册信息指示必须设置ENBUF_VREFINT_ADC
。
此外,未提及销本身的构造。我应该简单地将其声明为DAC引脚吗? ADC引脚?
最佳答案
回答
就这么简单
if ( HALD_ADCEx_EnableVREFINT() != HAL_OK )
{
Error_Handling();
}
HAL_SYSCFG_VREFINT_OutputSelect(SYSCFG_VREFINT_OUT_PB1);
我可以在PB1输出上看到1.22V。
它不需要进一步的引脚(GPIO)配置。
问题的复杂性和理由(可以跳过)
我在电子部门的董事会中遇到了一些问题。从而切换到STM32L053-发现板。上面的解决方案不起作用,我一直在PB1(或PB0)上看到0V。
我认为那是由于缺少一些配置。但是,经过一些进一步的测试,我实际上发现在该发现板上,PB1和PB0都保留用于传感器。通过关闭SB23桥,我可以将PB1用作GPIO,从而查看引脚上的参考电压。