Мучения с CAN на STM32F103C6T6
Dec. 1st, 2022 11:16 amSTM32F103C6T6 сейчас — самый дешевый МК с CAN на борту (45 рублей за штучку!!!). Дай, думаю, для него тоже сниппет под CAN переделаю из F0. Переделал. И… Вообще ноль!
Сначала сделал транслятор уровней на основе MCP2551. Но на ноге Rx упорно был нуль, а МК не выходил из состояния инициализации (т.к. на этой ноге должна в течение хотя бы 11 фреймов быть 1), бит INAK не сбрасывался. Как я только не инициализировал ногу CAN Rx: и AFOD, и AFPP, и даже FLINPUT — пофиг. Отключаю от МК — нормально, на ноге преобразователя 5В.
Поменял MCP2551 на TJA1050. Абсолютно та же история.
Ну, думаю, может у меня в коде косяк какой (хотя CAN на F103 и F0x2 практически идентичный за некоторыми исключениями). Ввел в режим Test (т.е. silent+loopback) — и… Не работает. ОК, перестаю инициализировать ноги PB8/PB9. Не работает. ОК, отключаю от TJA1050 — бдыщ, пакеты отправляет и эхо их принимает!
Неужто у STM32F103C6T6 какой-то косяк с CAN? Я две "пилюли" на этих МК проверил, везде CAN не выходит из инициализации. Или это китайские подделки с ограниченным функционалом: как бы на кристалле есть, но к мультиплексору не подходит? Но почему тогда оно не работает, если к PB8/PB9 что-то подключено?
Парадокс…
Сначала сделал транслятор уровней на основе MCP2551. Но на ноге Rx упорно был нуль, а МК не выходил из состояния инициализации (т.к. на этой ноге должна в течение хотя бы 11 фреймов быть 1), бит INAK не сбрасывался. Как я только не инициализировал ногу CAN Rx: и AFOD, и AFPP, и даже FLINPUT — пофиг. Отключаю от МК — нормально, на ноге преобразователя 5В.
Поменял MCP2551 на TJA1050. Абсолютно та же история.
Ну, думаю, может у меня в коде косяк какой (хотя CAN на F103 и F0x2 практически идентичный за некоторыми исключениями). Ввел в режим Test (т.е. silent+loopback) — и… Не работает. ОК, перестаю инициализировать ноги PB8/PB9. Не работает. ОК, отключаю от TJA1050 — бдыщ, пакеты отправляет и эхо их принимает!
Неужто у STM32F103C6T6 какой-то косяк с CAN? Я две "пилюли" на этих МК проверил, везде CAN не выходит из инициализации. Или это китайские подделки с ограниченным функционалом: как бы на кристалле есть, но к мультиплексору не подходит? Но почему тогда оно не работает, если к PB8/PB9 что-то подключено?
Парадокс…