Работа с UART (ASM) » History » Version 12
krufter_multiclet, 04/16/2013 02:09 PM
1 | 1 | krufter_multiclet | h1. Работа с UART (ASM) |
---|---|---|---|
2 | 1 | krufter_multiclet | |
3 | 2 | krufter_multiclet | Рассмотрим передачу и приём сообщений посредством интерфейса UART подробнее(на ассемблере). |
4 | 2 | krufter_multiclet | В приведённых ниже примерах кода используется список констант, который необходимо подключить директивой " .include " |
5 | 2 | krufter_multiclet | <pre> |
6 | 2 | krufter_multiclet | .include "HDL50001_pcf.inc" |
7 | 2 | krufter_multiclet | </pre> |
8 | 2 | krufter_multiclet | |
9 | 2 | krufter_multiclet | |
10 | 10 | krufter_multiclet | h2. а) Передача по UART |
11 | 7 | krufter_multiclet | |
12 | 10 | krufter_multiclet | h3. 1. Разрешаем алтернативные функции порта. |
13 | 2 | krufter_multiclet | |
14 | 4 | krufter_multiclet | В настоящее время выпущены две отладочные платы, в которых задействованы UART0(HW1-MCp04) и UART3(LDM-MCp04). |
15 | 2 | krufter_multiclet | Рассмотрим команды ассемблера для разрешения алтернативных функций порта. |
16 | 2 | krufter_multiclet | Для UART0: |
17 | 2 | krufter_multiclet | <pre> |
18 | 5 | krufter_multiclet | getl 0x00000F00 |
19 | 5 | krufter_multiclet | wrl @1, GPIOB_BPS |
20 | 5 | krufter_multiclet | </pre> |
21 | 5 | krufter_multiclet | |
22 | 5 | krufter_multiclet | Для UART3: |
23 | 5 | krufter_multiclet | <pre> |
24 | 5 | krufter_multiclet | getl 0x00000F00 |
25 | 5 | krufter_multiclet | wrl @1, GPIOD_BPS |
26 | 2 | krufter_multiclet | </pre> |
27 | 6 | krufter_multiclet | |
28 | 10 | krufter_multiclet | h3. 2. Настраиваем UART на передачу, устанавливаем скорость работы. |
29 | 6 | krufter_multiclet | |
30 | 6 | krufter_multiclet | Для настройки UART на передачу запишем следующее значение в регистр управления: |
31 | 6 | krufter_multiclet | Для UART0: |
32 | 6 | krufter_multiclet | <pre> |
33 | 6 | krufter_multiclet | getl 0x00000002 |
34 | 6 | krufter_multiclet | wrl @1, UART0_CR |
35 | 6 | krufter_multiclet | </pre> |
36 | 6 | krufter_multiclet | |
37 | 6 | krufter_multiclet | Для UART3: |
38 | 6 | krufter_multiclet | <pre> |
39 | 6 | krufter_multiclet | getl 0x00000002 |
40 | 6 | krufter_multiclet | wrl @1, UART3_CR |
41 | 6 | krufter_multiclet | </pre> |
42 | 11 | krufter_multiclet | |
43 | 11 | krufter_multiclet | Для установки скорости используется коэффициент деления BRDIV = Fsys/(8*Fuart - 1) |
44 | 12 | krufter_multiclet | Для скорости 38400 кбит/с: |
45 | 12 | krufter_multiclet | |
46 | 12 | krufter_multiclet | Для UART0: |
47 | 12 | krufter_multiclet | <pre> |
48 | 12 | krufter_multiclet | getl 0x00000104 |
49 | 12 | krufter_multiclet | wrl @1, UART0_BDR |
50 | 12 | krufter_multiclet | </pre> |
51 | 12 | krufter_multiclet | |
52 | 12 | krufter_multiclet | Для UART3: |
53 | 12 | krufter_multiclet | <pre> |
54 | 12 | krufter_multiclet | getl 0x00000104 |
55 | 12 | krufter_multiclet | wrl @1, UART3_BDR |
56 | 12 | krufter_multiclet | </pre> |