Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

stm32 запись на SD

Пн фев 19, 2018 14:41:44

Здравствуйте!
Вопрос в следующем, есть задача записи данных с микрофона на SD карту. АЦП планирую использовать внешний 16 бит, частота дискретизации меня устроит 10 кГц. Я думаю, использовать низкоуровневую запись, без файловой системы, думаю так будет быстрее, но могу ошибаться поэтому прошу подскажите? Ещё вопрос если использовать низкоуровневую запись, то при зависании или перезагрузки контроллера как лучше сделать, что бы не затереть уже записанные данные, а записывать с места где флешка пустая ? Я предполагал, что в каждом блоке состоящем из 512 байт выделить определенное количество байт, под "служебную" информацию, читая которую можно определить, что это данные и в это место записывать не надо. В наличии есть плата stm32f4discovery, на ней и буду экспериментировать в железе. Пока эмулирую в протеусе на atmega8 (программная реализация SPI), просто разобраться с работой с SD картой и SPI. Ещё вопрос:
Читал, что карточки плохо работают с аппаратным SPI, правда ли это ? Значит ли это, что придётся использовать только программный SPI?
Какой из контроллеров из stm32 мне подойдет для моей задачи ? какой то попроще чем семейство stm32f4 ?
Заранее всем спасибо!

Re: stm32 запись на SD

Пн фев 19, 2018 22:38:02

без файловой системы оно конечно быстрее, и отлаживать будет проще.
Чтобы не перезаписывать старые данные, проще всего выделить первый блок под служебную информацию и туда записывать адрес, по которому в последний раз писались данные, чтобы затем продолжить писать с того же места
В STM32 есть интерфейс SDIO, родной для SD карт, вот с ним они лучше всего и работают. Если все же хотите SPI, то уж точно аппаратный. Будь у Вас хоть суперспособности, программно вы его лучше не сделаете))
А насчет выбора контроллера - по сложности в освоении на мой взгляд все семейства STM32 ничем не отличаются, так что выбирайте исходя из требуемого Вам набора периферии и объемов памяти
Если мне не изменяет память, для Stm32f4discovery есть плата расширения с SD картой

Re: stm32 запись на SD

Ср фев 21, 2018 11:28:16

Спасибо за ответ. На stm32f4discovery связывался с акселерометром который на плате стоит, с помощью связки SPI+DMA, этот же подход хочу перенести и для записи на SD. Целесообразно ли использовать DMA для того что бы передавать 16 бит с частотой дискретизации 10 кГц (это же получается со скоростью 160 кБит\с ?) ?

Re: stm32 запись на SD

Ср фев 21, 2018 12:37:02

Конечно целесообразно, если только Вы не будете писать по двум-трем байтам сразу после приема из АЦП :)
Накапливаете в оперативке пару килобайт и потом выплевываете их в SPI через DMA :)
Ответить