inventor 0 12 января, 2012 Опубликовано 12 января, 2012 · Жалоба Пытаюсь разобраться с 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 /* 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 Что это за числа здесь стоят в описании пинов и функций - Х.З. То есть я рассуждал так, если функция С то и нужно брать второй пин и вторую функцию но с такими настройками не работает потом когда выбрал /* 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 0 12 января, 2012 Опубликовано 12 января, 2012 · Жалоба Все просто. Число напротив пина - это номер GPIO. Число напротив функции - это номер функции (0, 1, 2, 3 соответствует функциям A, B, C, D). Смотите таблицу GPIO Controller Function Multiplexing в даташите, все станет понятно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inventor 0 12 января, 2012 Опубликовано 12 января, 2012 · Жалоба Все просто. Число напротив пина - это номер GPIO. Число напротив функции - это номер функции (0, 1, 2, 3 соответствует функциям A, B, C, D). Смотите таблицу GPIO Controller Function Multiplexing в даташите, все станет понятно. Тогда получается что USART3 RxD вывод PX57 вывод GPIO108 2 функция С - совпадает USART3 TxD вывод PX58 вывод GPIO109- но в дадашите нету 3-й функции для этого вывода, а у меня работает. Щас попробую изменить на вторую функцию TxD Тогда получается что USART3 RxD вывод PX57 вывод GPIO108 2 функция С - совпадает USART3 TxD вывод PX58 вывод GPIO109- но в дадашите нету 3-й функции для этого вывода, а у меня работает. Щас попробую изменить на вторую функцию TxD Не хочет работать со второй функцией с третьей, которой нету в даташите-работает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jasper 0 12 января, 2012 Опубликовано 12 января, 2012 · Жалоба #define AVR32_USART3_TXD_0_3_PIN 109 #define AVR32_USART3_TXD_0_3_FUNCTION 2 PX59 GPIO 109 функция 2, т.е C, если смотреть по таблице. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inventor 0 12 января, 2012 Опубликовано 12 января, 2012 · Жалоба #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 в моем примере, то и использовать его нужно так, чтобы у него передача и прием была на одной функции и следовательно на ближайших выводах? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться