Доброе время суток, господа.
Помогите, пожалуйста, решить проблему с шиной CAN. Несколько недель бьюсь как головой об стенку безрезультатно.
Вступление: Используя устройство CANUSB мне удалось получить данные из can bus i/o expander'а mcp25050 (через mcp2551).
Шину я включаю следующим образом:
modprobe can
modprobe can_raw
modprobe slcan
slcand -o -c -f -s6 /dev/ttyUSB0 slcan0 # 500Кгц
ifconfig slcan0 up
candump slcan0
slcan0 7FF [0]
slcan0 7FF [0]
slcan0 7FF [0]
Собственно второй шаг, который я хочу выполнить- это прочитать какой-нибудь регистр и попробовать перезаписать какой-нибудь регистр (например изменить логический уровень на одном из выводов).
Вот тут-то у меня и начинаются проблемы. Для отправки данных я использую cansend; используя datasheet mcp25050 я никак не могу въехать, какие данные мне посылать (тысячелетиями смотрю в таблицы 3-1, 3-2, 4-2, 4-3 и, простите, вижу фигу).
Не могли бы вы, пожалуйста, помочь понять мне алгоритм преобразования данных из мануала в запрос cansend; Инными словами: научите, пожалуйста, читать и писать из/в mcp25050.
Заранее Спасибо
На всякий случай значения из OPTREG2:
CAEN: 0
ERREN: 0
TXONEN: 0
SLPEN: 0
MTYPE: 0 #полагаю этот особо важен, т.к. определяет что для запроса данных используется Remote Transfer Request (RTR)
PDEFEN: 0
PUSLP: 0
PUNRM: 1