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

 
 
> STM32 HAL SPI ошибка или глюки IAR,, ошибка чтения SPI с помощью HAL от CubeMX
Pasa
сообщение Jul 27 2016, 10:20
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 4-03-09
Из: Беларусь, Минск
Пользователь №: 45 665



STM32F051, IAR, CubeMX

Читаю в пакетном режиме два регистра - ответ правильный. Добавляю чтение 3-его регистра - в приемном буфере ерунда.
На осцилографе картинка нормальная - все диаграмы и ответы красивые и правильные...

В парметрах функции пробовал и 3 сразу читать и в цикле по одному байту - не получается....

И вот так уже попробовал:
Код
uint8_t localRxBuf[4];
uint8_t data1,data2,data3;

HAL_SPI_Receive(&hspi1, (uint8_t*)&localRxBuf[0], 1, 10000);
data1 = localRxBuf[0];
HAL_SPI_Receive(&hspi1, (uint8_t*)&localRxBuf[0], 1, 10000);
data2 = localRxBuf[0];
//HAL_SPI_Receive(&hspi1, (uint8_t*)&localRxBuf[0], 1, 10000);
//data3 = localRxBuf[0];
придобавлении третьего чтения портятся data1,data2,data3......мистика какая-то. Повторюсь - на осцилографе все красиво и правильно

Такое ощущение, что HAL-библиотека глючит...
внутрь HAL что-ли полезть

Сообщение отредактировал IgorKossak - Jul 27 2016, 14:30
Причина редактирования: [codebox] для длинного кода. [code]-для короткого!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ave!
сообщение May 9 2017, 18:34
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 20-05-11
Пользователь №: 65 166



Прочитал всю ветку, пробовал все варианты под CooCox и Keil, SPL и HAL - у меня не работает на STM32F030K6.

На STM32F103С8 у меня работает и SPL и HAL - https://zxlogin.com/stm/stm32f103-rc522+hal.zip

Поделитесь рабочим кодом под STM32F030 для RC522.
Go to the top of the page
 
+Quote Post
serglg
сообщение May 10 2017, 05:04
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 146
Регистрация: 19-07-16
Пользователь №: 92 603



Цитата(ave! @ May 10 2017, 00:34) *
Прочитал всю ветку, пробовал все варианты под CooCox и Keil, SPL и HAL - у меня не работает на STM32F030K6.

На STM32F103С8 у меня работает и SPL и HAL - https://zxlogin.com/stm/stm32f103-rc522+hal.zip

Поделитесь рабочим кодом под STM32F030 для RC522.


Могу только предложить то, что у меня работает для STM32L476.

Куб проиницилизировал SPI так (8 бит, 5 МГц):

Код
static void MX_SPI1_Init(void)
{

  hspi1.Instance = SPI1;
  hspi1.Init.Mode = SPI_MODE_MASTER;
  hspi1.Init.Direction = SPI_DIRECTION_2LINES;
  hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
  hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
  hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
  hspi1.Init.NSS = SPI_NSS_SOFT;
  hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
  hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
  hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
  hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
  hspi1.Init.CRCPolynomial = 7;
  hspi1.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;
  hspi1.Init.NSSPMode = SPI_NSS_PULSE_ENABLE;
  if (HAL_SPI_Init(&hspi1) != HAL_OK)
  {
    Error_Handler();
  }

}


Все функции в файле - mfrc522.c (прикладываю).
После запуска моей программы - инициализация RC522:

Код
void TM_MFRC522_Init(void)
    {
    TM_MFRC522_Reset();

    TM_MFRC522_WriteRegister(MFRC522_REG_T_MODE, 0x8D);
    TM_MFRC522_WriteRegister(MFRC522_REG_T_PRESCALER, 0x3E);
    TM_MFRC522_WriteRegister(MFRC522_REG_T_RELOAD_L, 30);          
    TM_MFRC522_WriteRegister(MFRC522_REG_T_RELOAD_H, 0);

    /* 48dB gain */
    TM_MFRC522_WriteRegister(MFRC522_REG_RF_CFG, 0x70);
    
    TM_MFRC522_WriteRegister(MFRC522_REG_TX_AUTO, 0x40);
    TM_MFRC522_WriteRegister(MFRC522_REG_MODE, 0x3D);

    TM_MFRC522_AntennaOn();        //Open the antenna
        
    }


Потом для чтения ID карты вызываю:

Код
                STAT=TM_MFRC522_Check(CardID);
                SC522=0;
                if (STAT==0)
                    {
                                        }


Все мои беды в прошлом году были с буфером Фифо в STM32.
И всё поперло после глупости, что я применил при чтении регистров RC522:

Код
uint8_t TM_MFRC522_ReadRegister(uint8_t addr)
    {
    uint8_t val;
    
    ZAPRC522[0] = (addr << 1) & 0x7E;
    ZAPRC522[0] = ZAPRC522[0] | 0x80;

    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
    HAL_SPI_TransmitReceive(&hspi1, ZAPRC522, OTVRC522, 2, 20);
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);
    val = OTVRC522[0];
        
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
    HAL_SPI_TransmitReceive(&hspi1, ZAPRC522, OTVRC522, 2, 20);
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);
    val = OTVRC522[0];

    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
    HAL_SPI_TransmitReceive(&hspi1, ZAPRC522, OTVRC522, 2, 20);
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);
    val = OTVRC522[0];
        
    return val;
        
    }


Глупость в 3-кратном чтении одно и того же.
Но работает.
Но работает только с HAL-драйверами для STM32L4... не позже октября 2016 (версия 1.5.0).
После их обновления в феврале (версия 1.7.0) перестала работать.
Я смотрел отличия - ребята пытались как раз что-то замутить с фифо.
Но я убирал своё 3-краное чтение, комбинировал всяко, но облом.
Пришлось вернуться на драйверы октября 2016 и так оставить.
Похоже вопрос с 8-битным чтением по SPI в STM32 (через HAL) так нормально и не решен.

Прикрепленные файлы
Прикрепленный файл  mfrc522.rar ( 3.56 килобайт ) Кол-во скачиваний: 5
Прикрепленный файл  mfrc522.rar ( 3.56 килобайт ) Кол-во скачиваний: 4
 
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Pasa   STM32 HAL SPI ошибка или глюки IAR,   Jul 27 2016, 10:20
- - serglg   хочу заметить, что с HAL_SPI_Receive и у меня како...   Jul 27 2016, 15:57
|- - Pasa   Цитата(serglg @ Jul 27 2016, 19:27) Пока ...   Jul 27 2016, 17:27
|- - serglg   Цитата(Pasa @ Jul 27 2016, 23:27) ...... ...   Jul 28 2016, 04:14
- - Pasa   В инициализации SPI в HAL: Код if(hspi-...   Jul 27 2016, 20:17
- - tehn1k   Как Вы выбираете чтение того или иного регистра, е...   Jul 28 2016, 05:41
|- - serglg   Цитата(tehn1k @ Jul 28 2016, 11:41) Как В...   Jul 28 2016, 06:09
|- - tehn1k   Цитата(serglg @ Jul 28 2016, 10:09) Мне н...   Jul 28 2016, 06:55
|- - Lagman   Цитата(serglg @ Jul 28 2016, 09:09) Мне н...   Jul 28 2016, 09:35
|- - k155la3   Цитата(Lagman @ Jul 28 2016, 12:35) А зач...   Jul 28 2016, 10:18
- - k155la3   Цитата(Pasa @ Jul 27 2016, 13:20) STM32F0...   Jul 28 2016, 06:09
|- - Pasa   Обмен идет с CC2500 Цитата(k155la3 @ Jul 28 ...   Jul 28 2016, 19:48
- - k155la3   Цитата(Pasa @ Jul 27 2016, 13:20) И вот т...   Jul 28 2016, 12:45
- - rudy_b   Что-то я не понял, у вас SPI в режиме slave или m...   Jul 28 2016, 13:57
|- - alag57   В CR2 есть такой хитрый битик - FRXTH, так вот у м...   Jul 28 2016, 14:41
- - x893   Функция SPI Receive в HAL занимает строк 20 из них...   Jul 28 2016, 14:17
|- - Pasa   Цитата(x893 @ Jul 28 2016, 17:47) Функция...   Jul 28 2016, 20:08
|- - k155la3   Цитата(Pasa @ Jul 28 2016, 23:08) Никаког...   Jul 29 2016, 06:47
- - x893   Ничего хитрого The RXNE flag is set depending on t...   Jul 28 2016, 16:14
|- - alag57   Цитата(x893 @ Jul 28 2016, 21:14) Ничего ...   Jul 29 2016, 03:11
- - x893   Проверил с stm32f030 и CC2500 - всё работает как ч...   Jul 28 2016, 19:49
- - serglg   Ну вот и моя хитрость. Чтение делаю 3 (три) раза п...   Jul 29 2016, 06:12
|- - alag57   Цитата(serglg @ Jul 29 2016, 11:12) Ну во...   Jul 29 2016, 07:30
||- - serglg   Цитата(alag57 @ Jul 29 2016, 13:30) Это н...   Jul 29 2016, 08:36
||- - alag57   Цитата(serglg @ Jul 29 2016, 13:36) Вы на...   Jul 29 2016, 13:33
|- - esaulenka   Цитата(serglg @ Jul 29 2016, 09:12) Ну во...   Jul 29 2016, 13:42
- - Pasa   На сегодняшний момент вызывает вопрос код в HAL_SP...   Jul 29 2016, 09:04
- - k155la3   Цитата(Pasa @ Jul 27 2016, 13:20) (1) HAL...   Jul 29 2016, 10:03
|- - Pasa   Цитата(k155la3 @ Jul 29 2016, 13:33) Позв...   Jul 29 2016, 10:55
||- - k155la3   Цитата(Pasa @ Jul 29 2016, 13:55) вы счит...   Jul 29 2016, 12:12
|- - esaulenka   Цитата(k155la3 @ Jul 29 2016, 13:03) Позв...   Jul 29 2016, 13:22
- - Pasa   может здесь и говорится о нашей проблемке ..... ...   Jul 29 2016, 15:04
- - serglg   Открываются глаза. Народ говорит, что вся разница ...   Jul 30 2016, 05:43
- - Pasa   На сегодняшний момент моя примочка по предваритель...   Aug 1 2016, 07:57
|- - serglg   Цитата(Pasa @ Aug 1 2016, 13:57) На сегод...   Aug 1 2016, 12:14
|- - Pasa   Цитата(serglg @ Aug 1 2016, 15:44) Фактич...   Aug 1 2016, 19:24
|- - serglg   Цитата(Pasa @ Aug 2 2016, 01:24) Собствен...   Aug 2 2016, 13:17


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

 


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


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