1、can
can基础知识:
11位标准帧,29位扩展帧,也可以通过购买can盒子进行测试。CAN标准帧和扩展帧只是在帧ID的长度上不一样,以能扩展更多的CAN节点,更好地支持上层协议。
详解CAN总线:什么是CAN总线?_不脱发的程序猿的博客-CSDN博客_can总线
CAN节点通常由三部分组成:CAN收发器、CAN控制器和MCU。
CAN总线通过差分信号进行数据传输,CAN收发器将差分信号转换为TTL电平信号,或者将TTL电平信号转换为差分信号,CAN控制器将TTL电平信号接收并传输给MCU
高速CAN总线(ISO 11898-2,通信速率为125Kbps~1Mbps)
在传输显性(0)信号时,会将 CAN_H端抬向5V高电平,将CAN_L拉向0V低电平。
当传输隐性(1)信号时,并不会驱动 CAN_H 或者 CAN_L 端。
显性信号 CAN_H 和 CAN_L 两端差分标称电压为 2V。
终端电阻在没有驱动时,将差分标称电压降回 0V。显性信号(0)的共模电压需要在 1.5V 到 3.5V 之间。隐性信号(1)的共模电压需要在+/-12V。
显性电平对应逻辑:0
CAN_H和CAN_L之差为2V左右。
隐性电平对应逻辑:1
CAN_H和CAN_L之差为0V
can测试:两个can互接
candump can0
cansend can1 123#11223344
问题点:
can命令配置
ip link set can1 down
ip link set can1 type can bitrate 250000
ip -detail link show can1
ip link set can1 up
查看can状态,波特率为250k,can state ERROR-ACTIVE
sh-4.4# ip -detail link show can0
2: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UP mode DEFAULT group default qlen 10
link/can promiscuity 0 minmtu 0 maxmtu 0
can state ERROR-ACTIVE (berr-counter tx 0 rx 0) restart-ms 0
bitrate 250000 sample-point 0.875
tq 250 prop-seg 6 phase-seg1 7 phase-seg2 2 sjw 1
sun8i-can: tseg1 1..16 tseg2 1..8 sjw 1..4 brp 1..64 brp-inc 1
clock 24000000numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
1、电阻120欧姆
2、硬件信号不好时。需要restart can等,并设置tx的len,否则会阻塞。
ifconfig can0 down
echo 4096 > /sys/class/net/can0/tx_queue_len
ip link set can0 type can restart-ms 1000
ip link set can0 up type can bitrate 1000000
ifconfig can0 up
2、uart
3、gpio
4、key
5、音频
6、lcd
7、camera
8、掉电关机保护功能。
两种保护措施:
1、将文件系统改成只读。
2、卸载走正常流程。
#!/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
pkill -9 XXXX.sh
fuser -mvk /run
fuser -mvk /var/volatile
mount -o remount,ro /
umount -f -a -r > /dev/null 2>&1