Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32, SPI, данные не записываются в регистр DR
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Метценгерштейн
непонятность с SPI:
в ф-ю SPI_I2S_SendData(); приходят данные (0xF0), это видно на скрине


а после след. шага эти данные в регистр DR не записываются


о почему так?
koyodza
Проверьте чему равно SPIx
Может там не SPI1
AHTOXA
Наверное потому, что DR на чтение и DR на запись - это два разных регистра?
Метценгерштейн
да вроде как это один регистр. Да и на скрине справа видно, что красным нигде новые данные не появились.

вот скрин того, что пришло как SPI1.
koyodza
А Вас не смущает, что в окне справа и в tooltip при наведении курсором не совпадают и другие регистры?
Ищите, Вы или не тот SPI мониторите, или не туда пишете
AHTOXA
Цитата(Метценгерштейн @ Jan 28 2013, 18:39) *
да вроде как это один регистр. Да и на скрине справа видно, что красным нигде новые данные не появились.

Нет, это разные регистры:
Цитата
DR[15:0]: Data register
Data received or to be transmitted.
The data register is split into 2 buffers - one for writing (Transmit Buffer) and another one for
reading (Receive buffer). A write to the data register will write into the Tx buffer and a read
from the data register will return the value held in the Rx buffer.

Метценгерштейн
регистры разные, но виден нам только один. Он в отладчике и присутствует.

пока не победил. Разбираюсь.
AHTOXA
Цитата(Метценгерштейн @ Jan 28 2013, 20:09) *
регистры разные, но виден нам только один. Он в отладчике и присутствует.

Вот именно. Видите вы тот, что для чтения. А пишете - в другой.
Тот, который вы видите, изменится тогда, когда будет принят байт (и взведётся флаг RXNE).
(Флаг этот, кстати, сбрасывается чтением DR. Так что вы его можете потерять при наблюдении DR в отладчике.)
Метценгерштейн
а, похоже на правду.
А как мне просмотреть тогда? Какие методы есть? Что тут посоветовать?
А по тому, что я в SPI1 данные отправляю- это видно из структуры?

Я wiznet инициализирую, но данные с него не получаю, вот и роюсь в SPI. Значит, передача все-же работает.
toweroff
Кстати, так можно словить и еще один глюк - в отладчике при показе содержимого DR регистр УЖЕ прочитался. В результате в программе получим совсем не то, что хотели
Метценгерштейн
итого, как в отладчике делают, чтобы смотреть что пришло в железо по SPI? И чтобы наш просмотр не влиял ни на что.
toweroff
Цитата(Метценгерштейн @ Jan 28 2013, 21:58) *
итого, как в отладчике делают, чтобы смотреть что пришло в железо по SPI? И чтобы наш просмотр не влиял ни на что.

я ставлю бряк на присваивании переменной, например, того же DR
выполняю и смотрю значение переменной
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.