Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:2
Поисковых ботовПоисковых ботов:2
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Отладочные платы » Hola(Duo)-PC
CAN интерфейс
Leroy
Добавлено 24.11.2015 15:54 Редактировалось 24.11.2015 15:59
0
Сообщение: 1
Leroy
0

Пункты: 386
Регистрация: 14.10.2015
Здравствуйте, испытываю трудности с работой по CAN.
Интерфейс стартует и в системе виден, включил отладочный вывод:
Цитата
dmesg | fgrep can
[ 0.286733] i2c i2c-0: can't use DMA
[ 1.217219] vcan: Virtual CAN interface driver
[ 1.220458] slcan: serial line CAN interface driver
[ 1.224043] slcan: 10 dynamic interface channels.
[ 1.233308] 2090000.flexcan supply xceiver not found, using dummy regulator
[ 1.239833] flexcan 2090000.flexcan: device registered (reg_base=a0a48000, irq=28)
[ 1.553329] can: controller area network core (rev 20120528 abi 9)
[ 1.568635] can: raw protocol (rev 20120528)
[ 1.573667] can: broadcast manager protocol (rev 20120528 t)
[ 1.580141] can: netlink gateway (rev 20130117) max_hops=1
[ 15.898451] flexcan 2090000.flexcan can0: writing ctrl=0x01232084
[ 15.903259] flexcan 2090000.flexcan can0: flexcan_set_bittiming: mcr=0x5980000f ctrl=0x01232084
[ 15.903268] flexcan 2090000.flexcan can0: flexcan_chip_start: writing mcr=0x79a20209
[ 15.903278] flexcan 2090000.flexcan can0: flexcan_chip_start: writing ctrl=0x0123acd4
[ 15.903319] flexcan 2090000.flexcan can0: flexcan_chip_start: reading mcr=0x60a20209 ctrl=0x0123acd4


Собрал и задеплоил canutils от freescale по инструкции: https://community.freescale.com/docs/DOC-1437

Судя по dts файлу на верх выведен flexcan2 (hola-ieb), в i.MX 6Solo/6DualLite Applications Processor Reference Manual указано что для получения сигнала на пины PAD_KEY_COL4 и PAD_KEY_ROW4 нужно подать 0x000. В dts же конфигурируется с 0x80000000.

title

Кроме этого несоответсвия больше ничего не вижу, что-то еще нужно сделать? Может я делаю что-то не так?

Для отправки по шине использую cansend, прослушивание шины через candump.

Linux kernel 4.1
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 24.11.2015 23:16 Сообщение: 2
sasamy
4.71

Пункты: 83556
Регистрация: 14.08.2009
Цитата
В dts же конфигурируется с 0x80000000


смотрите документацию к биндингам DT что это означает

http://lxr.free-electrons.com/source/Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt?v=4.1#L33

http://lxr.free-electrons.com/source/Documentation/devicetree/bindings/pinctrl/fsl,imx6dl-pinctrl.txt?v=4.1
Спуститься к концу Подняться к началу
Персональная информация
Leroy
Добавлено 25.11.2015 09:04 Редактировалось 25.11.2015 09:10 Сообщение: 3
Leroy
0

Пункты: 386
Регистрация: 14.10.2015
0x80000000 == 10000000000000000000000000000000
видимо зануляет регистр со старшей единицей

нашел небольшой гайд по регистрам, советуют 0 не использовать мол не будет работать. В таком случае совсем непонятно что не так.

Возможно необходимо сделать pull up, какое значение использовать PAD_CTL_PUS_47K_UP, PAD_CTL_PUS_100K_UP или PAD_CTL_PUS_22K_UP?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 25.11.2015 10:50 Редактировалось 25.11.2015 10:52 Сообщение: 4
sasamy
4.71

Пункты: 83556
Регистрация: 14.08.2009
Цитата

нашел небольшой гайд по регистрам, советуют 0 не использовать мол не будет работать


я вас вообще не понимаю - о чем вы ?

Цитата

The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is a pin working on a specific function, CONFIG is the pad setting value like pull-up for this pin.


Цитата

flexcan2 {
pinctrl_flexcan2_hola: flexcan2-hola {
fsl,pins = <
MX6QDL_PAD_KEY_COL4__FLEXCAN2_TX 0x80000000
MX6QDL_PAD_KEY_ROW4__FLEXCAN2_RX 0x80000000
>;
};
};


функциональное назначение для мультиплексоров задается MX6QDL_PAD_KEY_COL4__FLEXCAN2_TX, MX6QDL_PAD_KEY_ROW4__FLEXCAN2_RX

что означает CONFIG = 0x80000000 описано и в доке ядра и вашей ссылке предельно ясно

Цитата

NO_PAD_CTL(1 << 31): indicate this pin does not need config.


Цитата

The value 0x80000000 is special and means "I don't know and don't change from the default". Otherwise, it's set according to the following chart (basically the bitfields of the IOMUXC lower 17 bits):
Спуститься к концу Подняться к началу
Персональная информация
Leroy
Добавлено 25.11.2015 11:28 Сообщение: 5
Leroy
0

Пункты: 386
Регистрация: 14.10.2015
Теперь вижу, проморгал.

В режиме loopback все работает, я вижу посылки
Код
debian@arm:~$ candump
interface = can0, family = 29, type = 3, proto = 1
<0x123> [4] 0b 16 21 2c
<0x123> [4] 0b 16 21 2c
<0x123> [4] 0b 16 21 2c
<0x123> [4] 0b 16 21 2c
<0x123> [4] 0b 16 21 2c


В режиме triple-sampling ровным счетом ничего не происходит, я не слышу что происходит на шине, на шине не видно моих посылок.

Смотрел осцилографом, по физике никакого движения нет. Что еще может быть?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 25.11.2015 12:21 Редактировалось 25.11.2015 12:25 Сообщение: 6
sasamy
4.71

Пункты: 83556
Регистрация: 14.08.2009
Цитата

Что еще может быть?


скорей всего некорректно прописан мнтерфейс в DT

Цитата

[ 1.239833] flexcan 2090000.flexcan: device registered (reg_base=a0a48000, irq=28)


этой первый интерфейс а нужен второй
Цитата

&flexcan2 {
pinctrl_flexcan2_hola: flexcan2-hola {


Цитата

flexcan 2094000.flexcan: device registered (reg_base=c0a70000, irq=143)


еще irq подозрительный но скорей всего в ванильном ядре свои порядки. В общем смотрите соседние файлы с imx6 и делайте по аналогии, возможно есть какие-то отличия в ванильном ядре.
Спуститься к концу Подняться к началу
Персональная информация
Leroy
Добавлено 25.11.2015 13:47 Редактировалось 25.11.2015 13:48 Сообщение: 7
Leroy
0

Пункты: 386
Регистрация: 14.10.2015
Цитата

это первый интерфейс а нужен второй


Да в этом и было дело, регистрировался не тот интерфейс, спасибо большое!
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » Hola(Duo)-PC