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

 
 
> SPI1 в STM32F429 считывает 0 в младший бит
Tarbal
сообщение Jun 16 2016, 00:06
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Если не давать сброс на периферийное устройство (slave), подключенное к SPI, то у него на выходе MISO стоит твердая единица. Однако если считывать в процессор, то вместо 0xFF читается 0xFE.

Происходит ошибочное чтение нестабильно. Иногда читается правильно. Однако если к выходу SPI CLK присоединить щуп осциллографа, то правильного чтения больше не происходит. Стабильно читается 0xFE.

Я нашел в форуме ST, что такое происходит если читать данные не дожидаясь установки RXNE в единицу. Однако в моем коде я жду установки RXNE в единицу.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
RadiatoR
сообщение Jun 23 2016, 17:45
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 270
Регистрация: 8-08-15
Из: Москва
Пользователь №: 87 901



Извиняюсь, что немного не в тему, но ситуация тоже с SPI. Сегодня выкопал баг:
Код
byte SPIRead(byte reg)
{
    volatile short temp;
    temp=SPI2->DR;// Эти сделаны как заплатка. Без них получается какая-то шляпа
    temp=SPI2->DR;
    temp=SPI2->DR;
    CS_EN;
    SPI2->DR=reg|0x80;
    //busy=true; Это я в комментах расскажу
    while(!(SPI2->SR&SPI_SR_RXNE));
    //busy=false;
    CS_DIS;
    temp=SPI2->DR;
    temp>>=8;
    return temp;
}


Короче заметил девайс подвисает периодически. Начал дебажить - зависает в while(!(SPI2->SR&SPI_SR_RXNE));. Что в итоге происходит - пока ждем, возникает прерывание системного таймера. Он сам по себе устанавливает 1 флаг в 50 герц, по которому из главного цикла опрашивается акселерометр, это единственная его задача. После обработчика возвращаемся в цикл и больше никогда из него не выходим. То есть если в нем войти в обработчик, то бит RXNE не установится. Юзал бряк busy и через if(busy) в таймере понимал, что мы попали в прерывание во время цикла. В пошаговой отладке этот бит не устанавливается, хотя в ДШ четко сказано:

A read access to the SPIx_DR register must be managed by the RXNE event. This event is triggered when data is stored in RXFIFO and the threshold (defined by FRXTH bit) is reached. When RXNE is cleared, RXFIFO is considered to be empty.

Или по крайней мере этот бит очень быстро сбрасывается (не понятно почему)
Go to the top of the page
 
+Quote Post
RadiatoR
сообщение Jun 24 2016, 07:40
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 270
Регистрация: 8-08-15
Из: Москва
Пользователь №: 87 901



Цитата(RadiatoR @ Jun 23 2016, 20:45) *
Или по крайней мере этот бит очень быстро сбрасывается (не понятно почему)


Разобрался - до сих пор не могу в голову вдолбить, что регистру пофигу кто его читает - mcu или дебаггер. После чтения дебаггером регистра (а он читается автоматически при пошаговой отладке) RXNE сбрасывался и происходило бесконечное ожидание. Дописал timeout на всякий случай.

Цитата(Obam @ Jun 24 2016, 09:55) *
Не флуда ради, а токмо просвещения для… какое соотношение между частотой ядра и частотой SCK, что все (ну практически все) в примерах с SPI в тупых циклах ожидают изменения флагов, а не используют \шёпотом\ прерывание?


48МГц/93кГц.
Все что делает у меня прога это 50раз в сек читает датчик и выкидывает его на CAN шину. Даже заморачиваться не стал с прерываниями.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Tarbal   SPI1 в STM32F429 считывает 0 в младший бит   Jun 16 2016, 00:06
- - RadiatoR   Попробуйте прочитать по флагу BSY. Вообще есть ли ...   Jun 16 2016, 05:11
|- - scifi   Цитата(RadiatoR @ Jun 16 2016, 08:11) По...   Jun 16 2016, 07:13
|- - Tarbal   Цитата(RadiatoR @ Jun 16 2016, 09:11) По...   Jun 16 2016, 12:37
|- - RadiatoR   Цитата(Tarbal @ Jun 16 2016, 15:37) Оба к...   Jun 16 2016, 18:56
|- - adnega   Цитата(Tarbal @ Jun 16 2016, 15:37) Но у ...   Jun 16 2016, 19:38
||- - Tarbal   Цитата(adnega @ Jun 16 2016, 23:38) Видел...   Jun 17 2016, 11:59
||- - adnega   Цитата(Tarbal @ Jun 17 2016, 14:59) На фо...   Jun 17 2016, 12:15
|- - ViKo   Цитата(Tarbal @ Jun 16 2016, 15:37) у мен...   Jun 17 2016, 18:52
|- - adnega   Цитата(ViKo @ Jun 17 2016, 21:52) Повесьт...   Jun 17 2016, 18:56
|- - ViKo   Цитата(adnega @ Jun 17 2016, 21:56) Дык, ...   Jun 17 2016, 20:12
|- - adnega   Цитата(ViKo @ Jun 17 2016, 23:12) И де вы...   Jun 17 2016, 22:46
|- - ViKo   Цитата(adnega @ Jun 18 2016, 01:46) На вы...   Jun 18 2016, 06:32
|- - adnega   Цитата(ViKo @ Jun 18 2016, 09:32) "П...   Jun 18 2016, 08:40
|- - ViKo   Цитата(adnega @ Jun 18 2016, 11:40) На пи...   Jun 18 2016, 10:45
|- - adnega   Цитата(ViKo @ Jun 18 2016, 13:45) С желез...   Jun 18 2016, 11:24
|- - ViKo   Цитата(adnega @ Jun 18 2016, 14:24) С чег...   Jun 18 2016, 13:01
|- - adnega   Цитата(ViKo @ Jun 18 2016, 16:01) С перво...   Jun 18 2016, 13:24
- - SasaVitebsk   А какая настройка?   Jun 16 2016, 05:45
- - ViKo   Смотря, каким фронтом записываете и читаете. Надо ...   Jun 16 2016, 06:06
- - RadiatoR   Вообще сам флаг BSY для приема использовать не пра...   Jun 16 2016, 07:34
- - ViKo   Что-то мне подсказывает, что если прочитать руково...   Jun 17 2016, 13:16
|- - Tarbal   Цитата(ViKo @ Jun 17 2016, 17:16) Не дума...   Jun 17 2016, 14:47
- - Alex11   А у Вас что, на клоке вход и нет ни сигнала ни под...   Jun 17 2016, 16:02
|- - Tarbal   Цитата(Alex11 @ Jun 17 2016, 20:02) А у В...   Jun 17 2016, 18:23
- - ViKo   То, что читалось 0xFE, связано с работой не по ман...   Jun 18 2016, 14:07
|- - adnega   Цитата(ViKo @ Jun 18 2016, 17:07) Вы прос...   Jun 18 2016, 19:25
|- - ViKo   Цитата(adnega @ Jun 18 2016, 22:25) Посмо...   Jun 19 2016, 15:28
|- - adnega   Цитата(ViKo @ Jun 19 2016, 18:28) У меня ...   Jun 19 2016, 18:21
|- - adnega   Цитата(adnega @ Jun 19 2016, 21:21) ошибк...   Jun 19 2016, 19:16
|- - ViKo   Цитата(adnega @ Jun 19 2016, 22:16) Вопро...   Jun 19 2016, 19:59
- - Genadi Zawidowski   Код отсылки/приёма байта по SPI в студию...   Jun 18 2016, 20:04
|- - adnega   Цитата(Genadi Zawidowski @ Jun 18 2016, 23...   Jun 19 2016, 08:38
- - Tarbal   Вроде нашел в чем дело. Я поначалу не знал, что ха...   Jun 19 2016, 16:42
|- - ViKo   Цитата(Tarbal @ Jun 19 2016, 19:42) Бываю...   Jun 19 2016, 18:13
|- - Tarbal   Цитата(ViKo @ Jun 19 2016, 22:13) Пе-ре-м...   Jun 19 2016, 18:57
|- - Tarbal   Цитата(ViKo @ Jun 19 2016, 22:13) Пе-ре-м...   Jun 19 2016, 20:58
- - Alex11   http://www.yageo.com/NewPortal/_en/search/search-1...   Jun 19 2016, 20:53
- - ViKo   Ага, нашел, jumper. Он еще и точность имеет, и мощ...   Jun 19 2016, 21:14
|- - Tarbal   Цитата(ViKo @ Jun 20 2016, 01:14) Ага, на...   Jun 19 2016, 22:23
- - Tarbal   А замена на такую функцию (без аппаратной поддержк...   Jun 20 2016, 00:02
- - ViKo   С HAL мучайтесь сами, мне это не интересно. У меня...   Jun 20 2016, 04:52
|- - Tarbal   Цитата(ViKo @ Jun 20 2016, 08:52) С HAL м...   Jun 20 2016, 12:20
|- - ViKo   Цитата(Tarbal @ Jun 20 2016, 15:20) Я уже...   Jun 20 2016, 12:52
|- - Tarbal   Цитата(ViKo @ Jun 20 2016, 16:52) И какие...   Jun 21 2016, 13:47
- - ViKo   Еще бы и программный ногодрыг не работал... Четы...   Jun 21 2016, 14:28
|- - adnega   Цитата(ViKo @ Jun 21 2016, 17:28) Заметьт...   Jun 21 2016, 17:24
|- - Tarbal   Цитата(ViKo @ Jun 21 2016, 18:28) Еще бы ...   Jun 21 2016, 23:31
|- - ViKo   Цитата(Tarbal @ Jun 22 2016, 02:31) Не бу...   Jun 22 2016, 05:04
|- - Tarbal   Цитата(ViKo @ Jun 22 2016, 09:04) И что с...   Jun 22 2016, 21:43
- - ViKo   Ссылку на тему на ST выдайте, please! "чт...   Jun 23 2016, 04:39
|- - Tarbal   Цитата(ViKo @ Jun 23 2016, 08:39) Ссылку ...   Jun 23 2016, 10:32
||- - ViKo   Цитата(Tarbal @ Jun 23 2016, 13:32) Вы ка...   Jun 23 2016, 20:24
|- - Tarbal   Цитата(ViKo @ Jun 23 2016, 07:39) Ссылку ...   Dec 16 2016, 02:42
|- - Obam   Цитата(RadiatoR @ Jun 23 2016, 21:45) Из...   Jun 24 2016, 06:55
|- - Obam   Цитата(RadiatoR @ Jun 24 2016, 11:40) 48...   Jun 24 2016, 07:57
- - RadiatoR   наврал. 24/93   Jun 24 2016, 09:20
|- - Obam   Цитата(RadiatoR @ Jun 24 2016, 13:20) на...   Jun 24 2016, 09:50
- - Tarbal   Я бы провел серию тестов. Вот такую функцию (сами ...   Jun 24 2016, 10:13
- - RadiatoR   Не требуется, я уже все сделал. В системе тока 1 п...   Jun 24 2016, 12:24


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

 


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


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