- ไฝฟ็จ CSMA/CD ๆนๆณๅ้ไฝ็ซไบ๏ผๅจไฝ็บงๅซๆ็ฅๆป็บฟๅนถไผ ่พๆถๆฏใ
- ๆฏๆกๆถๆฏ้ฝ่ขซๅ้ ไธไธชไผๅ ็บงใไผๅ ็บงๆ้ซ็ๆถๆฏๅง็ปๆงๅถๆป็บฟไปฒ่ฃใ็ฑไบไปฒ่ฃๅบไบไฝ๏ผๅ ๆญคๅญๅจๆพๆงๅ้ๆงไฝ็ตๅนณใ
- ไปปไฝ่็น้ฝๅฏไปฅ้ๆถๅ้๏ผๆฒกๆไธปไป่็นไนๅใ
- ๆๆๆฐๆฎ้่ฟไธคๆก๏ผๅทฎๅๅฏน๏ผ็บฟ่ทฏไผ ่พ๏ผCAN_H ๅ CAN_L ็บฟใ
- CAN ่็นไฝฟ็จไฝๅๆญฅ่ฟ่กๅๆญฅ๏ผๅ ถไธญๆฏไธชไฝๆถ้ด่ขซๅๅไธบๅไธชๆถ้ด้ๅญๆฎตใ
- ้่ฟๅบไบๆถๆฏ็ๅ่ฎฎๅฎ็ฐๅคไธช่็นไน้ด็้ไฟก๏ผๆ ้ๅคง้ๅธ็บฟใ
- ้่ฟๅ ๆฌๆฃๆตใ้็ฅๅ็บ ๆญฃๅจๅ ็้่ฏฏ็ฎก็็กฎไฟๆฐๆฎๅฎๅ จใ
ๆณจๆ
- ๅจ RB3Gen2 ๅผๅๅฅไปถๅ Dragonwing IQ-615 ่ฏไผฐๅฅไปถไธ๏ผCAN ้่ฟๅค้จ Microchip SPI ่ฝฌ CAN ๆงๅถๅจ้ป่ฎคๅฏ็จใQCS6490ใQCS5430 ๅ Dragonwing IQ-615 ๅไธๅ ๅซๆฟ่ฝฝ CAN ๆงๅถๅจใ
- Dragonwing IQ-9075 ๅ Dragonwing IQ-8275 ๆฏๆ RTSS CAN๏ผไฝ่ฝฏไปถไธญๅฐๆชๅฏ็จใ
CAN ็นๆง
CAN ๅ่ฎฎๆฏๆไปฅไธ็นๆงใ- ๅบไบไผๅ ็บง็ๅคๆงๅถๅจๆป็บฟ่ฎฟ้ฎ
- ๅบไบๅ ๅฎน็้็ ดๅๆงไปฒ่ฃ
- ้่ฟๅ จๅธงไผ ่พๅฎ็ฐๅนฟๆญ
- ้่ฟๆฅๅ่ฟๆปคๅฎ็ฐ็ปๆญๅธงไผ ่พ
- ่ฟ็จๆฐๆฎ่ฏทๆฑ
- ้ ็ฝฎ็ตๆดปๆง
- ๅ จ็ฝๆฐๆฎไธ่ดๆง
- ้่ฏฏๆฃๆตๅ้่ฏฏ้็ฅ
- ่ชๅจ้ไผ ๅจไผ ่พ่ฟ็จไธญๅคฑๅปไปฒ่ฃใ็ผบๅฐๅบ็ญๆ้ๅฐ้่ฏฏ็ๅธง
- ๅบๅ่็น็ไธดๆถ้่ฏฏๅๆฐธไน ๆงๆ ้๏ผๅนถ่ชๅจๅ็จๆ ้่็น
CAN ๆถๆ
MCP2517 ๆฏไธๆฌพๅค้จๅฏ้ ็ฝฎ็ CAN ๆงๅถๅจ๏ผๅฏ้่ฟ SPI ็บฟ่ฎฟ้ฎใSPI ๆฅๅฃๆ้ซๆฏๆ 20 MHz๏ผๅนถๆฏๆ Mode0,1ใ่ฏฅๆงๅถๅจ่ฟๆฅๅฐไธไธช QUP ๆจกๅ๏ผๅ ถ SE3 ้ ็ฝฎไธบ 4 ๅผ่ SPI ๆไฝใSPI ๆงๅถๅจ่ฟๆฅๅฐๆถๅๅจ๏ผMCP2561xxx๏ผ๏ผๅ่ ่ฟๆฅๅฐ CAN ๆป็บฟใSPI ๆงๅถๅจๅ CAN ๆถๅๅจ็็ตๆบ่พๅ ฅๆฅ่ช SoCใ
ๅพ๏ผCAN ๆถๆ
็จๆทๅบ็จ็จๅบไธ SocketCAN ๆไพ็็ฝ็ปๆฅๅฃ้ไฟกใ่ฝฏไปถ้ฉฑๅจๆฏ Linux ไธญ SPI ๆ ธๅฟๆจกๅ็ๅฎขๆท็ซฏ๏ผQUP_SPI ้ฉฑๅจๅ่ฏฅๆ ธๅฟๆจกๅๆณจๅใๅฎ้ ็กฌไปถ้่ฟ SPI ๅผ่่ฟๆฅใ
ๅพ๏ผCAN ่ฝฏไปถๆ
CAN API
ๆๅ ณ CAN ๅ ฌๅ ฑ API๏ผ่ฏทๅ้ https://www.kernel.org/doc/Documentation/networking/can.txtใCAN ็คบไพๅๅทฅๅ ท
ไธ่กจๅๅบไบ็จไบๆพ็คบใ่ฎฐๅฝใ็ๆๅ้ๆพ CAN ๆต้็ SocketCAN ็จๆท็ฉบ้ดๅฎ็จๅทฅๅ ทๅๅทฅๅ ทใ ่กจ๏ผ SocketCAN ๅฎ็จๅทฅๅ ท| ๅฎ็จๅทฅๅ ท | ๆ่ฟฐ |
|---|---|
candump | ๆพ็คบใ่ฟๆปค CAN ๆฐๆฎๅนถๅฐๅ ถ่ฎฐๅฝๅฐๆไปถใ |
canplayer | ้ๆพ CAN ๆฅๅฟๆไปถใ |
cansend | ๅ้ๅไธชๅธงใ |
cangen | ็ๆ๏ผ้ๆบ๏ผCAN ๆต้ใ |
cansniffer | ๆพ็คบ CAN ๆฐๆฎๅ ๅฎนๅทฎๅผ๏ผไป ้ 11 ไฝ CAN ID๏ผใ |
kernel/drivers/net/can/spi/mcp251xfd/mcp251xfd-core.cใ
CAN ๅๆไปช - PCAN-USB FD
PCAN-USB FD ๆฏไธๆฌพๅคๅ่ฝ CAN ๆฐๆฎๅ /ๆถๆฏๅ ๆขๅจ๏ผๅฏไฝไธบไปปไฝ CAN ๆป็บฟไธ็่็น่ฟ่ก๏ผๆฏๆ็ตๆดป็ๆฐๆฎ้็ใๅฎๅฏ็จไบ้่ฟ USB ๅจไธปๆบไธๅ ๆขๅๅ้ CAN ๆฐๆฎๅ ใไธป่ฆ็นๆงๅฆไธ๏ผ- PCAN-View GUI ๅทฅๅ
ท
- ๆไพๆ นๆฎ็จๆท้ๆฑๅ ๆขๅๅ้ CAN ๆฐๆฎๅ ็ไพฟๆทๆนๅผใ
- ๅจๅผๅๅๆต่ฏๆ้ด็ๆงๅ่ฐ่ฏ CAN ๆฐๆฎๅ ใ
- PCAN-USB FD ๆฅๅฃ
- ๅฏ่ฝปๆพ่ฟๆฅๅฐ CAN FD ๅ CAN ็ฝ็ปใ
- ็ดงๅ็ๅกๆๅคๅฃณ๏ผ้็จไบ็งปๅจๅบ็จใ
- ้ซ่พพ 500 V ็็ตๆฐ้็ฆปๅฐ PC ไธ CAN ๆป็บฟ่งฃ่ฆใ
- CAN FD ๆ ๅ
- ็น็นๆฏๆฐๆฎไผ ่พๅธฆๅฎฝๆด้ซใ
- ๅ ่ฎธๆฏไธช CAN FD ๅธงไผ ่พๅค่พพ 64 ไธชๆฐๆฎๅญ่๏ผ่ไธๆฏ 8 ไธช๏ผใ
- ๆฏๆ้ซ่พพ 12 Mbit/s ็ๆฏ็น็ใ
- ๅไธๅ ผๅฎน CAN 2.0 ๆ ๅใ
- CAN FD ่็นๅฏไปฅๆๅ ฅๆฒกๆ CAN FD ๆฉๅฑ็็ฐๆ CAN ็ฝ็ปใ
- ่ฟๆฅๅฐ DB9 ่ฟๆฅๅจใ
- PCAN ๅ ทๆไธไธช DB9 ่ฟๆฅๅจ๏ผๅฏไปฅๆๅ ฅไปปไฝๆ ๅ DB9 ่ฟๆฅๅจใ
- ่ฟๆฅๅฐ Qualcomm ่ฎพๅคใ
- ๅผๅบ CAN_HใCAN_L ๅ GND ็บฟใ
- ๅฐ่ฟไบ็บฟ่ฟๆฅๅฐไธคไธช 120 ฮฉ ็็ป็ซฏ็ต้ปใ
- ่ฟๆฅ CAN_HใCAN_L ๅๅฐ็บฟใ

ๅพ๏ผCAN ่ฟๆฅ
- ่ฟๆฅๅค้จ็ป็ซฏ็ต้ปใ
ๆณจๆ่ฎพๅคๆฒกๆ 120 ฮฉ ็ๅ
้จ็ป็ซฏ็ต้ปใ่ฟไธ็น่ณๅ
ณ้่ฆ๏ผๅ ไธบๆไบๅทฅๅ
ทๆไพไบๅฏน็ป็ซฏ็ต้ป็ๅ
็ฝฎๆฏๆใ

ๅพ๏ผCAN ็ป็ซฏ็ต้ป
ไธๅพๆพ็คบไบ่ฟๆฅๅฅฝ็็กฌไปถใ
ๅพ๏ผCAN USB FDใๅค้จ็ต้ปๅ่ฎพๅค่ฟๆฅ
ๅฏๅจ CAN ๆฅๅฃ
ๅจๆๅปบ CAN ้ฉฑๅจๅนถๅฐๅ ถๅ ่ฝฝๅฐๅ ๆ ธๅ๏ผไปฅไธๅฝไปคๅบๅไผๅ้ๆฐๆฎไปฅ็กฎ่ฎค CAN ่็นๆฏๅฆๅทฒๅฏๅจใๅฏไปฅไฝฟ็จไธ่กจๅๅบ็ๅฝไปคๅฏๅจๆๅๆญข CAN ่็นใๆณจๆๆๆ็ฝ็ป่ฎพๅคๅไฝฟ็จ
ifconfig -aใ| ่ฏดๆ | ๅฝไปค |
|---|---|
| ๆฅ็ CAN ่็น็ผๅท | ifconfig -a |
| ่ฎพ็ฝฎ 125 kbps ็ๆฏ็น็ | ip link set can0 up type can bitrate 125000 |
| ๅฏๅจ CAN | ip link set can0 up |
| ๅๆญข CAN | ip link set can0 down |
| ๆฃๆฅ CAN ้ ็ฝฎ | ip -details link show can0 |
| CAN ๅ ้จ็ฏๅ | ip link set can0 up type can bitrate 500000 loopback on |
| CAN FD ๅ ้จ็ฏๅ | ip link set can0 up type can bitrate 1000000 dbitrate 5000000 fd on loopback on |
| ๅ้ CAN FD ๅธง | cansend can0 213##311223344 |
ๅ้ๅๆฅๆถๆฐๆฎ
CAN-Utils ๆไปถไธญๆไพไบไธไบๅฎ็จๅทฅๅ
ทใSocketCAN ไฝฟ CAN ่็น่ฝๅคๅ้ๅๆฅๆถๆฐๆฎใSocketCAN API ไนๅฏ็จไบ่ชๅฎไนๅบ็จ็จๅบใ
- ๅ้ๅธฆ 11 ไฝ ID ็ๆฐๆฎ
- ๅ้ๅธฆ 29 ไฝ ID ็ๆฐๆฎ
- ๆฅ็ can0 ่็นไธๅฝๅไผ ๅ
ฅ็ๆฐๆฎ
้ ็ฝฎ CAN ๆฅๅฃ
SocketCAN ๆฏ Linux ไธ CAN ๅ่ฎฎ็ไธ็งๅฎ็ฐใSocketCAN ไฝฟ็จ Berkeley ๅฅๆฅๅญ API ๅ Linux ็ฝ็ปๆ ๏ผๅนถๅฐ CAN ่ฎพๅค้ฉฑๅจๅฎ็ฐไธบ็ฝ็ปๆฅๅฃใCAN ๅฅๆฅๅญ API ็่ฎพ่ฎกๅฐฝๅฏ่ฝไธ TCP/IP ๅ่ฎฎ็ธไผผ๏ผไฝฟ็ๆ็ฝ็ป็ผ็จ็็จๆทๅฏไปฅ่ฝปๆพๅญฆไน ๅฆไฝไฝฟ็จ CAN ๅฅๆฅๅญใๅๅงๅ็กฌไปถ
้ฉฑๅจไผๅๅงๅๅนถ้ ็ฝฎๅบๅฑ็กฌไปถๆจกๅใๅๅงๅๅ็ๅจ่ฐ็จdriver's _probe() ๅฝๆฐไนๅใ
่ฐ่ฏ CAN ้ฎ้ข
ๅฏไปฅไฝฟ็จftrace ๅทฅๅ
ท่ฐ่ฏ CAN ้ฎ้ขใMCP2517 ้ฉฑๅจๆฏๆ dev_coredump() APIใ

