eddy_em: (Default)
[personal profile] eddy_em
Оказалось, что действительно CAN на F303 очень сильно похож на CAN у F103. Портирование прошло очень даже безболезненно (разве что несколько иные имена прерываний и настройки пинов как в F0).

Вот — код. Я спаял на мелкой макетке MCP2551 с минимальной обвязкой, подключил — вуаля, не работает. Проверил: перепутал cantx и canrx. Потом — бац, опять не работает (а, здесь уже скорости разные вышли). В конце-концов туда-сюда все ОК. Правда, глянул я на "flood ping": если слать сообщения каждую миллисекунду, то некоторые пропускаются. Все-таки, если понадобится делать надежный монитор шины, не отваливающийся даже при адовом потоке данных, заполнение буфера нужно будет сделать в прерываниях, а не поллингом, как сейчас. С другой стороны, нет сообщений об ошибке переполнения буфера (но, возможно, это просто я где-то накосячил и нужный флаг не выставил).
В реальных условиях, когда от силы пара десятков сообщений в секунду по шине бегает, все ОК.
UPD: добавил "мегафлуд" (не ограничивая интервал — только по занятости шины). Увидел много приколов. Во-первых, таки пакеты никуда не теряются, как ни странно. Во-вторых, я где-то неправильно флаги выставил, из-за чего первые два пакета, попадающих в очередь, выплевываются последними! В-третьих, USB адово лажает: когда я заканчиваю "флудинг", в соседней консоли еще несколько секунд льется поток данных… Ну и в-четвертых: поднять скорость выше 500кбод на проводках длиной 15см у меня не получилось. Виноваты: а) руки из жопы, б) какой-то из преобразователей уровня (или MCP2551, или ISO1050), в) смесь из говна и палок (натыкал, паимашь, убогими абдуринопроводочками…). Во, какая убогость:

October 2025

S M T W T F S
   1234
567 89 1011
121314 15161718
19202122232425
2627 28293031 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 24th, 2026 05:24 pm
Powered by Dreamwidth Studios