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

 
 
> Один SPI на два дивайса
Oleg_IT
сообщение Nov 23 2015, 07:17
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



STM32F417. Есть два дивайса, датчик температуры и управляемый резистор, из первого нужно только читать данные, во второй только писать, выводы MOSI, MISO развожу по соответствующим девайсам, CS понятно разные. SPI2 назначать как Full-Duplex Master?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Oleg_IT
сообщение Nov 23 2015, 07:39
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Спасибо.
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Dec 11 2015, 08:55
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Так не получается. Проект генерю из STM32CubeMx. Пока работаю только с датчиком температуры, подключены SO, SCK и CS. Если конфигурить SPI как Full-Duplex Master то программа виснет на чтении данных, если как Receive Only Msster то данные идут, но не полностью.
SPI сконфигурю с DMA, когда наступает момент чтения температуры вызываю функции
Код
    uint16_t Temp; // Значение измеренной температуры
…………………………………………………
    HAL_GPIO_WritePin(GPIOA,CS_Termo_Pin,GPIO_PIN_RESET);
    HAL_SPI_Receive_DMA(&hspi1,(uint8_t*)&Temp,2);

По окончанию работы DMA вызывается прерывание со статусом HAL_DMA_STATE_READY_MEM0, поднимаю пин CS
Код
    HAL_GPIO_WritePin(GPIOA,CS_Termo_Pin,GPIO_PIN_SET);


Но по осциллографу вижу, что CS отключает датчик температуры ровно посередине второго байта. Соответственно первый байт приходит, видно он меняется, второго байта нет. Почему так может быть? В какой момент отключать CS?

Как правильно работать с несколькими девайсами ни одном SPI? Нужно и одно чтение и одна запись и Full-Duplex Master для третьего девайса.
Go to the top of the page
 
+Quote Post
scifi
сообщение Dec 11 2015, 10:58
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Oleg_IT @ Dec 11 2015, 11:55) *
Так не получается. Проект генерю из STM32CubeMx.

По-моему, вывод очевиден. Куб - в топку. Накодить всё самостоятельно, как принято у настоящих мущщин laughing.gif
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение Dec 11 2015, 13:34
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Цитата(scifi @ Dec 11 2015, 14:58) *
По-моему, вывод очевиден. Куб - в топку.

А что таково в нём плохого? Открытый код делает, что не нравится можно менять, дорабатывать, знать бы что, где.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Oleg_IT   Один SPI на два дивайса   Nov 23 2015, 07:17
- - arhiv6   Да, это будет случай Full-Duplex Master.   Nov 23 2015, 07:23
- - Oleg_IT   Спасибо.   Nov 23 2015, 07:39
|- - Obam   Цитата(Oleg_IT @ Dec 11 2015, 12:55) SPI ...   Dec 11 2015, 10:50
- - Obam   "…Как правильно работать с несколькими девайс...   Dec 11 2015, 09:29
|- - Oleg_IT   Цитата(Obam @ Dec 11 2015, 13:29) Каждому...   Dec 11 2015, 09:46
- - Obam   Вот тут-то и парадокс: когда знаешь что и где ...   Dec 11 2015, 14:19
|- - Oleg_IT   Цитата(Obam @ Dec 11 2015, 18:19) Вот тут...   Dec 11 2015, 14:40
|- - Tarbal   Цитата(Oleg_IT @ Dec 11 2015, 17:40) Да н...   Dec 12 2015, 01:07
|- - Oleg_IT   Цитата(Tarbal @ Dec 12 2015, 05:07) Контр...   Dec 14 2015, 06:41
|- - Tarbal   Цитата(Oleg_IT @ Dec 14 2015, 10:41) Не п...   Dec 14 2015, 14:26
|- - Oleg_IT   Цитата(Tarbal @ Dec 14 2015, 18:26) Прене...   Dec 15 2015, 05:42
|- - Tarbal   Цитата(Oleg_IT @ Dec 15 2015, 08:42) Не м...   Dec 15 2015, 12:09
- - Oleg_IT   Заметил особенность, при увеличении BaudRatePresca...   Dec 13 2015, 14:18


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

 


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


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