Micom_Electric/CAN 2011. 8. 25. 22:56
SN65HVD230DR : 3,900원
SN65HVD232D:  4,040



문제진님, 안녕하세요.
먼저 애정어린 말씀에 감사의 인사 올립니다.

저희 디바이스에 대해 정확하게 파악을 하고 계시며 해결방안 또한 정확하게 제시를 해주셨습니다.
CAN 트랜시버인 MCP2551의 TX핀에는 내부적으로 Pull Up이 구성되어 있으며, RXD 핀은 5V 출력을 내주고있므로 Direct로 연결하고 dsPIC33F 의 해당핀을 Open Drain으로 설정하시면 됩니다.
위의 방법으로 CAN 통신을 저희 지사 엔지니어가 직접 테스트를 해보았으며 I2C의 경우도 3.3V와 5V 디바이스 간의 통신도 위의 방법으로 구현이 가능하며 제가 직접 Test 해보았습니다.

하지만 현재 개발하시는 Application이 Automotive 분야 이시라면, 고려를 좀 더 해보셔야할 것으로 보입니다. Automotive 분야에서는 3.3V operation 자체를 아직까지 받아들이고 있지 않기 때문입니다.
참고로, 정확한 출시일은 미정이지만 마이크로칩에서도 3.3V 구동용 CAN 트랜시버를 고려하고 있습니다.


>>문제진님이 작성하신 글입니다.일단 늦었지만 새해복 많이 받으시고 날로 번창하는 한국 마이크로칩사가 되었으면 하는 바램입니다.

제가 dsPIC30시리즈로 CAN을 좀 공부했는데요, 물론 트랜시버는 MCP2551을 사용했습니다.
동작 테스트는 어느정도 해봤구요.
이젠 dsPIC33시리즈에서 돌려보려 하는데 아시다시피 dsPIC33시리즈는 dsPIC30시리즈와 달리 5V에서는 
구동이 불가하고 3.3V에서 동작하지 않습니까?  MCP2551역시 5V에서 구동하구요.

헌데 마이크로 칩사에서는 3.3V용 CAN 트랜시버가 아직 없는걸로 알고 있습니다. 
처음엔 타사의 3.3V용 트랜시버를 사용할까 하다가 문득 이런 생각이 들어서 확인해 볼까 해서 질문 드리는건데요.

dsPIC33시리즈는 I/O를 오픈 드레인으로 사용할수 있지 않습니까?
그래서 33시리즈의 CAN_RX와 CAN_TX를 MCP2551에 열결하고  CAN-RX와TX핀을 모두 오픈 드레인으로
 설정한 후에 5V에서 풀업을 달면 사용할수 있을것 같아서요. 가능하겠는지요?

 데이터시트를 보니 CAN관련된 RX.TX핀 모두 오픈드레인으로 설정할수 있는  ODC관련 레지스터가 있더라구요.
물론 전원은 3.3V외에 5V의 전원부도 구성해야 겠지만요.

시도해 보셨으면 답변 부탁드리겠습니다.
그럼, 수고 하세요.


In my opinion, it has no sense to use a dual 3.3/5 V transceiver, because if you have 5V on board you can use a conventional 5V transceiver; a 5V transceiver will work fine with 3.3V inputs, and you can configure the CTX on your uC to opendrain and use a pull-up resistor (of course this increases power consumption). If the CRX on uC can't manage 5V input, you can just add a series resistor, as internal clamping diode will limit it to avoid chip destruction by latch-up. I worked with sn slightly different architecture, PIC24H, which indeed has 5V tolerant inputs, and I used open-drain or 3.3V directly driven outputs with great success. The only boar where I use a PIC18LF2480 has galvanic isolation for CAN, so one side is powered at 5V and the other at rouggly 2.5 V (it's a network powered telephone, so it has very special power contraints...). Of course I'm not suggesting to use isolation if it's not needed, but I don't think that spending money on special transceivers only because the uC is powered at 3.3V is reasonable. On the other side if it's just imposible to get 5V power, then you must know that a 3.3V transceiver will never met the ISO11898 recommendation for driving CANH in dominant condition, which is 3.5V. It will tipically drive CANH at about 2.5V, which is the recesive condition in ISO11898. It will work fine, because will drive CANL down to 1V or less, and so get differential signal of 1.5~2 V. The rest of the bus will manage this as a ground offset of around 1V, and so it will work. But I'd suggest always to use a 5V transceiver if it's possible, since it stands more tightly to ISO11898. I don't mean with this that a 3.3V won't work, even I don't mean that it will work worse than it's 5V counterparts, but I'm just suggesting that if it's possible, it has many benefits to use a 5V transceiver. I know it's an annoyance, but it's not unovercamable.

I used MCP2551 with dsPIC33FJ64MC506 with success to command a VVVF drive unit. In this case you don't need any resistor in series on CRX, because dsPIC33 are 5V tolerant. On the other hand you can place a pull-up resistor (2k2 or more would work fine, but the highest value depends on speed), but you can just leave it open and drive TX directly, with no open-drain config on that output. MCP2551 will almost for sure take the 3.3V input as a high level, as it needs just 2V for a high level input, and so you don't need to use a pull-up and open-drain to get 5V. This driving method has much better response at high speeds than a pull-up. If you get a strange behaviour on CAN, then you can try the pull-up solution, but when using an MCP2551 I think it wont be required. 
posted by 털보네i

댓글을 달아 주세요