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

 
 
> SSEL1 в SSP в LPC21x всё-таки машет аппаратно!
InsolentS
сообщение Aug 29 2009, 07:30
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 414
Регистрация: 8-06-06
Пользователь №: 17 897



Не знаю, сделал ли я большое открытие, но SSP всё-таки дёргает аппаратно SSEL !! Надо просто вешать на этот вывод подтяжку, т.к. в данном случае тип выхода меняется на открытый коллектор. Лично я долго парился по этому вопросу, в интернете ничего нет на эту тему, в даташите тоже не ясно. Видел многих кто плюнул и работал с SSEL через GPIO.


--------------------
Курильщик даташитов со стажем
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Aug 29 2009, 09:58
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(InsolentS @ Aug 29 2009, 10:30) *
Не знаю, сделал ли я большое открытие, но SSP всё-таки дёргает аппаратно SSEL
...
в даташите тоже не ясно.

Полагаю, что после таких заявлений подпись про "курильщика даташитов..." придется убрать sad.gif"
Цитата
Slave Select/Frame Sync/Chip Select. When the SSP is a
bus master, it drives this signal from shortly before the start
of serial data, to shortly after the end of serial data, to signify
a data transfer as appropriate for the selected bus and
mode. When the SSP is a bus slave, this signal qualifies the
presence of data from the Master, according to the protocol
in use. When there is just one bus master and one bus
slave, the Frame Sync or Slave Select signal from the
Master can be connected directly to the slave’s
corresponding input. When there is more than one slave on
the bus, further qualification of their Frame Select/Slave
Select inputs will typically be necessary to prevent more
than one slave from responding to a transfer.

Какие именно моменты из отцитированного выше не ясны?
Цитата
Надо просто вешать на этот вывод подтяжку, т.к. в данном случае тип выхода меняется на открытый коллектор.

Тоже нет.
Цитата
Видел многих кто плюнул и работал с SSEL через GPIO.

Я и не такое видел, ну и что? И сам работаю через GPIO, если нужно обеспечить постоянное наличие SSEL при передаче потока байтов вне зависимотси от темпа их запихивания в FIFO.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
InsolentS
сообщение Aug 29 2009, 15:04
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 414
Регистрация: 8-06-06
Пользователь №: 17 897



Цитата(zltigo @ Aug 29 2009, 13:58) *
Тоже нет.

Проверьте у себя, без подтяжки SSP машет чип-селектом только в режиме microwire или SSI, но не SPI.
И в даташите на этот счёт ничего нет, тот кусок что Вы привели, я выучил наизусть уже smile.gif


--------------------
Курильщик даташитов со стажем
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 29 2009, 15:24
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(InsolentS @ Aug 29 2009, 18:04) *
..

Не морочте людям голову. В документации ясно описано и поведение SSEL0, SSEL1 и различие в их поведении, и НЕ описан ни один из SSEL как OD. LPC213x/LPC214x оба SPI документации соответствуют.
И
Цитата
SSEL1 в SSP в LPC21x всё-таки машет аппаратно!

Машет не "все-таки" а в полном соответствии с документацией, чем и пользуюсь с момента появления SSP у первых LPC213x.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
evgen2
сообщение Sep 2 2009, 14:50
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688



Цитата(zltigo @ Aug 29 2009, 18:24) *
чем и пользуюсь с момента появления SSP у первых LPC213x.

а не покажете бестолковому, как использовать SSP для связи двух LPC213x ? Вроде бы все делаю как надо, а куда-то не туда все уходит :-/.

Сообщение отредактировал evgen2 - Sep 2 2009, 14:51
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 2 2009, 15:37
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(evgen2 @ Sep 2 2009, 17:50) *
а не покажете бестолковому, как использовать SSP для связи двух LPC213x ? Вроде бы все делаю как надо, а куда-то не туда все уходит :-/.

Вам ответить в стиле Вашего вопроса, или попрбуете нормально рассказать что не получается?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
evgen2
сообщение Sep 2 2009, 20:37
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688



Цитата(zltigo @ Sep 2 2009, 18:37) *
Вам ответить в стиле Вашего вопроса, или попрбуете нормально рассказать что не получается?

Вот это и не получается. В слейве выдает 8 фреймов и все, в мастере и передает, и принимает, даже если кабель на друго проц выдернуть. Принимает исключительно 0xffff, причем только если в jtag-отладчике нажимать F5, если ходить пошагово - приема нет.
/* master.c */

#include "LPC230x.h" // Keil: Register definition file for LPC2378
#define MASTER 1

void LPCInit(void);
void SSP_Init(int master);
static int razs=0;
static int razr=0;
int mas[256];

int main()
{ int cmd=0, rcmd=0, par;
LPCInit();
#if MASTER
SSP_Init(1);
#else
SSP_Init(0);
#endif
while(1)
{
#if MASTER
if(SSP0SR & 0x02) //1= TNF Transmit FIFO Not Full.
{ SSP0DR = cmd;
cmd++;
razs ++;
}
if(SSP0SR & 0x04) //1= RNE Receive FIFO Not Empty
{ rcmd = SSP0DR;
mas[razr&0xff] = rcmd;
razr++;
}
#else
if(SSP0SR & 0x04) //1= RNE Receive FIFO Not Empty
{ rcmd = SSP0DR;
mas[razr&0xff] = rcmd;
razr++;
}
// if(rcmd != 0)
{
if(SSP0SR & 0x02) //1= TNF Transmit FIFO Not Full.
{ cmd = razr; //(rcmd&0xff) | ((razr<<8)& 0xff00);
SSP0DR = cmd;
razs++;
}
}

#endif
}
}

void SSP_Init(int master)
{
PCONP |= (1<<21); // power on SSP0 module (default = ON)
/* Вариант 0 /
PINSEL0 = 0x80000000; // configure P0.15 as SCK0
PINSEL1 = 0x0000002a; // configure P0.16 as SSEL0, 0.17 as MISO0, 0.18 as MOSI0
*/
/* Вариант 1 */

PINSEL2 = 0;
PINSEL3 = 0x3cf00; //11 1100 1111 0000 0000
/* */
//P1.20 SCK0, P1.21 - SSEL0, P1.23 - MISO0, P1.24 - MOSI0

SSP0CR0 = 0xf; // 16 бит
/*
SSP0CR0
15:8 SCR Serial Clock Rate. The number of prescaler-output clocks per bit on the bus, minus one. Given that CPSDVR is the prescale
divider, and the APB clock PCLK clocks the prescaler, the bit frequency is PCLK / (CPSDVSR x [SCR+1]).
*/
if(master)
{
SSP0CPSR = 2; // CPSDVSR Master
SSP0CR1 = 0x2; // Enabled, Master mode
} else {
SSP0CPSR = 12; // CPSDVSR Slave
SSP0CR1 = 0x6; // Enabled, Slave mode
}
}


void LPCInit(void)
{
T1TCR=1;
return;
}
Go to the top of the page
 
+Quote Post
rezident
сообщение Sep 2 2009, 21:05
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(evgen2 @ Sep 3 2009, 02:37) *
Вот это и не получается. В слейве выдает 8 фреймов и все, в мастере и передает, и принимает, даже если кабель на друго проц выдернуть.
В SPI нет приема или передачи по-отдельности, а только обмен данными. Чтобы что-то принять нужно что-то передать. SPI-слейв не генерит сам тактовый сигнал. Поэтому чтобы мастер принял данные от слейва он должен что-то передавать. Причем передавать данные в таком же количестве в каком он желает принять от слейва.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- InsolentS   SSEL1 в SSP в LPC21x всё-таки машет аппаратно!   Aug 29 2009, 07:30
||- - zltigo   Цитата(evgen2 @ Sep 2 2009, 23:37) В слей...   Sep 2 2009, 20:54
|||- - evgen2   Цитата(zltigo @ Sep 2 2009, 23:54) Ну, дл...   Sep 2 2009, 21:24
||- - GetSmart   КодIn Slave mode, the SSP clock rate provided by t...   Sep 2 2009, 21:20
|- - GetSmart   Цитата(evgen2 @ Sep 2 2009, 20:50) а не п...   Sep 2 2009, 15:55
- - evgen2   процессор LPC2378, в паре планируется LPC214. Обн...   Sep 3 2009, 22:55
|- - GetSmart   Цитата(evgen2 @ Sep 4 2009, 04:55) Т.е. ...   Sep 3 2009, 23:39
||- - evgen2   Цитата(GetSmart @ Sep 4 2009, 02:39) Посл...   Sep 4 2009, 22:57
|- - zltigo   Цитата(evgen2 @ Sep 4 2009, 01:55) а 8 ра...   Sep 4 2009, 07:11
- - GetSmart   хз. Возможно это клинический случай   Sep 4 2009, 23:18
|- - evgen2   Цитата(GetSmart @ Sep 5 2009, 02:18) хз. ...   Sep 4 2009, 23:34
- - GetSmart   Вообще, должен через 2 посылки. Если мастер будет ...   Sep 4 2009, 23:43
|- - evgen2   Цитата(GetSmart @ Sep 5 2009, 03:43) Вооб...   Sep 5 2009, 05:12
- - evgen2   Кстати о птичках. В несколько другом проекте с ис...   Sep 9 2009, 19:56
- - zltigo   Цитата(evgen2 @ Sep 9 2009, 21:56) Кстати...   Sep 9 2009, 20:43
- - evgen2   Цитата(zltigo @ Sep 10 2009, 00:43) Птичк...   Sep 9 2009, 23:32
- - zltigo   Цитата(evgen2 @ Sep 10 2009, 01:32) на 21...   Sep 10 2009, 06:07
- - evgen2   Цитата(zltigo @ Sep 10 2009, 10:07) Однак...   Sep 10 2009, 21:37
- - zltigo   Цитата(evgen2 @ Sep 10 2009, 23:37) Ну та...   Sep 10 2009, 23:10
- - evgen2   Цитата(zltigo @ Sep 11 2009, 03:10) Да, а...   Sep 11 2009, 07:50
|- - zltigo   Цитата(evgen2 @ Sep 11 2009, 09:50) О, во...   Sep 11 2009, 08:11
- - evgen2   Цитата(zltigo @ Sep 11 2009, 03:10) Дальш...   Sep 11 2009, 12:20
- - zltigo   Цитата(evgen2 @ Sep 11 2009, 14:20) Ну а ...   Sep 11 2009, 12:41
- - GetSmart   Цитата(zltigo @ Sep 11 2009, 18:41) Кусок...   Sep 11 2009, 12:56
- - evgen2   Цитата(zltigo @ Sep 11 2009, 16:41) Дожда...   Sep 11 2009, 15:23


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

 


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


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