seeeduino can-bus shield v2: не может читать can-шину и писать на SD-карту
Я использую seeeduino V4.0 и CAN-BUS shield v2.0 с SD-картой промышленного класса.
Я использую библиотеку по умолчанию, предоставленную вики seeed.
Я смоделировал can - шину с двумя mcp2515. Я могу прочитать его без проблем, и все в порядке.
Я могу писать/читать на SD-карте с помощью примера, приведенного в библиотеке SD.
Но когда я использую этот пример, шина can и SD-карта запускаются без ошибок. Шина can нормально считывает и отображает данные шины can. Но когда я читаю SD-карту, файл создается, но полностью пуст. Я попытался изменить запись на .txt вместо .csv, и когда я пытаюсь
myFile = SD.open("test.txt", FILE_WRITE);
if (myFile)
{
...
}
else
{
Serial.println("error: file not reachable");
}
"myFile" возвращает false.
ps: Я не задаю здесь много вопросов. Извините за плохую формулировку моего вопроса.
@Thanatheos, 👍2
Обсуждение1 ответ
Лучший ответ:
Несмотря на то, что "пример библиотеки должен быть правильным, это работа для других людей до вас", я не уверен, что многие люди заставляют это работать.
Я видел, что даже когда mcp2551 ничего не получает на can-шине, шина SPI насыщается mcp2551.
Решение состояло в том, чтобы использовать простейшую библиотеку make for 8MHz cristal chip. Измените его на работу со стандартным 16 МГц и используйте в качестве прерывания вывод прерывания (вывод 2 на плате).
Если у кого-то возникла такая же проблема, просто оставьте комментарий здесь, и я дам лучший и более полный ответ.
Большое вам спасибо @Timemage за вашу помощь
- SPI-транзакции в Arduino
- Запись на SD-карту с частотой дискретизации 50 мс или меньше? У меня есть скетч, который записывает в sd каждую 1 секунду, но застревает на более высоких частотах дискретизации. Пожалуйста помоги?
- Как увеличить скорость записи на SD-карту в Ардуино
- Какие контакты можно использовать для выбора микросхемы (CS, CC) на Arduino Nano Every?
- Сделать CS (chip select) для работаты в SPI (для и SD карты и OLED)
- Использование экрана SD-карты на Arduino Due
- Загрузить сайт с SD-карты
- Отобразить изображение с SD-карты на ЖК-дисплей ILI9486
У меня нет никаких хороших идей, так что вот одна плохая идея: напечатать что-то, показывающее, что оно попало в `myFile.close(); У вас может не быть никаких записей, пока вы не закроете (), не очистите() или не заполните сектор. Учитывая то, что вы показали, и то, что я читал о щите и т. Д., Похоже, что это не должно быть проблемой. Какой Arduino вы используете? Вы не изменили выбор CS на плате, верно?, @timemage
У меня такая же "плохая идея", но даже с close() (и без if(myFile)) SD-карта ничего не записывает. Если я обрабатываю запись перед использованием MCP2515, она работает нормально. Это похоже на проблему с интернет-провайдером, чтобы определить подчиненного, с которым нужно поговорить. Моя плата - seeeduino V4.0, @Thanatheos
Это более или менее то, что я думаю, но я не нашел ничего подтверждающего это, когда просматривал код двух библиотек. В какой-то момент я могу попробовать настроить UNO с SD-картой и каким-нибудь устройством SPI в качестве дублера для вашего MCP2515 (у меня его нет). Хотя к тому времени кто-то другой, возможно, уже ответил., @timemage
Я покопался еще немного, но не нашел ничего ясного. В их примере flagRecv должен быть volatile квалифицирован как "volatile unsigned char flagRecv = 0;" Но у меня мало уверенности в том, что это на самом деле проблема. Я как бы ожидаю, что как ошибка она будет проявляться по-другому, если вообще будет проявляться в этом использовании. Но это должно быть исправлено в любом случае. Если это действительно решит проблему, дайте мне знать, и я буду придерживаться этого в качестве ответа., @timemage
Спасибо вам за вашу помощь. Летучие вещества не помогают. Все та же проблема. Я попытался заставить SPI использовать ведомый 4 (SD), а не 9 (CANbus).
digitalWrite (4, НИЗКИЙ); digitalWrite (9, ВЫСОКИЙ); if (!SD.begin(4)) { ошибка печати } успех печати myFile = SD.open("can.txt ", FILE_WRITE);
и сразу после этого поставьте ss 9 на низкий уровень. Это показывает успех Он читался как обычно, но по-прежнему ничего не значил на SD-карте. Похоже, что spi насыщен mcp2515. Если я удалю SD-карту, я получу ошибку., @Thanatheos