Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Проблема с MOSI на MCP2515 + ESP

Тема в разделе "Железные вопросы по esp8266", создана пользователем pazyzy, 20 сен 2018.

  1. pazyzy

    pazyzy Читатель

    Сообщения:
    56
    Симпатии:
    6
    Всем привет.

    Обнаружил проблему с MOSI при работе с контроллером MCP2515.
    Проблема заключается в том что на MCP2515: не инициализируются регистры корректно. Но, как только я мультиметром меряю напряжение между MOSI и землей - все магическим образом начинает работать. Раньше MOSI была через 10k резистор привязан к питанию. Пробовал привязать к земле через резистор 56k. Не помогло.
    Что меняется, когда я мультиметром меряю напряжение?

    Теперь длинная версия.
    Есть несколько прототипов девайсов для подключения к машине. Собраны одинаково. На борту ESP8266, MCP2515 и SD карточка. MCP и SD подключены к ESP по одной SPI шине.
    Обраружил, что 2 из 5 прототипов не работают без вставленной SD карточки. Держатель SD карточки для разбирательства убрал. Все подтяжки SCK, MISO, MOSI убрал. Пытаясь найти различия в платах - обнаружил, что как только трогаю мультиметром MOSI и землю - все начинает работать. Осциллографа нет.

    Есть какие-нибудь идеи, как найти причину?

    Схемы нарисованной нет, но могу нарисовать, если нужно.

    Спасибо.
     
  2. nikolz

    nikolz Гуру

    Сообщения:
    3.277
    Симпатии:
    363
    к каким пинам вы подключили MCP
    ESP8266 CAN Bus with MCP2515 | An Engineer's Blog
    ESP8266 MCP2515 CAN Bus to Wifi Gateway | An Engineer's Blog
     
    Последнее редактирование: 20 сен 2018
  3. pazyzy

    pazyzy Читатель

    Сообщения:
    56
    Симпатии:
    6
    Я использую готовый модуль Wemos D1 Pro. MCP питается от 5В.

    CS - D8 - напрямую
    MISO - D6 - через BSS138 для изменения логики
    MOSI - D7 - напрямую.
    SCK - D5 - напрямую
    INT - D1 - через BSS138

    Думал, что не хватает напряжения для логики MOSI, поэтому через BSS138 тоже пробовал. Результат такой же. С вольтметром также работает, если трогать ножку MCP.
    Еще обнаружил, что все также магически работает, если вольтметром трогать ножку SCK.

    Кстати, как только убираю вольтметр работать все перестает.
     
    Последнее редактирование: 20 сен 2018
  4. nikolz

    nikolz Гуру

    Сообщения:
    3.277
    Симпатии:
    363
    MCP2515 работает от 3.3 поэтому для начала можно выкинуть BSS138 и запитать ее от 3.3 на ESP
    MCP2515: контроллер шины CAN с интерфейсом SPI | hardware | adminstuff
     
  5. pazyzy

    pazyzy Читатель

    Сообщения:
    56
    Симпатии:
    6
    На плате еще TJA1050, который связан с MCP2515. Ему нужно питание 5В.
    Проверю логику их общения, и если пройдет, то запитаю MCP от 3.3В и подключу к SPI напрямую.

    Вы думаете в этом может быть проблема? Ведь большинство девайсов работают как есть. Да и этот тоже работает, но только с SD карточкой (работал, пока я его не расковырял).

    Есть идеи каким образом вольтметр влияет на SPI?
     
  6. nikolz

    nikolz Гуру

    Сообщения:
    3.277
    Симпатии:
    363
    дайте ссылку на схему
    я пока не думаю в чем проблема так как мало информации
    я лишь предложил убрать то что вы нагородили сами
     
  7. pazyzy

    pazyzy Читатель

    Сообщения:
    56
    Симпатии:
    6
    Проверил логику связи MCP2515 при питании от 3.3В и TJA1050 при питании от 5В - все в порядке.
    Не уверен только в одном пункте - уровнях TJA RXD pin.
    В datasheet эти уровни написаны в Conditions, и это единственное место где я нашел что-нибудь об его уровнях (https://www.nxp.com/docs/en/data-sheet/TJA1050.pdf, страница 6, "Receiver data output (pin RXD)").

    Переделал схему - все заработало.
    Чуть позже нарисую схему, как было до этого - очень интересно выяснить, почему не работало. И почему это проявлялось не во всех случаях.


    Подробности связи:
    V(DD)=3.3V
    MCP TXCAN V(OL) Max: 0.6V
    MCP TXCAN V(OH) Min: V(DD)-0.7V=2.5V

    MCP RXCAN V(IL): -0.3V to 0.15V(DD)=0.5V
    MCP RXCAN V(IH): 2V to V(DD)+1=4.3V

    V(CC)=5V
    TJA TXD V(IL): -0.3V - 0.8V
    TJA TXD V(IH): 2V to V(CC)+0.3V=5.3V

    TJA RXD V(OL): 0.45V
    TJA RXD V(OH): 0.7V(CC) = 3.5V
     
  8. nikolz

    nikolz Гуру

    Сообщения:
    3.277
    Симпатии:
    363
    В документации TJA1050 написано:
    • Input levels compatible with 3.3 V and 5 V devices
    --------------------------------------
    Transmitter data input (pin TXD)
    VIH HIGH-level input voltage output recessive 2.0 − VCC + 0.3 V VIL
    LOW-level input voltage output dominant −0.3 − +0.8 V
    ---------------------------
    При VCC = 4.75 V to 5.25 V :
    TXD High от 2 вольт до 5...5.5 в Low jn -0.3 до +0.8 в
    -----------------------------
    но VCC может быть и меньше
    Предельные значения VCC supply voltage −0.3 +6 V
     
  9. pazyzy

    pazyzy Читатель

    Сообщения:
    56
    Симпатии:
    6
    Спасибо за подтверждение.
    Схема скоро будет.
     
  10. pazyzy

    pazyzy Читатель

    Сообщения:
    56
    Симпатии:
    6
    Схема с использованием BSS138 (как было) в приложении.
    На ней опущены TJA1050 и осциллятор.
    Питание 3.3В используется с Wemos (там стоит ME6211)

    Проблема - при отсутствии SD карточки в 20% случаев схема не работает.
    with bss.png

    Как стало - MCP2515 питается от 3.3V, убрал BSS138 и все резисторы вокруг них кроме R1 (чтобы MISO была подтянута к питанию когда карточки нет).
    Тренировался на двух платах, которые не работали - все заработало.

    Можете подсказать почему возникает проблема?

    Спасибо.
     

    Вложения:

    • with bss.png
      with bss.png
      Размер файла:
      17,4 КБ
      Просмотров:
      14
    Последнее редактирование: 25 сен 2018
  11. =AK=

    =AK= Авторитетный участник сообщества

    Сообщения:
    1.146
    Симпатии:
    95
    Емкость меняется. И, соответственно, добавляется небольшая задержка. Если мастер и слэйв SPI настроены на разные режимы работы, то добавочная задержка MOSI может сделать эту связку работоспособной.

    А приложение где?
     
  12. pazyzy

    pazyzy Читатель

    Сообщения:
    56
    Симпатии:
    6
    Картинка была в сообщение вставлена. Добавил еще как вложение.

    Использую библиотеку для MCP от coryjfowler (coryjfowler/MCP_CAN_lib). При настройке там используется SPI_MODE0.
    Программа используется одна и та же. На каких-то платах работает, на каких-то без вольтметра нет.
     
  13. APJ

    APJ Новичок

    Сообщения:
    4
    Симпатии:
    0
    Приветствую.
    Проблема с MCP2515, не корректно распознаёт посылки. В приёме в терминал выводит вот это-
    Setting Baudrate Successful!
    MCP2515 Initialized Successfully!
    MCP2515 Library Receive Example...
    Standard ID: 0x%.3lX DLC: 496 Data: 0x%.2X 0x%.2X 0x%.2X 0x%.2X 0x%.2X 0x%.2X 0x%.2X 0x%.2X

    Должно быть так-
    Standard ID: 0x1F0 DLC: 8 Data: 0xFF 0x3F 0xFF 0x1F 0xFF 0x1F 0xFF 0x1F

    Конвертер MCP2515 переделан на питание 3,3 + 5в. При подключении к ардуине нано всё работает с той же программой.
    К есп плате соеденено так-
    D4-CS
    D6-SO
    D7-SI
    D5-SCK
    D3-INT
    Библиотека MCP от coryjfowler, пример receive от туда же.
    Подскажите что может быть, свои мысли уже кончились(((

    Как это применить?
     
  14. pazyzy

    pazyzy Читатель

    Сообщения:
    56
    Симпатии:
    6
    Это по умолчанию в файле mcp_can.cpp прописано при инициализации SPI: SPI.beginTransaction(SPISettings(10000000, MSBFIRST, SPI_MODE0));

    Опишите подробнее как работает и как не работает. Я только понял, что какая-то схема с нано работает, а что не работает - нет.
     
  15. APJ

    APJ Новичок

    Сообщения:
    4
    Симпатии:
    0
    C esp8266 никак не работает. При загрузке пишет что инициализация ок, при подключении к кан шине пишет в порт вот это.- Standard ID: 0x%.3lX DLC: 496 Data: 0x%.2X 0x%.2X 0x%.2X 0x%.2X 0x%.2X 0x%.2X 0x%.2X 0x%.2X

    С чем это может быть связано?

    Сам кан модуль в порядке, с наной работает правильно.
     
    Последнее редактирование: 10 фев 2019
  16. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    1.862
    Симпатии:
    208
    @APJ если с esp не работает ни в какую, то дело может быть в библиотеке. Дело в том что int для нано и esp это разные вещи. Так что может потребоваться адаптация библиотеки если дело в разной разрядности процессора.
    Предположение, саму библиотеку не смотрел.
     
  17. APJ

    APJ Новичок

    Сообщения:
    4
    Симпатии:
    0
    Вроде как у людей работает
    Пробовал навешивать резисторы и кондетсаторы на MOSI, толку нет.
     
  18. APJ

    APJ Новичок

    Сообщения:
    4
    Симпатии:
    0
    Заработало!
    Проблема была в косячной версии IDE.
     

Поделиться этой страницей