一花一世界003 发表于 2015-2-16 12:29:31

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 */又字数超限制了

wambob 发表于 2015-2-16 12:31:12

字数超限,可以占楼再发

feel-376797 发表于 2015-2-16 15:14:44

谢谢分享

123tango 发表于 2015-2-16 15:27:55

谢谢分享

数码小叶 发表于 2015-2-16 17:08:21

谢谢分享

alvin_ 发表于 2015-2-16 17:35:02

感谢分享!

fjjjnk1234 发表于 2015-2-16 20:33:02

感谢分享!顶一个!

MouseCat 发表于 2015-2-17 00:22:38

谢谢分享

deepin666 发表于 2015-2-17 00:42:42

围观学习,谢谢分享!

一花一世界003 发表于 2015-2-17 08:27:11

直接通过CUBEMX配置非常简单
页: [1] 2
查看完整版本: HAL的DAC解说----二