2015-07-03 6 views
0

Я получил PIC32mx795f512L, чтобы построить шпион для I2C, я подключу 3 провода на SDA, SCL и GND, а затем я должен обнаружить отправленные данные. Эта часть в порядке. Теперь, когда у меня есть данные, я должен отправить его через RX, TX на компьютер (фактически, я отправляю его на адаптер, который преобразует его в RS232), и вот моя проблема.PIC 32 TTL-связь

Я действительно не знаю, как инициализировать это сообщение. Сейчас я ставлю:

mPORTFClearBits(BIT_8); 
TRISFbits.TRISF8=0;  // RF8 output==>TX1 
TRISFbits.TRISF2=1;  // RF1 input==>RX1 
U1STA = 0x1400; // Enable Tx(inv) and Rx 
U1BRG = 8332; // value = (80000000/BAUD) - 1 = 9600 
U1MODE = 0x8008; // Enable UART with 1 stop bit, no parity and BRGH 
OpenUART1(UART_EN | UART_BRGH_FOUR, UART_RX_ENABLE | UART_TX_ENABLE, UBRG(UART1_BAUD)); 

Проверив паспорт, но я на самом деле не знаю, если все необходимое устанавливается. И, тем не менее, я не получаю, как отправлять данные через TX. Я нашел this topic , где он говорит:

Чтобы сделать некоторый вывод обугленного (а - в данном примере) на UART просто написать этот код:

if(!BusyUART1()) 
    putsUART1("-\r\n"); " 

Но я не могу» t найдите, где используется «a».

Так что, пожалуйста, если кто-то чувствует себя способным помочь мне, не стесняйтесь это делать.

+1

Это "(в этом примере") ".. он должен отправить знак минуса (за которым следует CR LF). – TripeHound

+0

Спасибо человеку, это было так очевидно, но я не мог его увидеть .. ^^ – DesireM

ответ

0

В основном следующие вещи важны при настройке UART связи

  • УАППЫ Скорость передачи
  • инициализации УАПП контактной (TRIS бит в PIC)
  • Сколько биты данных (7 или 8)
  • Кол-во Стоповые биты (1 или 1,5 или 2)
  • Паритет (Нет или четным или нечетным)

Я могу увидеть все эти вещи инициализируются в вашем коде, которые все это необходимо. Итак, это ответ на ваш первый вопрос.

Для вашего второго вопроса, UART занят бит проверяется и минус знак «-», а затем CRLF передается по UART Tx

+0

Прежде всего, спасибо за ваш ответ. Хорошо, так что все готово к отправке данных прямо? О, Боже, ты прав ... так тупой = D Я попытался поместить переменную в поле минус, например, для 'printf', добавив% d:' putsUART1 ("% d \ r \ n ", var);' но это не сработает.Возможно ли это сделать или мне нужно добавить определенный номер и переписать функцию, когда я хочу изменить этот номер? Спасибо – DesireM

+0

@DesireM: вы можете использовать метод 'itoa', а затем преобразовать буфер значения Ascii по команде' UART'. –

+0

@DesireM: Пожалуйста, поддержите или примите ответ, если ваша проблема решена, чтобы она была полезной для других, сталкивающихся с одной и той же проблемой. –

0

Выполните следующие действия, чтобы настроить передачу UART:

  1. Инициализировать регистр UxBRG для соответствующей скорости передачи в бодах (см. 21.3 «Генератор скорости передачи данных UART»).

  2. Установите количество данных и стоп-бит, и выбор четности путем записи в PDSEL < 1: 0> биты (UxMODE < 2: 1>) и STSEL бит (UxMODE < 0>).

  3. Если требуются прерывания передачи, установите бит управления UxTXIE в соответствующее прерывание Включить регистр управления (IEC). Укажите приоритет прерывания и его приоритет для прерывания передачи с использованием контрольных бит UxIP < 2: 0> и UxIS < 1: 0 в соответствующем регистре управления прерываниями (IPC). Также выберите режим прерывания передачи, записав биты UTXISEL (UxSTA < 15:14>).
  4. Включите передачу, установив бит UTXEN (UxSTA < 10>), который также устанавливает бит UxTXIF . Бит UxTXIF должен быть очищен в программной подпрограмме, которая обслуживает прерывание передачи UART . Работа бита UxTXIF контролируется битами управления UTXISEL .
  5. Включите модуль UART, установив бит ON (UxMODE < 15>).
  6. Загрузка данных в регистр UxTXREG (начинается передача)

Следующие шаги выполняются для настройки приема УАПП:

  1. Инициализировать UxBRG регистрации для соответствующей скорости передачи (см. 21.3 «Генератор скорости передачи UART»).
  2. Установите количество данных и стоп-бит, и выбор четности путем записи в PDSEL < 1: 0> (UxMODE < 2: 1>) и STSEL (UxMODE < 0>) битов.
  3. Если требуются прерывания, установите бит UxRXIE в соответствующий регистр управления прерыванием (IEC). Определите приоритет и сущность приоритета для прерывания, используя контрольные биты UxIP < 2: 0> и UxIS < 1: 0> в соответствующем регистре управления приоритетом прерывания (IPC). Кроме того, выбирают режим приема прерывания, записывая в биты URXISEL < 1: 0> (UxSTA < 7: 6>).
  4. Включите приемник UART, установив бит URXEN (UxSTA < 12>).
  5. Включите модуль UART, установив бит ON (UxMODE < 15>).
  6. Приемные прерывания зависят от настроек бит URXISEL < 1: 0>. Если прерывания приема не включены, пользователь может опросить бит URXDA (UxSTA < 0>). Бит UxRXIF должен быть , очищенный в программной программе, которая обслуживает прерывание приема UART.
  7. Чтение данных из буфера приема. Если выбрана 9-битная передача, прочитайте слово; в противном случае читать байт. Бит URXDA устанавливается, когда данные доступны в буфере.