**Support Board: BK7236** UART ============================ Project Overview -------------------------- This project is used for demonstrating [peripheral URAT](https://docs.bekencorp.com/armino/bk7236/en/latest/developer-guide/peripheral/bk_uart.html). **The security function of BK7236 is still under development and improvement, please note the following restrictions** UART (Universal Asynchronous Receiver and Transmitter), It is used to realize full duplex or half duplex data exchange between different devices. Hardware Requirements ---------------------------- .. figure:: ../../../../../_static/uart.png :align: center :alt: UART Connection :figclass: align-center UART Connection The figure above shows the UART serial port TTL level hardware connection, where: - TXD:For sending data, it should be connected to RXD pin of the receiving device - RXD:For receiving data, it should be connected to the TXD pin of the transmitting device - GND:Provide the same reference level for both parties UART Config --------------- In order to use UART for data transmission, the following parameters need to be configured: - Baud rate:The number of bits transmitted per second, generally 9600, 19200, 115200, etc. call function bk_uart_set_baud_rate() - Data bits:There can be 5, 6, 7 or 8 bits of data. Generally, we transmit data by byte (8 bits). The sender changes the status (high level or low level) of the data line bit by bit to send them. When transmitting data, the lowest bit is transmitted first, and the highest bit is transmitted last.call function bk_uart_set_data_bits() - Check bit:It is used to verify the correctness of data transmission. It can only detect errors, not correct them. call function bk_uart_set_parity() - Stop bit:It is used to indicate that the current data transmission is completed, and the logic level is “1”. call function bk_uart_set_stop_bits() UART Application Scenario +++++++++++++++++++++++++++++++ At present, UART supports three different application modes: - Use the default UART interrupt processing flow: The default ‘bk_uart_write_bytes()/bk_uart_read_bytes()’ is used to process UART receiving and sending. The receiving and sending channel is described in the UART receiving channel section. Generally, this method can meet the needs of most applications. - Use the default UART interrupt processing flow and register the user callback: The only difference from the first method is that the user’s registered callback will be called after the UART interrupt is generated. - UART interrupt processing is completely implemented by the application itself: When the default UART interrupt processing flow cannot meet the application requirements, such as the UART of the application is implemented by a third-party code, you can use ‘bk_interrupt_Register(xx, isr, arg)’ replaces the default UART interrupt handler. At this time, the receiving and sending process is completely implemented by the application. Case Build +++++++++++++++++++++++++++++++ Enter the following command in the Armino root directory to compile: > make bk7236 PROJECT=examples/peripherals/uart For preparations such as toolchain installation, please refer to [Quick Start](https://docs.bekencorp.com/armino/bk7236/en/latest/get-started/index.html). Flash all-app.bin ++++++++++++++++++++++++++++++++++ Burn Armino/build/secureboot/bk7236/all-app.bin to the board using BKFIL. Running and Output ---------------------------------- Case - uart log +++++++++++++++++++++++++++++++++++ uart log ************************************* :: os:I(0):mem_type start end size os:I(0):-------- -------- -------- -------- os:I(0):itcm 0x0 0x3c58 15448 os:I(0):dtcm 0x20000000 0x20001908 6408 os:I(0):ram 0x28000000 0x2807ebf8 519160 os:I(0):non_heap 0x28000000 0x2800fca8 64680 os:I(0):iram 0x28000000 0x28000814 2068 os:I(0):data 0x28000814 0x280011b0 2460 os:I(0):bss 0x280011c0 0x2800fca8 60136 os:I(0):non_cache 0x2800fca8 0x2800fca8 0 os:I(0):heap 0x2800fca8 0x2807ebf8 454480 os:I(0):psram 0x60700000 0x60780000 524288 flash:I(0):id=0xc84016 flash:I(0):write status reg:38, status_reg_size:1 I(0):ate enabled is 1 I(0):driver_init end init:I(0):reason - deep sleep gpio init:I(0):regs - 3, 3, 0 init:I(0):armino rev: init:I(0):armino soc id:53434647_72360001 init:I(0):trng enable os:I(0):prvHeapInit-psram start addr:0x60700000, size:524288 mailbox:I(0):mailbox_config mailbox:I(0):bk_mailbox_recv_callback_register mailbox:I(0):bk_mailbox_recv_callback_register init:I(0):Intialize random stack guard. os:I(0):create main, tcb=28011898, stack=[28010870-28011870:4096], prio=5 I(0):start user app thread. os:I(0):create app, tcb=28012940, stack=[28011918-28012918:4096], prio=2 os:I(0):os time(0ms). os:I(0):base aon rtc time: 0:46 os:I(0):create IDLE, t`b=20000330, stack=[2000038c-2000098c:1536], prio=0 os:I(0):create Tmr Svc, tcb=2000098c, stack=[200009e8-20000fe8:1536], prio=5 uart_exa:I(0):uart send data: uart_exa:I(2):data[0]=0x0 uart_exa:I(4):data[1]=0x1 uart_exa:I(6):data[2]=0x2 uart_exa:I(8):data[3]=0x3 uart_exa:I(10):data[4]=0x4 uart_exa:I(12):data[5]=0x5 uart_exa:I(14):data[6]=0x6 uart_exa:I(16):data[7]=0x7 uart_exa:I(18):data[8]=0x8 uart_exa:I(20):data[9]=0x9 uart_exa:I(22):data[10]=0xa uart_exa:I(24):data[11]=0xb uart_exa:I(26):data[12]=0xc uart_exa:I(28):data[13]=0xd uart_exa:I(30):data[14]=0xe uart_exa:I(32):data[15]=0xf uart_exa:I(34):data[16]=0x10 uart_exa:I(36):data[17]=0x11 uart_exa:I(38):data[18]=0x12 uart_exa:I(40):data[19]=0x13 uart_exa:I(42):data[20]=0x14 uart_exa:I(44):data[21]=0x15 uart_exa:I(46):data[22]=0x16 uart_exa:I(48):data[23]=0x17 uart_exa:I(50):data[24]=0x18 uart_exa:I(52):data[25]=0x19 uart_exa:I(54):data[26]=0x1a uart_exa:I(56):data[27]=0x1b uart_exa:I(58):data[28]=0x1c uart_exa:I(60):data[29]=0x1d uart_exa:I(62):data[30]=0x1e uart_exa:I(64):data[31]=0x1f uart_exa:I(66):data[32]=0x20 uart_exa:I(68):data[33]=0x21 uart_exa:I(70):data[34]=0x22 uart_exa:I(72):data[35]=0x23 uart_exa:I(74):data[36]=0x24 uart_exa:I(76):data[37]=0x25 uart_exa:I(78):data[38]=0x26 uart_exa:I(80):data[39]=0x27 uart_exa:I(82):data[40]=0x28 uart_exa:I(84):data[41]=0x29 uart_exa:I(86):data[42]=0x2a uart_exa:I(88):data[43]=0x2b uart_exa:I(90):data[44]=0x2c uart_exa:I(92):data[45]=0x2d uart_exa:I(94):data[46]=0x2e uart_exa:I(96):data[47]=0x2f uart_exa:I(98):data[48]=0x30 uart_exa:I(100):data[49]=0x31 uart_exa:I(102):data[50]=0x32 uart_exa:I(104):data[51]=0x33 uart_exa:I(106):data[52]=0x34 uart_exa:I(108):data[53]=0x35 uart_exa:I(110):data[54]=0x36 uart_exa:I(112):data[55]=0x37 uart_exa:I(114):data[56]=0x38 uart_exa:I(116):data[57]=0x39 uart_exa:I(118):data[58]=0x3a uart_exa:I(120):data[59]=0x3b uart_exa:I(122):data[60]=0x3c uart_exa:I(124):data[61]=0x3d uart_exa:I(126):data[62]=0x3e uart_exa:I(128):data[63]=0x3f uart_exa:I(130):data[64]=0x40 uart_exa:I(132):data[65]=0x41 uart_exa:I(134):data[66]=0x42 uart_exa:I(136):data[67]=0x43 uart_exa:I(138):data[68]=0x44 uart_exa:I(140):data[69]=0x45 uart_exa:I(142):data[70]=0x46 uart_exa:I(144):data[71]=0x47 uart_exa:I(146):data[72]=0x48 uart_exa:I(148):data[73]=0x49 uart_exa:I(150):data[74]=0x4a uart_exa:I(152):data[75]=0x4b uart_exa:I(154):data[76]=0x4c uart_exa:I(156):data[77]=0x4d uart_exa:I(158):data[78]=0x4e uart_exa:I(160):data[79]=0x4f uart_exa:I(162):data[80]=0x50 uart_exa:I(164):data[81]=0x51 uart_exa:I(166):data[82]=0x52 uart_exa:I(168):data[83]=0x53 uart_exa:I(170):data[84]=0x54 uart_exa:I(172):data[85]=0x55 uart_exa:I(176):data[86]=0x56 uart_exa:I(178):data[87]=0x57 uart_exa:I(180):data[88]=0x58 uart_exa:I(182):data[89]=0x59 uart_exa:I(184):data[90]=0x5a uart_exa:I(186):data[91]=0x5b uart_exa:I(188):data[92]=0x5c uart_exa:I(190):data[93]=0x5d uart_exa:I(192):data[94]=0x5e uart_exa:I(194):data[95]=0x5f uart_exa:I(196):data[96]=0x60 uart_exa:I(198):data[97]=0x61 uart_exa:I(200):data[98]=0x62 uart_exa:I(202):data[99]=0x63 uart_exa:I(204):data[100]=0x64 uart_exa:I(206):data[101]=0x65 uart_exa:I(208):data[102]=0x66 uart_exa:I(210):data[103]=0x67 uart_exa:I(212):data[104]=0x68 uart_exa:I(214):data[105]=0x69 uart_exa:I(216):data[106]=0x6a uart_exa:I(218):data[107]=0x6b uart_exa:I(220):data[108]=0x6c uart_exa:I(222):data[109]=0x6d uart_exa:I(224):data[110]=0x6e uart_exa:I(226):data[111]=0x6f uart_exa:I(228):data[112]=0x70 uart_exa:I(230):data[113]=0x71 uart_exa:I(232):data[114]=0x72 uart_exa:I(234):data[115]=0x73 uart_exa:I(236):data[116]=0x74 uart_exa:I(238):data[117]=0x75 uart_exa:I(240):data[118]=0x76 uart_exa:I(242):data[119]=0x77 uart_exa:I(244):data[120]=0x78 uart_exa:I(246):data[121]=0x79 uart_exa:I(248):data[122]=0x7a uart_exa:I(250):data[123]=0x7b uart_exa:I(252):data[124]=0x7c uart_exa:I(254):data[125]=0x7d uart_exa:I(256):data[126]=0x7e uart_exa:I(258):data[127]=0x7f \0  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~uart_exa:I(270):uart recv data: uart_exa:I(272):data[0]=0xf0 I(274):ATE enabled = 1