5V单片机与3.3V单片机串口通信问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5V单片机与3.3V单片机串口通信问题相关的知识,希望对你有一定的参考价值。
买了个串口继电器模块,是STC的芯片。直接的一块板子是430,3.3V的。现在的问题是2个板子不能通信。不懂为什么。2个板子都有9针口,转换芯片是sp3232,另外一个是sp232。为什么不行。从正面解决。别的方法我也有。
5V单片机与3.3V单片机串口不能通信,是设置错误造成的,解决方法如下:
1、首先51单片机的可用内存只有00H~7FH,堆栈指针设置在60H,则堆栈的大小就是60H~7FH。这算是有规定大小的。
2、堆栈主要是为子程序调用和中断操作而设立的,因此对应有两项功能:保护断点和保护现场。
3、单片机的程序归根结底是个死循环,反复在执行Main函数(主程序)。
4、可以只写一个函数Main,那么这个函数随着功能的增多而变得异常大,而且非常不具备可读,这个时候就需要子函数(子程序)了。
5、主函数在调用完子函数后会返回到主函数中,这样就可以调用其它函数并且继续这个死循环。
参考技术A遇到这种界面问题,首先必须确认两个板子上的TXD/RXD/GND 若用到CTS/RTS当然也要
确认,确认它们的输出电压.(若是标准RS-232信号,那就确认两块板子的RXD/TXD对接
就是1板子的TXD接2板子的RXD.....),有时候板子上输出的是TTL电压(5v/0v),串口标准电压
是正负12v
一般拿出来卖的功能应该是有的,具体就是你怎么用?
sp232是标准RS-232D界面,要加正负12v电压。sp3232的电压是3v-5.5v 也就是0v-3.3或5.5v
两个当然不能直接接在一起。你看看是不是这个问题!
1单片机io模拟串口发送
一、框图
1、单片机不能直接与
1、单片机不能直接与电脑端进行通讯,两端的电平标准不一样
(1)pc端遵循的323电平,-12V左右表示的是高电平,而+12V左右表示的是低电平
(2)单片机端遵循的是TTL电平,5V表示高电平,0V表示电平
2、如何解决单片机和pc的通讯?
(1)可以通过SP232或MAX232转换芯片进行解决
(2)另外一个问题,现在大多笔记本电脑都没有串口,而只有usb接口,那么我们可以用CH340G、PL2303、CP2102或FT232等芯片解决,上图就是通过CH340芯片进行解决的
二、串口发送时序图
1、如上图所示为8位UART协议格式
(1)一帧信息总共10位
(2)开头一位是起始位(start bit),最后一位是结束位(stop bit)
(3)中间8位是数据位(低位在先)
(4)脉冲的宽度是由波特率决定的,例如波特率位1200,则脉冲宽度为1/1200s,大约为833us
三、代码实现
1 /******************************************************** 2 // 函数名称:UART_Send_Char(用IO模拟串口协议) 3 // 输入参数:uartData 4 // 输出参数:无 5 // 函数功能:发送一个字节 6 // 注意:延时用定时器延时(时序更准),不要用软件延时 7 ********************************************************/ 8 void UART_Send_Char(unsigned char uartData) 9 { 10 unsigned char i; 11 uartTXD = 1; //单片机TX引脚拉高 12 uartTXD = 0; //start bit 13 Delay883us(); //延时一个脉冲的时间(对应1200的波特率) 14 for (i=0;i<8;i++) 15 { 16 if(uartData & 0x01) 17 { 18 uartTXD = 1; 19 } 20 else 21 { 22 uartTXD = 1; 23 } 24 uartData >>= 1; 25 } 26 uartData = 1; // stop bit 27 Delay883us(); 28 }
以上是关于5V单片机与3.3V单片机串口通信问题的主要内容,如果未能解决你的问题,请参考以下文章
准备用PIC 3.3V的单片机通过串口与电脑通信,采用RS232芯片进行转换,请问:1〉RS232的供电是5V吧!
51单片机一般5V电压,他的串口232接5V,ARM一般用3V电压,他的串口232也是3V,要让51同ARM使用串口通信。