Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2017-окт-20 20:53

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Работа SPI
СообщениеДобавлено: 2015-дек-10 18:20 
Не в сети

Зарегистрирован: 2015-дек-10 17:57
Сообщения: 4
Добрый день. Возникла проблема с SPI, при передаче 16 бит данных интерфейс передает 33 бита, вначале 16 бит, которые требуется передать, затем 17 нулевых бит. Прилагаю осциллограмму с линий SSP1_CLK и SSP1_TXD при передаче данных 0xF731 и код по настройке SPI:
При этом на линии SSP1_FSS присутствует 0 в течении 33 периодов тактового сигнала.
Правильно ли работает SPI интерфейс, и что следует изменить, чтобы интерфейс передавал только 16 бит, без последующих нулевых значений. Либо как записывать данные в область где содержатся нулевые значения?

#define PSPI2 PORTA
#define SSP2_RX PORT_Pin_11
#define SSP2_TX PORT_Pin_10
#define SSP2_CLK PORT_Pin_8
#define SSP2_FSS PORT_Pin_9
//*************************************************
void Init_SPI2(void)
{
RST_CLK_PCLKcmd(RST_CLK_PCLK_PORTA, ENABLE);
RST_CLK_PCLKcmd(RST_CLK_PCLK_SSP2, ENABLE);

PORT_InitTypeDef PORT_InitStruct;

PORT_DeInit(PSPI2);

PORT_StructInit(&PORT_InitStruct);
PORT_InitStruct.PORT_Pin = SSP2_TX|SSP2_RX|SSP2_CLK|SSP2_FSS;
PORT_InitStruct.PORT_OE = PORT_OE_OUT;
PORT_InitStruct.PORT_PULL_UP = PORT_PULL_UP_OFF;
PORT_InitStruct.PORT_PULL_DOWN = PORT_PULL_DOWN_OFF;
PORT_InitStruct.PORT_PD_SHM = PORT_PD_SHM_OFF;
PORT_InitStruct.PORT_PD = PORT_PD_DRIVER;
PORT_InitStruct.PORT_GFEN = PORT_GFEN_OFF;
PORT_InitStruct.PORT_FUNC = PORT_FUNC_ALTER;
PORT_InitStruct.PORT_SPEED = PORT_SPEED_MAXFAST;
PORT_InitStruct.PORT_MODE = PORT_MODE_DIGITAL;

PORT_Init(PSPI2, &PORT_InitStruct);
//Настройка SPI2
SSP_InitTypeDef SSP_InitStruct;

SSP_DeInit(SSP2);

SSP_StructInit(&SSP_InitStruct);

SSP_InitStruct.SSP_Mode = SSP_ModeMaster;
SSP_InitStruct.SSP_WordLength = SSP_WordLength16b;
SSP_InitStruct.SSP_SPO = SSP_SPO_High;
SSP_InitStruct.SSP_SPH = SSP_SPH_1Edge;
SSP_InitStruct.SSP_FRF = SSP_FRF_SPI_Motorola;
SSP_InitStruct.SSP_CPSDVSR = 2;
SSP_InitStruct.SSP_SCR = 0;
SSP_InitStruct.SSP_HardwareFlowControl = SSP_HardwareFlowControl_None;

SSP_Init(SSP2, &SSP_InitStruct);
SSP_Cmd(SSP2, ENABLE);
SSP_BRGInit(SSP2, SSP_HCLKdiv1);
}


Вложения:
Комментарий к файлу: Осциллограмма SSP_CLK и SSP_TXD
IMAG001.BMP
IMAG001.BMP [ 47 КБ | Просмотров: 1472 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа SPI
СообщениеДобавлено: 2015-дек-10 18:38 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1271
Откуда: АО "ПКК Миландр"
N.Mikhail писал(а):


Самого интересного кода нет. Можно глянуть на код который отправляет данные.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа SPI
СообщениеДобавлено: 2015-дек-10 23:44 
Не в сети

Зарегистрирован: 2015-дек-10 17:57
Сообщения: 4
-=Sergei=- писал(а):
Самого интересного кода нет. Можно глянуть на код который отправляет данные.


void main(void)
{
Init_SPI2();
while(1)
{
SSP_SendData(SSP2, 0xF731);
}
}

Причем такая же ситуация в режиме пошаговой отладки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа SPI
СообщениеДобавлено: 2015-дек-11 10:05 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1271
Откуда: АО "ПКК Миландр"
N.Mikhail писал(а):
-=Sergei=- писал(а):
Самого интересного кода нет. Можно глянуть на код который отправляет данные.


void main(void)
{
Init_SPI2();
while(1)
{
SSP_SendData(SSP2, 0xF731);
}
}

Причем такая же ситуация в режиме пошаговой отладки.


Странновато конечно, попробуем повторить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа SPI
СообщениеДобавлено: 2015-дек-11 15:25 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1271
Откуда: АО "ПКК Миландр"
-=Sergei=- писал(а):


Странновато конечно, попробуем повторить.


Проверили, все работает корректно.
Можно получить весь проект, в котором вы видите ошибку.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа SPI
СообщениеДобавлено: 2015-дек-11 15:39 
Не в сети

Зарегистрирован: 2015-дек-10 17:57
Сообщения: 4
Файл проекта в папке trash, под keil 5.16а, для отладочной платы 1901ВЦ1Т 4 ревизии


Вложения:
BDSP_SPI.zip [1.05 МБ]
Скачиваний: 76
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа SPI
СообщениеДобавлено: 2015-дек-11 17:42 
Не в сети

Зарегистрирован: 2015-июн-26 10:23
Сообщения: 50
Сначала затактировать блок SSP_BRGInit(SSP2, SSP_HCLKdiv1);, затем уже настраивать его и включать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа SPI
СообщениеДобавлено: 2015-дек-11 18:06 
Не в сети

Зарегистрирован: 2015-дек-10 17:57
Сообщения: 4
Dimulk писал(а):
Сначала затактировать блок SSP_BRGInit(SSP2, SSP_HCLKdiv1);, затем уже настраивать его и включать.

Спасибо, все заработало. Этот пункт добавите в документацию? или он уже где то описан?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB