Например TDA7294

Форум РадиоКот • Просмотр темы - stm32 и fatfs
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 23, 2024 22:23:33

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: stm32 и fatfs
СообщениеДобавлено: Чт мар 08, 2018 11:31:27 
Нашел транзистор. Понюхал.

Зарегистрирован: Пн апр 25, 2016 15:43:23
Сообщений: 197
Откуда: Россия , Воронеж
Рейтинг сообщения: 0
Добрый день. Попробывал код для работы с файлами и возникла проблема. Считывание происходит нормально , но вот запись данных ппросто производит надругательство над файлом. Поелзные данные записывают в самый конец , а перед ними куча мусора.


Вложения:
sd.rar [390.89 KiB]
Скачиваний: 355
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 и fatfs
СообщениеДобавлено: Чт мар 08, 2018 14:44:55 
Мучитель микросхем
Аватар пользователя

Карма: 6
Рейтинг сообщений: 87
Зарегистрирован: Вс янв 09, 2011 23:05:37
Сообщений: 450
Откуда: СССР
Рейтинг сообщения: 0
А в самом буфере данные располагаются нормально ?

_________________
Иван Сусанин - первый полупроводник :solder:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 и fatfs
СообщениеДобавлено: Чт мар 08, 2018 15:17:33 
Нашел транзистор. Понюхал.

Зарегистрирован: Пн апр 25, 2016 15:43:23
Сообщений: 197
Откуда: Россия , Воронеж
Рейтинг сообщения: 0
А в самом буфере данные располагаются нормально ?

Да , т.к. вывожу буффер на lcd дисплей и на нём все нормально.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: stm32 и fatfs
СообщениеДобавлено: Вс апр 01, 2018 08:51:50 
Сверлит текстолит когтями
Аватар пользователя

Карма: 4
Рейтинг сообщений: 10
Зарегистрирован: Пт фев 16, 2007 14:18:20
Сообщений: 1132
Откуда: Новосибирск
Рейтинг сообщения: 0
Всем привет!
Как я понял, надо прописать низкоуровневые функции:
Код:
DSTATUS disk_initialize (BYTE);
DSTATUS disk_status (BYTE);
DRESULT disk_read (BYTE, BYTE*, DWORD, BYTE);
DRESULT disk_write(BYTE, const BYTE*, DWORD, BYTE);
DRESULT disk_ioctl (BYTE, BYTE, void*);

Столкнулся с проблемой непонимания как переписать функции.

Допустим, если взять функцию
Код:
DRESULT disk_read (
   BYTE pdrv,      /* Physical drive nmuber to identify the drive */
   BYTE *buff,      /* Data buffer to store read data */
   DWORD sector,           /* Start sector in LBA */
   UINT count      /* Number of sectors to read */
)


как ее реализовать?
pdrv - можно игнорировать если я планирую работать только с SD картой?
buff - тут вроде понятно, указатель на буфер в 512 байт.
sector - это сектор для чтения. Я так понял, минимальный размер чтения/записи - 512 байт?
count - сколько секторов читаем. Допустим, реализована функция чтения одного сектора (512 байт)
Код:
SD_ReadSector(uint32_t BlockNumb,uint8_t *buff)
, то я должен ее вызвать count раз (передавая ей номер нужного сектора для чтения), но что будет с данными, которые будут читаться в buff? Они же будут затираться. Или же мне не стоит думать об этом и просто вызвать функцию SD_ReadSector, последовательно передавая ей, в качестве аргументов, сектора, которые должны читаться?

такая реализация функции работоспособна?
Код:
DRESULT disk_read (
   BYTE pdrv,      /* Physical drive nmuber to identify the drive */
   BYTE *buff,      /* Data buffer to store read data */
   DWORD sector,           /* Start sector in LBA */
   UINT count      /* Number of sectors to read */
)
{
   DRESULT res;
        res = SD_ReadSector(sector, buff);
   return res;
}

_________________
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: stm32 и fatfs
СообщениеДобавлено: Ср май 02, 2018 18:11:17 
Мучитель микросхем

Карма: 2
Рейтинг сообщений: 10
Зарегистрирован: Ср окт 19, 2011 08:48:27
Сообщений: 443
Откуда: Мать городов русских
Рейтинг сообщения: 0
Вот тут http://chipenable.ru/index.php/programm ... s-ch2.html хорошо разжёвано работа с Petit FatFs. Сам только разбираюсь.

_________________
Хорошему коту и в декабре - март :)


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: stm32 и fatfs
СообщениеДобавлено: Чт июл 12, 2018 02:47:32 
Сверлит текстолит когтями
Аватар пользователя

Карма: 4
Рейтинг сообщений: 10
Зарегистрирован: Пт фев 16, 2007 14:18:20
Сообщений: 1132
Откуда: Новосибирск
Рейтинг сообщения: 0
И снова здарсьте.
Пытаюсь развернуть FATFS на мегабитной SPI EEPROM.
Столкнулся с проблемой вылета в hard fault при попытке записать данные в файл.
Изучение проблемы показало, что исключение срабатывает при условии, что я пытаюсь записать >= 16 символов (без учета конца строки) при вызове f_close
Камень STM32F103C8
EEPROM M95M01

Кусок кода, который записывает данные в файл
Код:
  FATFS mynewdiskFatFs;         /* File system object for User logical drive */
  FIL MyFile;                   /* File object */
  char mynewdiskPath[4];        /* User logical drive path */
  UINT wbytes;              /* File write counts */
  uint8_t wtext[] = "1123456789ABCDEF";    /* File write buffer */
 
  if(FATFS_LinkDriver(&USER_Driver, mynewdiskPath) == 0)
  {   
    if(f_mount(&mynewdiskFatFs, (TCHAR const*)mynewdiskPath, 0) == FR_OK)
    {
        if (f_mkfs((TCHAR const*)mynewdiskPath,0,512) == FR_OK)
        if(f_open(&MyFile, "STM32.TXT", FA_CREATE_ALWAYS | FA_WRITE) == FR_OK)
        {
          if(f_write(&MyFile, wtext, sizeof(wtext), &wbytes) == FR_OK);
          {
            if (f_close(&MyFile) != FR_OK)
              while (1);
          }
        }
    }
  }
 FATFS_UnLinkDriver(mynewdiskPath);


Все норм, когда
Код:
uint8_t wtext[] = "123456789ABCDEF";

В примере выше генерируется hard fault.

Дальше глубже.
ВЫяснилось, что при ошибке портится значение регистра R3 и программа пытается вызвать функцию по не существующему адресу 0x156.
В общем, причину найти не смог. Вот скриншоты нормальной работы программы и не с ошибкой

Норм
Изображение

Не норм
Изображение

Почему генерируется HF и как мне записать больше 16ти байт в файл?

_________________
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 и fatfs
СообщениеДобавлено: Пт июл 13, 2018 04:28:00 
Сверлит текстолит когтями
Аватар пользователя

Карма: 4
Рейтинг сообщений: 10
Зарегистрирован: Пт фев 16, 2007 14:18:20
Сообщений: 1132
Откуда: Новосибирск
Рейтинг сообщения: 0
В общем, продолжаю копать дальше. Не знаю, в правильном ли направлении двигаюсь.
Предположительно нашел место, где фэйлится содержимое регистра R3.

Вот дамп памяти нормальной программы.
Изображение

Вот программы курильщика
Изображение

Немного поясню то, что я понял. Адрес перехода в подпрограмму формируется в регистре R3.
Деббагер остановлен как раз на месте, где должен быть осуществлен переход по адресу, который находится в R3.
Код:
0x8002276   BLX   R3

Окончательно адрес перехода формируется предыдущей командой
Код:
LDR   R3, [R3, #0x10]

До этого момента, вроде бы, шло всё одинаково (если сравнивать работу программы рабочей и с ошибкой).
Если обратить внимание на дам, то я выделил адрес адрес перехода, куда, в конце концов, должна попасть программа. Это 0х80004327. В рабочей программе этот адрес находится по смещению 0x10, как и указано в инструкции выше.
Но в не рабочей программе этот адрес находится по другому смещению, но в дизассемблере смещение по-прежнему 0х10. В результате забирается адрес перехода 0х00000156. Программа пытается перейти по этому адресу, в результате чего генерируется Hard fault исключение.
По-хорошему, инструкция должна выглядеть так
Код:
LDR   R3, [R3, #0x0С]

Пока всё, что удалось нарыть по этой проблеме. Не знаю, на верном ли я пути. В общем, по-прежнему нуждаюсь в помощи.

_________________
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 и fatfs
СообщениеДобавлено: Пт июл 13, 2018 07:44:56 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Chip115, чановские либы вылетали в хард фаулт в одном случае - в неправильной конфигурации индейцев, а именно _WORD_ACCESS в файле конфигурации.
Там и табличкО имеется.
Код:
/*----------/
/ System Configurations
/----------*/

#define _WORD_ACCESS   0
/* The _WORD_ACCESS option is an only platform dependent option. It defines
/  which access method is used to the word data on the FAT volume.
/
/   0: Byte-by-byte access. Always compatible with all platforms.
/   1: Word access. Do not choose this unless under both the following conditions.
/
/  * Address misaligned memory access is always allowed for ALL instructions.
/  * Byte order on the memory is little-endian.
/
/  If it is the case, _WORD_ACCESS can also be set to 1 to improve performance and
/  reduce code size. Following table shows an example of some processor types.
/
/   ARM7TDMI    0           ColdFire    0           V850E       0
/   Cortex-M3   0           Z80         0/1         V850ES      0/1
/   Cortex-M0   0           RX600(LE)   0/1         TLCS-870    0/1
/   AVR         0/1         RX600(BE)   0           TLCS-900    0/1
/   AVR32       0           RL78        0           R32C        0
/   PIC18       0/1         SH-2        0           M16C        0/1
/   PIC24       0           H8S         0           MSP430      0
/   PIC32       0           H8/300H     0           x86         0/1
*/


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 и fatfs
СообщениеДобавлено: Пт июл 13, 2018 07:55:04 
Сверлит текстолит когтями
Аватар пользователя

Карма: 4
Рейтинг сообщений: 10
Зарегистрирован: Пт фев 16, 2007 14:18:20
Сообщений: 1132
Откуда: Новосибирск
Рейтинг сообщения: 0
Спасибо за ответ. У меня конфиг Byte-by-byte access

_________________
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 и fatfs
СообщениеДобавлено: Чт авг 09, 2018 15:33:04 
Встал на лапы
Аватар пользователя

Карма: 3
Рейтинг сообщений: 10
Зарегистрирован: Пн ноя 07, 2016 12:14:14
Сообщений: 134
Рейтинг сообщения: 0
Вы не пробовали увеличить размер стэка и кучи?

_________________
Я конечно все понимаю, но этого я не понимаю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 и fatfs
СообщениеДобавлено: Пт сен 07, 2018 07:20:25 
Сверлит текстолит когтями

Карма: -10
Рейтинг сообщений: 97
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1155
Рейтинг сообщения: 0
И снова здарсьте.
Пытаюсь развернуть FATFS на мегабитной SPI EEPROM.

Если не секрет: на кой сдалась FatFS на SPI EEPROM которая очевидно внутренняя и не вытаскивается из устройства?
Или предполагается, что пользователь может выпаять её из девайса, впаять в другой девайс, с целью - передать таким образом данные? :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 и fatfs
СообщениеДобавлено: Сб сен 08, 2018 08:34:32 
Опытный кот
Аватар пользователя

Карма: 4
Рейтинг сообщений: 11
Зарегистрирован: Вт окт 23, 2012 13:17:25
Сообщений: 823
Откуда: Киселевск
Рейтинг сообщения: 0
И снова здарсьте.
Пытаюсь развернуть FATFS на мегабитной SPI EEPROM.

Если не секрет: на кой сдалась FatFS на SPI EEPROM которая очевидно внутренняя и не вытаскивается из устройства?
Или предполагается, что пользователь может выпаять её из девайса, впаять в другой девайс, с целью - передать таким образом данные? :)))

Могу предположить что так он хочет упростить работу с EEPROM.

_________________
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 и fatfs
СообщениеДобавлено: Вс сен 23, 2018 04:18:01 
Сверлит текстолит когтями
Аватар пользователя

Карма: 4
Рейтинг сообщений: 10
Зарегистрирован: Пт фев 16, 2007 14:18:20
Сообщений: 1132
Откуда: Новосибирск
Рейтинг сообщения: 0
Предполагается, что пользователь, при подключении устройства по USB, увидит флешку, размером 1/2 EEPROMa, куда можно будет дропнуть бинарник с прошивкой, и устройство перепрошьется при перезагрузке.

_________________
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 29


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y