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

 
 
> Как передать 7 бит по SPI ?
uzzzer
сообщение Jul 9 2015, 07:15
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 78
Регистрация: 7-10-10
Из: Москва
Пользователь №: 59 985



Добрый день!
Как передать по SPI семь бит данных в семибитный сдвиговый регистр?
Есть четыре регистра соедененных каскадом,получается 7+7+7+7 битовый регистр. Но когда передаешь семибитовые числа, то данные сдвигаются, так как присутствует в передачи "0" от SPDR, как сложить данные, что бы передача была корректной.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Obam
сообщение Jul 9 2015, 07:40
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



Я правильно понял "четыре регистра соедененных каскадом,получается 7+7+7+7 битовый регистр."?
Если правильно, то "разложить" 28 бит в 4 байта и заслать четырьмя посылками. К примеру, MSB-first: четыре старших бита нули, а остальные 28 нужные биты подряд.


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
uzzzer
сообщение Jul 9 2015, 07:55
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 78
Регистрация: 7-10-10
Из: Москва
Пользователь №: 59 985



Цитата(Obam @ Jul 9 2015, 10:40) *
Я правильно понял "четыре регистра соедененных каскадом,получается 7+7+7+7 битовый регистр."?
Если правильно, то "разложить" 28 бит в 4 байта и заслать четырьмя посылками. К примеру, MSB-first: четыре старших бита нули, а остальные 28 нужные биты подряд.


Вы все правильно понялиsm.gif Вот в этом у меня и вопрос, как это сделать правильно?

Я уже поднимал подобный вопрос в теме:
http://electronix.ru/forum/index.php?showtopic=127773
С регистром 595 проблем нет, все шлется, индикаторы подсвечиваются и т.д. А вот с семибитными регистрами проблема.
Go to the top of the page
 
+Quote Post
zombi
сообщение Jul 9 2015, 14:15
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(uzzzer @ Jul 9 2015, 10:55) *
А вот с семибитными регистрами проблема.
А что за регистры?


Цитата(Lerk @ Jul 9 2015, 14:55) *
Вообще странно на таком форуме видеть возмущение наличию разных стандартов записи: они были придуманы еще до нас.

Что за стандарты?
Go to the top of the page
 
+Quote Post
uzzzer
сообщение Jul 10 2015, 02:55
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 78
Регистрация: 7-10-10
Из: Москва
Пользователь №: 59 985



Цитата(zombi @ Jul 9 2015, 17:15) *
А что за регистры?


Регистры в матричном индикаторе HDSP2001,даташит во вложениях.


Цитата(pavel-pervomaysk @ Jul 9 2015, 20:12) *
Если нужна скорость по аппаратному SPI, то выше уже показали как это сделать, собрать в слово свои 28 бит, Биты ([31...28] для MSB first), ([3...0] LSB first) очистить, и слать по очереди 4 байта.


Сейчас буду пробывать сделать и так и так. Только меня смущает вот что: Какое максимальное число можно передать таким способом? Допустим я склею 28(32) бита, потом резать по 4? Правильно? А вот склееное число, если оно будет не 32 бита, а например 255 бит или больше?К стати как лучше разобрать склееное число по 8 бит?

Сообщение отредактировал uzzzer - Jul 10 2015, 02:56
Прикрепленные файлы
Прикрепленный файл  HDSP_201X_datasheet.pdf ( 426.61 килобайт ) Кол-во скачиваний: 16
 
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 10 2015, 04:54
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(uzzzer @ Jul 10 2015, 05:55) *
пробывать
Не стоит. Попробуйте пробовать.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
uzzzer
сообщение Jul 10 2015, 08:23
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 78
Регистрация: 7-10-10
Из: Москва
Пользователь №: 59 985



Цитата(Сергей Борщ @ Jul 10 2015, 07:54) *
Не стоит. Попробуйте пробовать.

Попробовал. Все получилось. На данном этапе вполне устраивает. Реализовал програмный SPI.

Код
void data_send(int qi, int *data, int n)
{
    int c;
for (int i=0;i<=n-1;i++)
{
    c=data[(qi-1)+5*i];
    for (int j=0;j<7;j++)
    {
        if ((c&0x40)==0x00) PORTA&=~_BV(DATA);
        else PORTA|=_BV(DATA);
        asm("nop");
        PORTA&=~_BV(SCL);
        asm("nop");
        PORTA|=_BV(SCL);
        asm("nop");
        c=(c<<1);
    }
    asm("nop");
    asm("nop");
}
}

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- uzzzer   Как передать 7 бит по SPI ?   Jul 9 2015, 07:15
- - Lmx2315   ..самодельным SPI в софтовой реализации.   Jul 9 2015, 07:22
|- - uzzzer   Цитата(Lmx2315 @ Jul 9 2015, 10:22) ..сам...   Jul 9 2015, 07:24
|- - Lmx2315   Цитата(uzzzer @ Jul 9 2015, 11:24) Вот то...   Jul 9 2015, 07:32
|- - Lmx2315   Цитата(uzzzer @ Jul 9 2015, 11:55) Я уже ...   Jul 9 2015, 08:08
||- - Сергей Борщ   Цитата(Lmx2315 @ Jul 9 2015, 11:08) x = (...   Jul 9 2015, 08:57
||- - uzzzer   Цитата(Lmx2315 @ Jul 9 2015, 11:08) ..ком...   Jul 9 2015, 09:30
||- - Lmx2315   Цитата(uzzzer @ Jul 9 2015, 13:30) Немног...   Jul 9 2015, 09:45
- - Obam   d[0]=d[0] | (d[1] << 7); d[1]=(d[1] >...   Jul 9 2015, 08:03
- - Obam   uzzzer, см. http://electronix.ru/forum/index.php?s...   Jul 9 2015, 09:38
|- - uzzzer   Цитата(Obam @ Jul 9 2015, 12:38) uzzzer, ...   Jul 9 2015, 09:40
- - Obam   Разве не на 7-е сообщение?   Jul 9 2015, 09:44
- - Lerk   Вот картинка о том, что вам пытаются донести: Цве...   Jul 9 2015, 10:08
|- - Obam   Вот почему MSB не нарисовать слева? Арабы мы что л...   Jul 9 2015, 10:19
|- - Lerk   Цитата(Obam @ Jul 9 2015, 13:19) Вот поче...   Jul 9 2015, 10:27
- - Obam   Не флуда ради, но на рисунке регистры, а не осцилл...   Jul 9 2015, 10:35
|- - Lerk   Цитата(Obam @ Jul 9 2015, 13:35) Не флуда...   Jul 9 2015, 11:55
- - pavel-pervomaysk   На асме. Такт по фронту. ; LCD names pinouts .eq...   Jul 9 2015, 17:12
- - zombi   Цитата(pavel-pervomaysk @ Jul 9 2015, 20...   Jul 9 2015, 17:23


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

 


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


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