Вопрос

Недавно я использовал плату Ualfat MicroSD от GHI Electronics для регистрации данных, но у меня были проблемы с его надежностью; Некоторые из его функциональных вызовов иногда занимают гораздо больше времени, чем я могу справиться. В настоящее время я использую MSP430 Микроконтроллер, чтобы поговорить с Уалфатом.

Какие подобные доски я мог бы использовать вместо Уалфата, который, надеюсь, будет более надежным?

ИЛИ ЖЕ

Что было бы наиболее благоприятным решением OEM, если бы мне нужно было разработать свою собственную интерфейсную плату для работы с MSP430?

Это было полезно?

Решение

Я бы подумал об этом немного по -другому. Любое флеш -устройство, на основе хранения, вероятно, будет иметь переменные сроки при записи. Особенно с файловой системой и выравниванием износа и подобными функциями. Это имеет тенденцию быть природой вспышки, так как вам приходится стирать целые блоки и перемещать вещи. Если вы не можете жить с временем переменной, то, что я делал в прошлом, - это вывести эту часть из критической части кода.

Как правило, я добавляю очередь, в которую пишет критический код времени, а затем в фоновом режиме из очереди и пишу на SD -карту. В RTOS это было бы более низким приоритетом. В цикле опроса это была бы функция, вызванная, когда система простаивает.

Это меняет ограничение на то, чтобы быть наихудшим временем для функционального вызова, чтобы просто соответствовать средним требованиям к пропускной способности для регистрации. Худшая задержка и пропускная способность определяют, насколько велика должна быть очередь; Обычно это может быть маленьким.

Другие советы

Это, вероятно, более сложно, чем это, и лучшее решение-это @Sbass, даже если вы решите изменить файловую систему. Вам нужно точно определить, где и почему задержка происходит, прежде чем вы видите Ualfat.

Однако для записи я успешно использовал Вяз Fatfs, и его сокращение Вязки Petit Fatfs, а также Efsl.

Что касается задержки, хотя, например, с ELM, я достиг скорости записи до 300 кбит в секунду с использованием SPI (скорость в значительной степени зависит от карты, а скорость может варьироваться от 30 кбит/с до 1 Мбит/с) Я не мог успешно использовать его для регистрации потока данных 96 кбит/с в течение любого постоянного времени, даже с оптимизированными размерами буферов (кратные размера сектора) и очередью 50 кбит в секторах 512 байтов. Это было не до библиотеки, а скорее характер SD -карты, которая, по -видимому, на 1 границах MBIT, остановилась бы до 128 миллисекунд, что было достаточно, чтобы исчерпать буферизацию, предоставленную очередью. Решение, конечно, заключается в увеличении буферизации, как сказал @SBAS, но в этом случае общая системная оперативная память составляла всего 64 кбит, так что это было невозможно.

Если вы можете бросить память и задачу RTOS (вероятно, собственный Ti Sys/Bios в вашем случае) в отношении проблемы, вы сможете заставить ее работать с библиотекой, которая у вас есть. Количество необходимой оперативной памяти зависит от скорости передачи данных и того, лопается ли она или непрерывно.

Спасибо, ребята, я закончил тем, что внедрил своего рода круговой буфер с дополнительной памятью, и это, похоже, сделало свое дело. Спасибо за хороший вклад!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top