I'm planning on connecting a MCP2003 to a ESP8266. The voltage levels of the uart (and any io) on the ESP8266 is 3.3v. As far as I understand the datasheet, the MCP2003 needs to be powered by 6-30v, and it's io (out) levels on the uart side match the power voltage. So:

  • Is it common that the 6v is the absolute minimum for these kind of chips, or do I have a chance that it'll run at 3.3v?
  • Am I missing or misunderstanding something in the datasheet that could help me do what I want? (For example, is there another way to get a lower output signal? Or is there so little power behind the signals that the ESP would be fine fine with them?)
  • If neither of the previous questions give me a way to do what I want, what would be the easiest or least component alternative?

Some background information:

  • What I want to do is to control a AXA Remote 2.0 device with an ESP over wifi. This device uses a LIN bus, and the MCP2003 converts from UART to LIN.
  • The voltage on the LIN bus is higher as I understand it, but this shouldn't be a problem, as the MCP2003 can handle that (I think). I haven't quite figured out how the LIN 'output' from the MCP2003 works, can't find a easy description of LIN, but I'm guessing it the bus get's pulled down similar to onewire? In which case there's no output voltage to the LIN bus to worry about.
  • The AXA Remote 2.0 device sadly isn't very well documented, basically this is it: http://files.domoticaforum.eu/uploads/Axa/AXA%20Remote%202%20domotica%20English%202012nov_V2.pdf It shows how to solder a MCP2003 to a 5v TTL USB serial dongle :)

Any helps or insights would be greatly appreciated! :)

  • 1
    \$\begingroup\$ As the LIN bus is meant to work in an automotive environment, it is reasonable to expect it to work at around 12 V. It is unreasonable to expect it to work at 3.3 V - even a 6 V motorbike would be dead at that voltage. Perhaps it would be better to use a level translator between the MCP2003 and ESP8266. \$\endgroup\$ Jun 21, 2017 at 21:23
  • \$\begingroup\$ Can you link the ESP8266 and MCP2003 datasheets you are looking at? It is possible that the ESP8266 you are using is 5V tolerant of inputs, and that the outputs are 3.3V. The question is if the MCP2003 recognizes 3.3V as a Logic Level 1, if so you wouldn't need anything between them. If the ESP is not 5V tolerant, you need some simple level-translating hardware. \$\endgroup\$
    – Ron Beyer
    Jun 21, 2017 at 21:28
  • \$\begingroup\$ Andrew: The LIN bus is one side, that won't be connected to the ESP, it's fine to run at higher voltages. I'm interested in the other side (UART?). If Majenko's answer is right (most likely) and it's open drain that would solve it for me tho I think :) \$\endgroup\$
    – bluemind
    Jun 22, 2017 at 8:30
  • \$\begingroup\$ Ron Beyer: I'm choosing to go by the assumption that the ESP is not 5v tolerant. It's spec's say it's not, whether it really is is a hotly debated topic among ESP enthusiasts :) I'll link the datasheet for the MCP2003 when I'm behind my home PC again, but from Majenko's answer it sounds like I misinterpreted a couple of things :) \$\endgroup\$
    – bluemind
    Jun 22, 2017 at 8:35

1 Answer 1


The MCP2003 uses TTL inputs and Open Drain outputs for communicating with your MCU.

That means that the TXD pin needs a HIGH signal that is between 2v and 5.3v and the RXD pin swings between 0v and whatever voltage you pull it up to with the required external pull-up resistor.

All of those are what an ESP8266 can work with. Of course you still need to provide the minimum 6v supply to the chip for it to work.

All this is shown in the datasheet both in the form of a simple schematic and a table of voltages:

enter image description here

(Green annotations are mine)

R1 is a pullup resistor for the Open Drain output of the \$R_{XD}\$ pin. It should pull up to the logic level of the receiving device (ESP8266; 3.3V).

enter image description here

(Reduced to only show the two logic voltages of interest)

  • \$\begingroup\$ Open drain, what a great invention :) For lack of experience I didn't spot that, that should make it a lot easier. I'll re-read the datasheet, sounds like you pointed me exactly in the right direction. (will accept your answer once I'm confident ;) ) \$\endgroup\$
    – bluemind
    Jun 22, 2017 at 8:23
  • \$\begingroup\$ A microcontroller line driver that you couldn't interface to a microcontroller would be pretty pointless. They already have all the bases covered with the interfacing methods chosen. \$\endgroup\$
    – Majenko
    Jun 22, 2017 at 9:15
  • \$\begingroup\$ Accepted your answer, since it was perfect :) Nearly got this working, using this schema: domoticaforum.eu/download/…. Only I used a pullup from the 3.3v rail instead of VREN, which I think shouldn't matter? For talking to a AXA my chip is on all the time :) I got the occasional reply, but very spotty, and I seem to get each character I send echo'd back to me, even without anything connected to the LIN bus.. :) \$\endgroup\$
    – bluemind
    Jul 2, 2017 at 17:28
  • \$\begingroup\$ Hmm, well, I guess getting any character back is normal too, it says RXD just follows the LIN bus, including what you send I assume, so that's ok. Turns out things work fine when you send each character slowly, not sure why yet, trying to read more on how LIN works :) \$\endgroup\$
    – bluemind
    Jul 2, 2017 at 19:21
  • \$\begingroup\$ Well, got that sorted too, the 'example' from the AXA company, if you look at the status bar of the terminal windows, it uses 2 stop bits, instead of the usual 1 :) So almost works now. Except it doesn't recognize the first command after 10 seconds of silense, but that's well outside this question ;) \$\endgroup\$
    – bluemind
    Jul 2, 2017 at 21:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.