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

 
 
> 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
Ответов
Tarbal
сообщение Jun 20 2016, 00:02
Сообщение #2


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

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



А замена на такую функцию (без аппаратной поддержки SPI) прекрасно работает.

CODE

#define PIN(PORT, PIN) GPIO##PORT, GPIO_PIN_##PIN

#define SPI1_CLK_PIN PIN(B, 3)
#define SPI1_MOSI_PIN PIN(A,7)
#define SPI1_MISO_PIN PIN(A, 6)
#define SPI1_SS_PIN PIN(A, 4)

#define SET_CLK1() HAL_GPIO_WritePin(SPI1_CLK_PIN, 1)
#define CLR_CLK1() HAL_GPIO_WritePin(SPI1_CLK_PIN, 0)

#define SET_MOSI1() HAL_GPIO_WritePin(SPI1_MOSI_PIN, 1)
#define CLR_MOSI1() HAL_GPIO_WritePin(SPI1_MOSI_PIN, 0)

#define GET_MISO1() HAL_GPIO_ReadPin(SPI1_MISO_PIN)

int SPI_Transmit1(SPI_HandleTypeDef *hspi, uint8_t* val, uint32_t timeout)
{
int i;
uint8_t res= 0, tmp = *val;
if(&hspi1 == hspi){
for(i = 0; i < 8; i++){
res <<= 1;
CLR_CLK1();
if(tmp & 0x80){
SET_MOSI1();
} else {
CLR_MOSI1();
}
res |= GET_MISO1();
SET_CLK1();
tmp <<= 1;
}
} else {
return SPI_Transmit1_hw(hspi, val, timeout);
}
*val = res;
return 0;
}


В принципе если ожидать в цикле флагов, аппаратное исполнение не дает выигрыша, ну разве только на выскоких частотах обмена. Программное исполнение дает клок 1 мегагерц, что довольно сносно.
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
- - 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
- - RadiatoR   Извиняюсь, что немного не в тему, но ситуация тоже...   Jun 23 2016, 17:45
|- - Obam   Цитата(RadiatoR @ Jun 23 2016, 21:45) Из...   Jun 24 2016, 06:55
|- - RadiatoR   Цитата(RadiatoR @ Jun 23 2016, 20:45) Ил...   Jun 24 2016, 07:40
|- - 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 Текстовая версия Сейчас: 23rd July 2025 - 04:17
Рейтинг@Mail.ru


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