Bekomme den USART nicht zum laufen bei einem SAM4E EK. Mein Portpin auf dem EK (PA22 -> TXD) zeigt auf dem Scope keine Reaktion. Wenn ich bei usart_write() ein Breakpoint setze und mir nach der Initialisierung (usart_init_rs232()und usart_enable_tx()) die Register anschaue ist das US_CR Register von USART1 0x0. US_MR hingegeben passt 100% zu der gewählten Configuration und im US_CSR wechselt auch der Status von z.B. TXRDY. Das Problem liegt wohl im US_CR, da hier der Wert 0x00 ist und somit eigentlich auch die Bits RXEN und TXEN auf 0 sind?! Weiß jemand Rat? Gibt es noch irgendeinen Schreibschutz oder andere Feinheiten?
1 | |
2 | #define USART_SERIAL USART1
|
3 | #define USART_SERIAL_ID ID_USART1
|
4 | |
5 | #define USART_SERIAL_BAUDRATE 9600
|
6 | #define USART_SERIAL_CHAR_LENGTH US_MR_CHRL_8_BIT
|
7 | #define USART_SERIAL_PARITY US_MR_PAR_NO
|
8 | #define USART_SERIAL_STOP_BIT US_MR_NBSTOP_2_BIT
|
9 | |
10 | int main (void) |
11 | {
|
12 | sysclk_init(); |
13 | board_init(); |
14 | SysTick_Config(sysclk_get_cpu_hz()/1000); //1ms |
15 | |
16 | const sam_usart_opt_t usart_console_settings = { |
17 | USART_SERIAL_BAUDRATE, |
18 | USART_SERIAL_CHAR_LENGTH, |
19 | USART_SERIAL_PARITY, |
20 | USART_SERIAL_STOP_BIT, |
21 | US_MR_CHMODE_NORMAL
|
22 | };
|
23 | |
24 | sysclk_enable_peripheral_clock(USART_SERIAL_ID); |
25 | usart_init_rs232(USART_SERIAL, &usart_console_settings, sysclk_get_main_hz()); |
26 | |
27 | usart_enable_tx(USART_SERIAL); |
28 | usart_enable_rx(USART_SERIAL); |
29 | usart_write(USART_SERIAL,0x55); |
