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

 
 
 
Reply to this topicStart new topic
Aprox
сообщение Aug 12 2008, 15:02
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131



Помогите, если кто уже прошел успешно этап разбирательства. Проблема в следующем. Использую SSP1 в STR912FA44W. Действую по описаниям в мануале и по примерам применения. Хочу добиться чтения с пина MISO в режиме мастера. Для этого пишу в DR (т.е. в Tx FIFO) байт и после контролируемой выдержки на его передачу, читаю из DR(т.е. из Rx FIFO). С удивлением вижу, что принимается не тот байт, что пришел от периферии, а тот, который я посылал по Tx! Чтения данных не получается. Как ни сравнивал свой код с примерами использования SSP, никаких отличий не нашел. Диаграммы сигналов по лог.анализатору нормальные. В errata про SSP ничего нет. Куда рыпаться дальше- не знаю. Помогите, кто проходил эту проблему.
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Aug 12 2008, 15:54
Сообщение #2


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Цитата(Aprox @ Aug 12 2008, 19:02) *
Помогите, если кто уже прошел успешно этап разбирательства. Проблема в следующем. Использую SSP1 в STR912FA44W. Действую по описаниям в мануале и по примерам применения. Хочу добиться чтения с пина MISO в режиме мастера. Для этого пишу в DR (т.е. в Tx FIFO) байт и после контролируемой выдержки на его передачу, читаю из DR(т.е. из Rx FIFO). С удивлением вижу, что принимается не тот байт, что пришел от периферии, а тот, который я посылал по Tx! Чтения данных не получается. Как ни сравнивал свой код с примерами использования SSP, никаких отличий не нашел. Диаграммы сигналов по лог.анализатору нормальные. В errata про SSP ничего нет. Куда рыпаться дальше- не знаю. Помогите, кто проходил эту проблему.



У меня SSP работает нормально, может бит луббека установлен ? (Бит LMB в CR1)
Подключена ли ножка NSS и если да то куда подтянута ?
Код тоже неплохо посмотреть ?
Что значит контролируемой выдержки ? SSP синхронный дуплексный порт тоесть чтение происходит вместе с передачей.

Вот мой кусок примитивного обмена по SSP

Код
/******************************************************************************
* FUNCTION: spi_process  
*
* PARAMETERS:   u8_t data - байт записываемый в SPI
* DESCRIPTION:  Выполняет обмен 1 байтом по SPI
* RETURNS:      Прочитанный байт с SPI
*
* DATE: 30.12.2006
******************************************************************************/
u8_t spi_process(u8_t data)
{
  SSP1_DR = data;
  while((SSP1_SR & 0x04) == 0);
  return(SSP1_DR);
}
Go to the top of the page
 
+Quote Post
Aprox
сообщение Aug 12 2008, 19:28
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131



Цитата(MALLOY2 @ Aug 12 2008, 19:54) *
У меня SSP работает нормально, может бит луббека установлен ? (Бит LMB в CR1)

нет, проверял
Цитата
Подключена ли ножка NSS и если да то куда подтянута ?

штатный сигнал NSS не использую. Генерю CS как output GPIO. Он накрывает всю посылку целиком. В MotorolaFrame это невозможно-каждый символ посылки с отдельным CS .
Цитата
Что значит контролируемой выдержки ? SSP синхронный дуплексный порт тоесть чтение происходит вместе с передачей.

Выдержка точно, как в вашем примере
Код
  while((SSP1_SR & 0x04) == 0);
Go to the top of the page
 
+Quote Post
Aprox
сообщение Aug 14 2008, 15:21
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131



Ура, нашел! Как всегда- сам дурак. Hо поучительно, поэтому спешу поделиться. Проблема оказалась в пине NSS. Его штатную функцию я отключил и заменил на программную генерацию nCS, который накрывает не один символ, а всю передаваемую последовательность символов. Так надо было. Когда конфигурировал GPIO на вывод забыл указать в структуре инициализации, что этот пин должен быть отсоединен от внутренней периферии кристалла, т.е. от NSS адаптера SSP. Отсутствовала явно заданная строка
Код
GPIO_Struct.GPIO_IPConnected = GPIO_IPConnected_Disable;
В результате, на мастер SPP при чтении с пина приходил NSS=0, а нужно наоброт =1. Чтение попросту блокировалось и я видел белиберду вместо приходящих символов. Посыпаю голову пеплом.
Go to the top of the page
 
+Quote Post

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

 


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


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