Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Периферийные функции AVR32 UC3A3
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > AVR32
inventor
Пытаюсь разобраться с GPIO и мне не совсем понятно как это работает.
Как я понял (может неправильно) каждая периферия может быть отображена на различные линии с помощью четырех функций.
Я запрограммировал порт USART3 - он у меня работает, но вот настройку GPIO для него я делал как шаман с бубном.

На моей плате USART3 выведен с выводов RxD - PX57 и TxD - PX58
смотрю по даташыту-

Each GPIO line can be assigned to one of 4 peripheral functions; A, B, C, or D. The following
table define how the I/O lines on the peripherals A, B, C, or D are multiplexed by the GPIO.


так оно и есть, выводы RxD и TxD USART выведены на PX57 и PX58 и периферийная функция "C"

Потом смотрю файл avr32/uc3a256.h

CODE

/* USART3 */
#define AVR32_USART3_ADDRESS 0xFFFF2000
#define AVR32_USART3 (*((volatile avr32_usart_t*)AVR32_USART3_ADDRESS))
#define AVR32_USART3_IRQ 256
#define AVR32_USART3_PDCA_ID_RX 3
#define AVR32_USART3_PDCA_ID_TX 14
#define AVR32_USART3_CLK_0_PIN 30
#define AVR32_USART3_CLK_0_FUNCTION 1
#define AVR32_USART3_CTS_0_0_PIN 67
#define AVR32_USART3_CTS_0_0_FUNCTION 1
#define AVR32_USART3_CTS_0_1_PIN 28
#define AVR32_USART3_CTS_0_1_FUNCTION 2
#define AVR32_USART3_RTS_0_0_PIN 66
#define AVR32_USART3_RTS_0_0_FUNCTION 1
#define AVR32_USART3_RTS_0_1_PIN 27
#define AVR32_USART3_RTS_0_1_FUNCTION 2
#define AVR32_USART3_RXD_0_0_PIN 36
#define AVR32_USART3_RXD_0_0_FUNCTION 1
#define AVR32_USART3_RXD_0_1_PIN 59
#define AVR32_USART3_RXD_0_1_FUNCTION 1
#define AVR32_USART3_RXD_0_2_PIN 108
#define AVR32_USART3_RXD_0_2_FUNCTION 2
#define AVR32_USART3_TXD_0_0_PIN 29
#define AVR32_USART3_TXD_0_0_FUNCTION 1
#define AVR32_USART3_TXD_0_1_PIN 60
#define AVR32_USART3_TXD_0_1_FUNCTION 1
#define AVR32_USART3_TXD_0_2_PIN 105
#define AVR32_USART3_TXD_0_2_FUNCTION 1
#define AVR32_USART3_TXD_0_3_PIN 109
#define AVR32_USART3_TXD_0_3_FUNCTION 2


Что это за числа здесь стоят в описании пинов и функций - Х.З.
То есть я рассуждал так, если функция С то и нужно брать второй пин и вторую функцию
но с такими настройками не работает
потом когда выбрал

CODE

/* USART Settings */
#define EXAMPLE_USART (&AVR32_USART3)
#define EXAMPLE_USART_RX_PIN AVR32_USART3_RXD_0_2_PIN
#define EXAMPLE_USART_RX_FUNCTION AVR32_USART3_RXD_0_2_FUNCTION


/* Передача 3-го усарта на 3-й функции! */
#define EXAMPLE_USART_TX_PIN AVR32_USART3_TXD_0_3_PIN
#define EXAMPLE_USART_TX_FUNCTION AVR32_USART3_TXD_0_3_FUNCTION
#define EXAMPLE_USART_IRQ AVR32_USART3_IRQ
#define EXAMPLE_USART_BAUDRATE 9600


Все заработало. Но все равно, как правильно установить функцию мне не понятно, поясните кто знает!
Щас пытаюсь разобраться с SD картой, но вот с этими функциями то же не могу разобраться.
jasper
Все просто.
Число напротив пина - это номер GPIO.
Число напротив функции - это номер функции (0, 1, 2, 3 соответствует функциям A, B, C, D).
Смотите таблицу GPIO Controller Function Multiplexing в даташите, все станет понятно.
inventor
Цитата(jasper @ Jan 12 2012, 16:04) *
Все просто.
Число напротив пина - это номер GPIO.
Число напротив функции - это номер функции (0, 1, 2, 3 соответствует функциям A, B, C, D).
Смотите таблицу GPIO Controller Function Multiplexing в даташите, все станет понятно.


Тогда получается что
USART3 RxD вывод PX57 вывод GPIO108 2 функция С - совпадает
USART3 TxD вывод PX58 вывод GPIO109- но в дадашите нету 3-й функции для этого вывода, а у меня работает.
Щас попробую изменить на вторую функцию TxD



Цитата(inventor @ Jan 12 2012, 16:36) *
Тогда получается что
USART3 RxD вывод PX57 вывод GPIO108 2 функция С - совпадает
USART3 TxD вывод PX58 вывод GPIO109- но в дадашите нету 3-й функции для этого вывода, а у меня работает.
Щас попробую изменить на вторую функцию TxD


Не хочет работать со второй функцией
с третьей, которой нету в даташите-работает help.gif
jasper
#define AVR32_USART3_TXD_0_3_PIN 109
#define AVR32_USART3_TXD_0_3_FUNCTION 2

PX59 GPIO 109 функция 2, т.е C, если смотреть по таблице.
inventor
Цитата(jasper @ Jan 12 2012, 17:22) *
#define AVR32_USART3_TXD_0_3_PIN 109
#define AVR32_USART3_TXD_0_3_FUNCTION 2

PX59 GPIO 109 функция 2, т.е C, если смотреть по таблице.



О... КАЖИСЬ ПОНЕЛ, НУЖНО БЫЛО СМОТРЕТЬ ЗНАЧЕНИЕ а не ее название.

И еще пара вопростов
1) то есть все эти макросы нужно употреблять парами, то есть если PIN3 то и FUNCTION3 ?
2) Можно сделать таким образом,чтобы например RxD был на функции С и на порте PX
а TxD на какомнибудь другом порте Например PA, то есть имеется ввиду, что если используется целиковое устройство, как USART в моем примере, то и использовать его нужно так, чтобы у него передача и прием была на одной функции и следовательно на ближайших выводах?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.