/* Blink Turns on an LED on for one second, then off for one second, repeatedly. Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN takes care of use the correct LED pin whatever is the board used. If you want to know what pin the on-board LED is conn ected to on your Arduino model, check the Technical Specs of your board at https://www.arduino.cc/en/Main/Products This example code is in the public domain. modified 8 May 2014 by Scott Fitzgerald modified 2 Sep 2016 by Arturo Guadalupi */ #include #include // for Serial uint32_t baud_test[] = { 1200, 2400, 4800, 9600, 14400, 19200, 28800, 31250, 38400, 56000, 57600, 76800, 115200, 230400, 250000, 460800, 921600, 1000000 }; uint32_t baud_expected[] = { UARTE_BAUDRATE_BAUDRATE_Baud1200, UARTE_BAUDRATE_BAUDRATE_Baud2400, UARTE_BAUDRATE_BAUDRATE_Baud4800, UARTE_BAUDRATE_BAUDRATE_Baud9600, UARTE_BAUDRATE_BAUDRATE_Baud14400, UARTE_BAUDRATE_BAUDRATE_Baud19200, UARTE_BAUDRATE_BAUDRATE_Baud28800, UARTE_BAUDRATE_BAUDRATE_Baud31250, UARTE_BAUDRATE_BAUDRATE_Baud38400, UARTE_BAUDRATE_BAUDRATE_Baud56000, UARTE_BAUDRATE_BAUDRATE_Baud57600, UARTE_BAUDRATE_BAUDRATE_Baud76800, UARTE_BAUDRATE_BAUDRATE_Baud115200, UARTE_BAUDRATE_BAUDRATE_Baud230400, UARTE_BAUDRATE_BAUDRATE_Baud250000, UARTE_BAUDRATE_BAUDRATE_Baud460800, UARTE_BAUDRATE_BAUDRATE_Baud921600, UARTE_BAUDRATE_BAUDRATE_Baud1M }; uint32_t compute_baud_reg(uint32_t baudrate) { // details here: https://devzone.nordicsemi.com/f/nordic-q-a/391/uart-baudrate-register-values // 2^32 / 16000000 = 268.43f. const double regValue = 268.43f*(double)baudrate; const uint32_t nrfBaudRate = ((uint32_t)regValue + 0x800) & 0xFFFFF000; return nrfBaudRate; } // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); while(!Serial) delay(100); Serial.println("Baud test"); delay(100); for(uint8_t i=0; i < sizeof(baud_test)/sizeof(baud_test[0]); i++) { uint32_t value = compute_baud_reg(baud_test[i]); Serial.printf("Baud: %u, Expected: %08X, Actual: %08X ... ", baud_test[i], baud_expected[i], value); if ( value != baud_expected[i] ) { Serial.println("FAILED"); }else { Serial.println("OK"); } } } // the loop function runs over and over again forever void loop() { digitalToggle(LED_BUILTIN); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second }