December 23rd, 2017

ST BlueNRG-1 Ставим UART скорость 9600, получаем 4800 бод.

Одна интересная особенность BlueNRG-1, которая не отражена в документации.
Заставила долго "попотеть".

Вот простейший код, основанный на коде примера:
Project\BlueNRG1_Periph_Examples\Micro\Hello_World
/**
  * @brief  Main program.
  * @param  None
  * @retval None
  */
int main(void)
{
  uint32_t counter = 0; 
  /* System initialization function */
  SystemInit();
  UART->CR_b.OVSFACT = 0;
  
  /* Identify BlueNRG1 platform */
  SdkEvalIdentification();
  
  /* UART initialization */
  SdkEvalComUartInit(UART_BAUDRATE);
  
  /* infinite loop */
  while(1) 
  {
    if (counter == 0 )
      printf("A");
    counter = (counter +1) % 0xFFFFF;
  }  
}

Collapse )

UPDATE:
Поскольку тут налетела толпа невежд, кто-то утверждает что клок UART изменить нельзя, кто-то указывает на схему клока и говорит что можно, при этом не говорит как именно его изменить...
Специально по заявкам таких телезрителей, привожу кусок из заголовочного файла BlueNRG1
typedef struct {                                    /*!< CKGEN_SOC Structure                                                   */
  
  union {
    __IO uint32_t  CONTROL;                         /*!< Control clock and reset of SOC                                        */
    
    struct {
           uint32_t             : 10;
      __IO uint32_t  UART_CKDIV :  4;               /*!< UART baud rate clock setting from 1 to 16 MHz according to the
                                                         formula 16 / (n + 1) MHz.                                             */
    } CONTROL_b;                                    /*!< BitSize                                                               */
  };

В даташите ничего об этом не сказано, и о чюдо! даже на схеме клоков эта настройка не отражена!
видимо для многих является откровением что на заборе может быть написано х.. а там дрова...
promo engineering_ru may 8, 2016 17:48 28
Buy for 50 tokens
Пишет vova_modelist: Что делать, если очень надо провести плавдок через Панамский канал, но он туда не влезает? Сделать то, что люди делают с кроватью, которую надо пронести в дверь: естественно, поставить его на попа на торец. В 1945-ом году американцам…