【问题标题】:Bit field defines for setting CLKPOL and CLKPHA to zero位域定义用于将 CLKPOL 和 CLKPHA 设置为零
【发布时间】:2020-08-05 16:31:25
【问题描述】:

我想在 efm32lg 控制器内部定义我的 USART0->CTRL 寄存器,即 CLKPOL 和 CLKPHA 将为零,如下表所示,但我看不到在下面的手册中定义的位域。 我在哪里可以获得为此目的定义的位字段。 谢谢。

https://docs.silabs.com/mcu/latest/efm32lg/group-USART

https://docs.silabs.com/mcu/latest/efm32lg/group-USART#gga9308807377a9f1b25c19bc60d9f64674a8084853059cd3bfd2fb020299d3da687

【问题讨论】:

  • 如果没有提供这些定义,您可以自己定义。您链接到的文档中有足够的示例。
  • 尝试对供应商提供的任何支持代码进行全文搜索,或者自己进行。他们定义的也有可能是模式常数结合了两者而不是单个位。如果你不喜欢他们的做法,那就做你喜欢做的事。

标签: embedded uart


【解决方案1】:

来自 EFM32GG11B 代码库。这可以从 GG11B 的 SiLabs 工作室看到。

//-----------------
spidrvClockMode0
//-----------------
typedef enum SPIDRV_ClockMode{
  spidrvClockMode0 = 0,           ///< SPI mode 0: CLKPOL=0, CLKPHA=0.
  spidrvClockMode1 = 1,           ///< SPI mode 1: CLKPOL=0, CLKPHA=1.
  spidrvClockMode2 = 2,           ///< SPI mode 2: CLKPOL=1, CLKPHA=0.
  spidrvClockMode3 = 3            ///< SPI mode 3: CLKPOL=1, CLKPHA=1.
} SPIDRV_ClockMode_t;
//-----------------
  if ( initData->clockMode == spidrvClockMode0 ) {
    usartInit.clockMode = usartClockMode0;
  }
//-----------------
ConfigGPIO()...
  if ( enable ) {
    if ( handle->initData.type == spidrvMaster ) {
      GPIO_PinModeSet((GPIO_Port_TypeDef)pins.mosiPort, pins.mosiPin,
                      gpioModePushPull, 0);
      GPIO_PinModeSet((GPIO_Port_TypeDef)pins.misoPort, pins.misoPin,
                      gpioModeInput, 0);
      
      if (    (handle->initData.clockMode == spidrvClockMode0)
              || (handle->initData.clockMode == spidrvClockMode1) ) {
        GPIO_PinModeSet((GPIO_Port_TypeDef)pins.clkPort, pins.clkPin,
                        gpioModePushPull, 0);
      } else {
        GPIO_PinModeSet((GPIO_Port_TypeDef)pins.clkPort, pins.clkPin,
                        gpioModePushPull, 1);
      }
//-----------------

  /* Set bits for synchronous mode. */
  usart->CTRL |= (USART_CTRL_SYNC)
                 | (uint32_t)init->clockMode
                 | (init->msbf ? USART_CTRL_MSBF : 0);

//-----------------

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-18
    • 2014-11-18
    • 2016-08-14
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多