реклама на сайте
подробности

 
 
> AVR32 SPI прием и передача, Одновременный прием и передача
69ka
сообщение Sep 6 2016, 07:51
Сообщение #1





Группа: Участник
Сообщений: 6
Регистрация: 6-09-16
Пользователь №: 93 227



Добрый день, столкнулся с проблемой на микроконтроллере AVR32UC3C0512, мне необходимо передать сообщение по SPI на микросхему TLE6208-6G и одновременно с этой передачей считать ответ. Разница в передаче и ответе на диаграмме:



при передаче с кодом:

Код
spi_select_device(&AVR32_SPI0, &SPI_MVK_CS1);
spi_write(&AVR32_SPI0, data_buff);
while((AVR32_SPI0.cr & AVR32_SPI_SR_TXEMPTY_MASK) != 0) {};

spi_read(&AVR32_SPI0, &result);
spi_set_chipselect_delay_bct(&AVR32_SPI0, &SPI_MVK_CS1, CONFIG_SPI_MASTER_DELAY_BCT);
spi_deselect_device(&AVR32_SPI0, &SPI_MVK_CS1);


код функции spi_read:

Код
spi_status_t spi_read(volatile avr32_spi_t *spi, uint16_t *data)
{unsigned int timeout = SPI_TIMEOUT;

   while ((spi->sr &
         (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) !=
         (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) {
      if (!timeout--) {
         return SPI_ERROR_TIMEOUT;
         return 0xFFFF;
      }
   }

   *data = (spi->rdr & 0x0000FFFF) >> AVR32_SPI_RDR_RD_OFFSET;

   return SPI_OK;
}


в result 0. хотя отправляю не 0 и плата отрабатывает верно (необходимые светодиоды светятся). Посылка осуществляется в цикле. Что может быть не так? Как получить верный ответ, пробовал даже оставлять от кода только строчки отправки и сразу чтение из регистра без задержек но ничего не помогло..
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
69ka
сообщение Sep 7 2016, 10:26
Сообщение #2





Группа: Участник
Сообщений: 6
Регистрация: 6-09-16
Пользователь №: 93 227



Проверил, все работает, ничего не меняя в коде программы... ничего не понимаю... но если подключаю обратно показывает 0xFFFFFFFF...
Go to the top of the page
 
+Quote Post
k155la3
сообщение Sep 7 2016, 11:20
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(69ka @ Sep 7 2016, 13:26) *
Проверил, все работает, ничего не меняя в коде программы... ничего не понимаю... но если подключаю обратно показывает 0xFFFFFFFF...


Не понял, что работает. На кольце ?
Если так - проверяйте по даташитам настройки SPI - фазировки и полярности, требуемые для Вашего slave.

Go to the top of the page
 
+Quote Post
69ka
сообщение Sep 7 2016, 14:04
Сообщение #4





Группа: Участник
Сообщений: 6
Регистрация: 6-09-16
Пользователь №: 93 227



Цитата(k155la3 @ Sep 7 2016, 12:20) *
Не понял, что работает. На кольце ?
Если так - проверяйте по даташитам настройки SPI - фазировки и полярности, требуемые для Вашего slave.


Да сделал перемычку отключил ведомых. все работает считываю то что посылаю.
Осциллограф видит и передаваемый и принимаемый пакеты, но не могу МК не хочет их видеть.
Ладно буду дальше пробовать. Спасибо за помощь)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 03:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01346 секунд с 7
ELECTRONIX ©2004-2016