HAL的DAC解说----二
static void DAC_Ch1_EscalatorConfig(void)
{
/*##-1- Initialize the DAC peripheral ######################################*/
if (HAL_DAC_Init(&DacHandle) != HAL_OK)
{
/* Initiliazation Error */
Error_Handler();
}
/*##-1- DAC channel1 Configuration #########################################*/
sConfig.DAC_Trigger = DAC_TRIGGER_T6_TRGO;
sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE;
if (HAL_DAC_ConfigChannel(&DacHandle, &sConfig, DACx_CHANNEL) != HAL_OK)
{
/* Channel configuration Error */
Error_Handler();
}
/*##-2- Enable DAC Channel1 and associeted DMA #############################*/
if (HAL_DAC_Start_DMA(&DacHandle, DACx_CHANNEL, (uint32_t *)aEscalator8bit, 6, DAC_ALIGN_8B_R) != HAL_OK)
{
/* Start DMA Error */
Error_Handler();
}
}
其中
#defineDAC_CR_TEN1 ((uint32_t)0x00000004) /*!< DAC channel1 Trigger enable */
#defineDAC_CR_EN1 ((uint32_t)0x00000001) /*!< DAC channel1 enable */
The DAC channel can be powered on by setting the EN1 bit in the DAC_CR register. The DAC channel is then enabled after a startup time tWAKEUP.
所以在使用基准电压的时候可以使能DAC_XCR_EN1;
#define DAC_TRIGGER_T6_TRGO ((uint32_t)DAC_CR_TEN1) /*!< TIM6 TRGO selected as external conversion trigger for DAC channel */
意思就是:
DAC整合输出缓冲区,可以不使用一个外部的运算放大器,而用来降低输出阻抗和直接驱动外部负载。缓冲区可以绕过通过配置BOFFx位DAC_CR配置。
侃了这么多,重点来了,就是这几个寄存器的情况。顺便就可以写它的定义了#defineDAC_CR_BOFF1 ((uint32_t)0x00000002) /*!< DAC channel1 output buffer disable */#defineDAC_CR_TEN1 ((uint32_t)0x00000004) /*!< DAC channel1 Trigger enable */
#defineDAC_CR_TSEL1 ((uint32_t)0x00000038) /*!< TSEL1 (DAC channel1 Trigger selection) */#defineDAC_CR_TSEL1_0 ((uint32_t)0x00000008) /*!< Bit 0 */#defineDAC_CR_TSEL1_1 ((uint32_t)0x00000010) /*!< Bit 1 */#defineDAC_CR_TSEL1_2 ((uint32_t)0x00000020) /*!< Bit 2 */
#defineDAC_CR_WAVE1 ((uint32_t)0x000000C0) /*!< WAVE1 (DAC channel1 noise/triangle wave generation enable) */#defineDAC_CR_WAVE1_0 ((uint32_t)0x00000040) /*!< Bit 0 */#defineDAC_CR_WAVE1_1 ((uint32_t)0x00000080) /*!< Bit 1 */
#defineDAC_CR_MAMP1 ((uint32_t)0x00000F00) /*!< MAMP1 (DAC channel1 Mask/Amplitude selector)*/#defineDAC_CR_MAMP1_0 ((uint32_t)0x00000100) /*!< Bit 0 */#defineDAC_CR_MAMP1_1 ((uint32_t)0x00000200) /*!< Bit 1 */#defineDAC_CR_MAMP1_2 ((uint32_t)0x00000400) /*!< Bit 2 */#defineDAC_CR_MAMP1_3 ((uint32_t)0x00000800) /*!< Bit 3 */
#defineDAC_CR_DMAEN1 ((uint32_t)0x00001000) /*!< DAC channel1 DMA enable */#defineDAC_CR_DMAUDRIE1 ((uint32_t)0x00002000) /*!< DAC channel1 DMA Underrun Interrupt enable */
#defineDAC_CR_EN2 ((uint32_t)0x00010000) /*!< DAC channel2 enable */#defineDAC_CR_BOFF2 ((uint32_t)0x00020000) /*!< DAC channel2 output buffer disable */#defineDAC_CR_TEN2 ((uint32_t)0x00040000) /*!< DAC channel2 Trigger enable */
#defineDAC_CR_TSEL2 ((uint32_t)0x00380000) /*!< TSEL2 (DAC channel2 Trigger selection) */#defineDAC_CR_TSEL2_0 ((uint32_t)0x00080000) /*!< Bit 0 */#defineDAC_CR_TSEL2_1 ((uint32_t)0x00100000) /*!< Bit 1 */#defineDAC_CR_TSEL2_2 ((uint32_t)0x00200000) /*!< Bit 2 */
#defineDAC_CR_WAVE2 ((uint32_t)0x00C00000) /*!< WAVE2 (DAC channel2 noise/triangle wave generation enable) */#defineDAC_CR_WAVE2_0 ((uint32_t)0x00400000) /*!< Bit 0 */#defineDAC_CR_WAVE2_1 ((uint32_t)0x00800000) /*!< Bit 1 */
#defineDAC_CR_MAMP2 ((uint32_t)0x0F000000) /*!< MAMP2 (DAC channel2 Mask/Amplitude selector) */#defineDAC_CR_MAMP2_0 ((uint32_t)0x01000000) /*!< Bit 0 */#defineDAC_CR_MAMP2_1 ((uint32_t)0x02000000) /*!< Bit 1 */#defineDAC_CR_MAMP2_2 ((uint32_t)0x04000000) /*!< Bit 2 */#defineDAC_CR_MAMP2_3 ((uint32_t)0x08000000) /*!< Bit 3 */
#defineDAC_CR_DMAEN2 ((uint32_t)0x10000000) /*!< DAC channel2 DMA enabled */#defineDAC_CR_DMAUDRIE2 ((uint32_t)0x20000000) /*!< DAC channel2 DMA Underrun Interrupt enable */又字数超限制了
字数超限,可以占楼再发 谢谢分享 谢谢分享 谢谢分享 感谢分享! 感谢分享!顶一个! 谢谢分享 围观学习,谢谢分享! 直接通过CUBEMX配置非常简单
页:
[1]
2