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

 
 
> STM32F100 - не могу записать данные в SPI_DR
RAmsi
сообщение Jul 28 2016, 15:58
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 5-04-09
Пользователь №: 47 200



SPI1 в режиме slave. Настроено прерывание по получению байта от SPI master от другого контроллера. В прерывании пытаюсь записать в SPI_DR байт из буфера (или просто число 0b00110011), который будет передаваться при следующем сеансе по инициативе masterа. Master принимает сплошные нули, а SPI1_DR в slave после SPI1->DR = 0b00110011 или SPI_I2C_SendData(...) не меняет свое значение. Как затолкнуть данные в приемный буфер SPI slave? Фантазия по поиску криворукого бага иссякла, тем более, что подобная конструкция раньше прекрасно работала. Код, настройки SPI и состояние регистров в скринах дебага.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение


Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Jul 29 2016, 06:44
Сообщение #2


Гуру
******

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



QUOTE (RAmsi @ Jul 28 2016, 18:58) *
Master принимает сплошные нули
С этим надо разбираться. Для начала отключите slave или его CS и замкните MOSI-MISO на мастере. После этого мастер должен принимать то, что сам же и передает. Когда это заработает - можно будет приниматься за slave.
QUOTE (RAmsi @ Jul 28 2016, 18:58) *
а SPI1_DR в slave после SPI1->DR = 0b00110011 или SPI_I2C_SendData(...) не меняет свое значение.
А вот это нормально. На самом деле там два регистра - в один данные принимаются (именно его содержимое вы видете, когда читаете DR), а из второго передаются (в него они попадают, когда вы пишете в DR). То есть независимо от того, что вы записали - читаться все равно будет последний принятый байт.


--------------------
На любой вопрос даю любой ответ
"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



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

 


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


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