지난 몇달 간?.. 본격적으로 지난 며칠간 삽질에 삽질을 거듭하여 CAN통신을 할 수 있게 되었다.
CAN통신이 안될 때만 해도 CAN통신의 아버지라 칭하는 사람이 있다는 성민이형의 말 속의 그 사람이 너무나 대단해 보였다.
그런데 모든 것이 잘 되는 지금.. 그 까이꺼 ㅋㅋ
예제를 기반으로 스펙에서 예제에 누락된 몇가지만 신경쓰면 금방 할 수 있는데.. 다 하고 나니 그게 보인다.
*CAN통신이란?
-
CAN: Controller Area Network 의 머릿글자만 딴 이름으로 CAN통신이라 부른다.
-
Multi-Master 통신: 여러 MCU들 간의 Multi Master 통신을 할 수 있는 방식이다.
SCI, SPI, I2C는 모두 1:1 통신이지만 CAN은 설정에 따라 모두가 Master가 되고 또 Slave 가 될 수 있다.
-
2-wired 통신: 2가닥 선으로만 통신이 가능하다. 다른 통신 (SCI, SPI 등)과의 가장 큰 차이점이다.
I2C도 2-wired 통신이지만 1:1 방식이고, RS485는 28335에서 지원하지 않는 것 같다.
-
1Mbps의 속도: 다른 2선 통신 규약인 I2C가 400kbps밖에 안되는데 더 빠르다.
RS485는 매우 빠른데 uart를 RS485로 바꿔주는 IC를 찾지 못해서 사용하지 못하였다.
-
노이즈에 강하다
원래 Bosch사에서 벤츠 내의 서로 다른 3개 전자장치 간의 통신을 위한 장치로 개발한 장치이기 때문에
다중통신이 가능하면서 2가닥의 단순한 배선과 노이즈에 강한 특성이 있다.
-
장거리 통신
최대 1000m까지 40kbps로 통신할 수 있다고한다.
-
그 외
하드웨어 오류보정, 수신필터링, 실시간 메세지 전송, 우선순위 등..
나는 여기서 Multi-Master 통신을 사용하기 위해서였으므로 사실 다른 특성은 별로 필요가 없다.
*CAN 회로도
- MCU: 28335 7개
- CAN Transceiver: TI SN65HVD235
위의 부품은 모두 Syncworks에서 구매할 수 있다.

연결 회로는 위와 같다.
*Configuration
*Transmit
*Receive