Здравствуйте!
Использую процессорный модуль Тион270, отладочную плату Сириус270, адаптер SPI-CAN v2.0 и для отладки компьютер с платой компании Марафон и программой CANwise.
Так как устройство can0 на тионе присутствует в списке, поддержка CAN вроде бы должна быть обеспечена, но взаимодействие между устройствами отсутствует :(
ПРИЕМЗапускаю сеанс связи:
1. # ifconfig can0 down
2. # echo 0 > /sys/class/can/can0/listen_only
3. # ifconfig can0 up
4. # /usr/can-test
can-test: Read mode
ID, hex Length Data, hex
5. Запускаю поток данных с компьютера.
Результат: Тион данные благополочно игнорирует, хотя на линии данные есть (проверяю осциллографом, изменяющийся сигнал на CAN_H и CAN_L).
can-test: Receive packets: 0, errors: 0
ПЕРЕДАЧАС передачей все выглядит еще интереснее:
# /usr/can-test -e 0x00 -l 8 -d 123456789abcdef
can-test: ext. id, hex: 0
can-test: length: 8
can-test: data, hex: 01 23 45 67 89 AB CD EF
...........wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww[ 2939.000000] NETDEV WATCHDOG: can0: transmit timed out.wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww[ 2949.000000] NETDEV WATCHDOG: can0: transmit timed out.wwwwwwwwwwwwwwwwwwwwwwwwwww
can-test: Send packets (-1): 13, errors: 0
Никаких изменений на линиях нет.
Если после "мнимой передачи" запустить на прием:
# /usr/can-test
can-test: Read mode
ID, hex Length Data, hex
[ 2969.000000] NETDEV WATCHDOG: can0: transmit timed out
+ 0 8 EF CD AB 89 67 45 23 01
[ 2979.000000] NETDEV WATCHDOG: can0: transmit timed out
+ 0 8 EF CD AB 89 67 45 23 01
[ 2989.000000] NETDEV WATCHDOG: can0: transmit timed out
+ 0 8 EF CD AB 89 67 45 23 01
...
Ловятся "свои" же посылки.
При этом абсолютно без разницы подключен или нет при этом компьютер-приемник.
ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ.1. Отключил компьютер, проверил линии CAN_H и CAN_L от тионовского адаптера: на CAN_H и CAN_L напряжение присутствует, одинаковое, примерно +3В.
2. Контакты:
Адаптер | Сириус |
X1 PIN1 (SCK) | J4 PIN32 (SSP_CLK) |
X1 PIN2 (+3,3B) | J12 PIN6 (+3,3B) |
X1 PIN3 (нет) | - |
X1 PIN4 (GND) | J4 PIN6 (GND) |
X1 PIN5 (SO) | J12 PIN31 (SSP_RXD) |
X1 PIN6 (GND) | J4 PIN6 (GND) |
X1 PIN7 (SI) | J12 PIN32 (SSP_TXD) |
X1 PIN8 (GND) | J4 PIN6 (GND) |
X1 PIN9 (INT) | J6 PIN10 (GPIO105) |
X1 PIN10 (CS) | J6 PIN14 (GPIO108) |
Контакты для разъема X5 разведены.
3. Изменение уровней при запуске сеанса приема-передачи.
**изменение уровня обозначено через "-" в случае кратковременного изменения, "..." означает продолжительность значения
***когда в потоке приема появляется точка (а не w), импульс в 0 и обратно в 1
| ВКЛ | ЗАГРУЗКА | ifconfig can0 down | echo 0 > /sys/class/can/can0/listen_only | ifconfig can0 up | /usr/can-test | /usr/can-test -e 0x00 -l 8 -d 123456789abcdef |
CS (R7) | 0 | 0...0-1...1-0-1...1 | 1...1-0-1...1 или 1 | 1 | 1...1-0-1...1 | 1 | *** |
SO (R8) | 0 | 0...0 | 0 | 0 | 0 | 0 | 0 |
SI (R9) | 0 | 0...0 | 0 | 0 | 0 | 0 | 0 |
SCK (R10) | 0 | 1...1 | 1 | 1 | 1 | 1 | 1 |
INT (R11) | 1 | 1...1-0...0 | 0 | 0 | 1 | 1 | 1 |
Подскажите, пожалуйста, в чем заключается ошибка и что необходимо исправить для нормальной работоспособности?