Перейти к содержанию

Валерий Киселёв

Members
  • Постов

    19
  • Зарегистрирован

  • Посещение

Весь контент Валерий Киселёв

  1. Все хорошо - но не могу понять почему не работает эта функция - неужели так нельзя делать? а если нельзя то как верно? void PCD_BigReadRegister( uint8_t reg, uint8_t count, uint8_t *values) { uint8_t address = 0x80 | (address & 0x7E); uint8_t Data[] ={address}; uint8_t buf[]={0x00}; HAL_SPI_Transmit(SPI_PORT,Data,1,1000); for (uint8_t i = 0;i>count;i++) { HAL_SPI_TransmitReceive(SPI_PORT,Data,buf,1,5000); values[i]=buf[0]; } HAL_SPI_Receive(SPI_PORT ,buf,1,1000); values[count-1]=buf[0]; } При отладке проверяется условие - потом попытка отправить и тут же выход из цикла for ...
  2. MFRC522 version 1.0 software version is: 91h. ну у меня 0х11 что вроде означает первую версию и не оригинал)
  3. Получилось читать отдельные регистры. Хочу провести самодиагностику чипа .
  4. Сейчас отправка идет верно void PCD_BigReadRegister( uint8_t reg, uint8_t count, uint8_t *values) { uint8_t address = 0x80 | (address & 0x7E); uint8_t Data[] ={address}; uint8_t buf[]={0x00}; HAL_SPI_Transmit(SPI_PORT,Data,1,1000); for (uint8_t i = 0;i>count;i++) { HAL_SPI_TransmitReceive(SPI_PORT,Data,buf,1,5000); values[i]=buf[0]; } HAL_SPI_Receive(SPI_PORT ,buf,1,1000); values[count-1]=buf[0]; } как то так , но что то не работает.
  5. Спасибо но вот если мне нужно считать больше. То как правильно поступить? Допустим мне нужно считать буфер FIFO 64 байта - первый идет адрес буфера потом прием данных и одновременная отправка адреса буфера - как правильно обозначить массив состоящий из адресов чтобы он мог быть переменной длинны? если я просто считаю шину то микросхема подумает что я отправил 0 и прекратит передачу .
  6. Уважаемый а не подскажете как правильно считать регистр несколько раз? void PCD_BigReadRegister( uint8_t reg, uint8_t count, uint8_t *values) { uint8_t address = 0x80 | (address & 0x7E); uint8_t Data[1] ={address}; HAL_SPI_Transmit(SPI_PORT,Data,1,1000); HAL_SPI_TransmitReceive(SPI_PORT,Data,values,count,50000); } Правильно - отправить адрес , потом командой отправить/принять передавать тот же адрес и принимать данные и потом принять последний байт . После упаковать все приняты данные в массив values - и вот тут у мня стопор не хватает грамотности . Можете подсказать?
  7. Спасибо. Все заработало - после долгого анализа решил в шутку поменять 0 и 1 в выводе сброса - все заработало . Спасибо большое . буду писать нормальную библиотеку к этому модулю с комментариями - после попробую оформить в статью.
  8. Странно я думал 0 0 должен быть режим ... сейчас попробую ...
  9. я тут почитал и не могу понять вторую часть ... нужны другие параметры SPI на прием?
  10. После замыкания MOSI и MISO Передача идет EE 00 00 00 00 принято спасибо буду думать дальше и читать даташит на mc522
  11. Но ведь HAL уже все настроил... я слал команду на чтение 5 раз и каждый раз слушал ответ в надежде что на 2 или 3 посыле придет ответ - но все время вижу FF FF FF ....
  12. Спасибо за информацию. Но я пробывал передавать и принимать одновременно - не вышло . Сейчас возьму новый контроллер и модуль - и попробую - вдруг причина в железе , еще вопрост если nss софтовый - его нужно инициировать через гпио? или он иницилизируеться HAL при инициализации SPI на (A4) ? ПС : Не флудите.
  13. да я уже скатился читаю регистор версии чипа ResetRFID(); HAL_SPI_TransmitReceive(&hspi1,Exsample_Data,Exsample_Data2,5,10000); HAL_Delay(100); CDC_Transmit_FS(Exsample_Data2,5); где Exsample_Data - масив из 5 элементов 0xEE должно считать хоть что-то =( но в ответ только FF FF FF....
  14. Убивая 3 й день на разбор полетов заметил в одном из русских объяснений цитирую : Возможно это вы имели в виду ? Хотя судя по руководству возможных состояния 3 SPI_NSS_SOFT SPI_NSS_HARD_INPUT SPI_NSS_HARD_OUTPUT У меня указан 3й вариант. Ап - Сейчас вчитался - все верно должно быть...
  15. а может 522 реагировать на дергание SS между передачами? сейчас попробую командой на одновременную передачу считывание - может что ответит...
  16. На данный момент поправил команды - но читаю всеравно FF FF .....
  17. И как я умудрился билеберду написать туда ... теперь вот так
  18. В курсе - это я тестировал =( вроде верно это потому что если reset rc 522 прижать к 0 то идут 0 .
  19. Использую библиотеку HAL Вроде поднял SPI (как проверить не знаю) . Пытаюсь переписать существующию библиотеку для ардуино под стм но все что выдает SPI либо 0x00 либо 0xFF =( иногда пробегают цифры но это скорее случайность. Может кто объяснить в чем может быть причина? SS pin управляется железом. если есть время сегодня то - скайп Discord teamspeak Radmin - буду признателен за помощь - достаточно результата в правильном считывание регистров или ткнуть носом что идет не так. Для начала делаю без прирываний и DMA Использую мк - stm32f103c8t6 модуль : rc-522 - данные отправляю через USB в ПК KEil 5 + cubeMX последней версии. Код процедур прилагаю.
×
×
  • Создать...