parent
bd6ee3a06d
commit
f02b2a4fdd
1 changed files with 1 additions and 123 deletions
@ -1,123 +1 @@ |
||||
${ProjName}: |
||||
UART0_Terminal |
||||
|
||||
|
||||
Intended purpose: |
||||
To demonstrate the configuration and use of the USART module, in asynchronous |
||||
mode, while communicating with a terminal emulator. |
||||
|
||||
|
||||
Functional description: |
||||
* In this example UART0 communicates with a terminal emulator running on the PC, via a |
||||
USB-to-RS232 breakout cable or via the NXP LPC11Uxx VCOM serial port. |
||||
* The user is prompted to enter a string (not to exceed 32 characters), terminated by [Enter]. |
||||
* Each character that is entered is echoed back to the terminal by the UART0 |
||||
ISR, and the characters are stored in an array for future use. |
||||
* When the user types [Enter], a NUL character is appended to the array, and |
||||
a handshake flag is set by the ISR for the main routine. |
||||
* Upon seeing the handshake flag, the main routine prints the stored string to |
||||
the terminal, and the process repeats. |
||||
|
||||
|
||||
External connections: |
||||
* To use the NXP LPC11Uxx VCOM Serial Port: |
||||
1. No external connections are necessary. |
||||
2. The Max board must have the necessary solder-bump jumper modifications: |
||||
A. For LPC812 Max board, short pins 1 and 2 of both SJ1 and SJ4 |
||||
B. For LPC824 Max board, short pins 2 and 3 of SJ9 |
||||
C. For LPC845 Max board, no modification is needed. |
||||
C. For LPC802 LPCXpresso board, no modification is needed. |
||||
C. For LPC804 LPCXpresso board, no modification is needed. |
||||
3. The terminal emulator can then be connected to the NXP LPC11Uxx VCOM serial port which |
||||
enumerates when the board is connected. It appears something like this: |
||||
COM13: NXP LPC11Uxx VCOM serial port (COM13) |
||||
|
||||
* To use a USB-to-RS232 breakout cable: |
||||
1. There are three external connections necessary: RXD and TXD based on the SWM |
||||
settings, plus a ground connection. The RXD and TXD pins can be chosen in chip_setup.h. |
||||
The defaults are as follows: |
||||
P0.25 = U0_TXD = breakout cable RXD |
||||
P0.24 = U0_RXD = breakout cable TXD |
||||
Board GND = breakout cable GND |
||||
|
||||
|
||||
|
||||
Notes on the baud rate and FRG: |
||||
* The BRG and FRG settings are calculated in two steps, as follows: |
||||
// For asynchronous mode (UART mode) the formula is: |
||||
// (BRG + 1) * (1 + (m/256)) * (16 * baudrate Hz.) = FRG_in Hz. |
||||
// We proceed in 2 steps. |
||||
// Step 1: Let m = 0, and round (down) to the nearest integer value of BRG for the desired baudrate. |
||||
// Step 2: Plug in the BRG from step 1, and find the nearest integer value of m, (for the FRG fractional part). |
||||
// |
||||
// Step 1 (with m = 0) |
||||
// BRG = ((FRG_in Hz.) / (16 * baudrate Hz.)) - 1 |
||||
// = (30,000,000/(16 * 9600)) - 1 |
||||
// = 194.3 |
||||
// = 194 (rounded) |
||||
// |
||||
// Step 2. |
||||
// m = 256 * [-1 + {(FRG_in Hz.) / (16 * baudrate Hz.)(BRG + 1)}] |
||||
// = 256 * [-1 + {(30,000,000) / (16*9600)(195)}] |
||||
// = 0.002 |
||||
// = 0 (rounded) |
||||
|
||||
|
||||
Program Flow: |
||||
* This example runs with: |
||||
system_ahb_clk = 15 MHz. (main_clk = 15 MHz. FRO direct output) |
||||
UART0CLK = 15 MHz. (FRG0CLKSEL = main_clk, FCLKSEL0 = frg0clk) |
||||
See chip_setup.h and SystemInit() |
||||
|
||||
* main() routine |
||||
1. Clocks to USART0 and the SWM are enabled. |
||||
|
||||
2. The SWM is configured as per above. |
||||
|
||||
3. The UARTCLKDIV and the FRG (both in SYSCON) are configured as per above |
||||
(for 9600 b.p.s.). |
||||
|
||||
4. USART0 is given a peripheral reset. |
||||
|
||||
5. USART0 BRG is configured as per above (for 9600 b.p.s.). |
||||
|
||||
6. USART0 CFG register is configured for: |
||||
8 data bits |
||||
no parity |
||||
one stop bit |
||||
no flow control |
||||
asynchronous mode |
||||
no loop-back |
||||
|
||||
7. USART0 CTL register is configured for: |
||||
no continuous break |
||||
no address detect |
||||
no Tx disable |
||||
no CC |
||||
no CLRCC |
||||
|
||||
8. USART0 Rx Ready interrupt is enabled, and code execution enters the main while(1) |
||||
loop. |
||||
|
||||
9. The user is prompted to enter a string, and each character is echoed by the |
||||
ISR back to the terminal until the NUL terminator is encountered. |
||||
|
||||
10. When the NUL terminator is encountered, the ISR sets a handshake flag for |
||||
main, which prints the entire received string to the terminal, and the process repeats. |
||||
|
||||
|
||||
This example runs from Flash. |
||||
|
||||
|
||||
To run this code: |
||||
1. Build |
||||
2. Program memory, then reset target |
||||
or |
||||
2. Debug |
||||
3. Run or Go |
||||
|
||||
Note: It may be necessary to power-cycle the board in order to regain control of the reset button after programming. |
||||
|
||||
|
||||
|
||||
|
||||
# Bibliothèque pour associer un écran e-paper à un LPC804 |
Loading…
Reference in new issue