示波器分析UART串口数据
2012-02-06 17:36
351 查看
从泰克示波器里面看UART数据的时候 截下来一段传输几个字节的数据信号数据
改天把图和数据传上来了 再对着图分析 各个UART中的各个概念
文件弄回来了 原始的是CSV格式的 原文件 放在Dbank 数据银行上
这个是示波器一段的图 上面的数据(原文件)就是这段的
Y的坐标单位是 电压值 V
X的单位是 时间 S 都是几十uS的 从这个可以分析出来 是多大波特率的
UART的格式 可以通过程序设置 有些会在停止位之前有一个奇偶校验之类的 停止位也不一定只是一个单位大小 可以设置为1、1.5、2等
中间的数据位长度也可以设置位 6 7 8 位等
还有数据的传输顺序 我这个是LSB先出的 所以可以看出
第一个数据 01010101 反过来就是10101010 =0xAA
第二个10101010 反过来01010101 0x55
第三个11001011 反过来 11010011 0xD3
第三个 11010000 反过来 00001011 0x0B
对着示波器 分析一遍之后 没错就是这样的 就是传的这些 也就是 数据和实际传输的信号 很好的对应上了
这个信号 是TXD 与 GND 之间的电压信号 此时 RXD与GND之间 一直为高电平电压值
这就是 UART : Universal Asynchronous Receiver/Transmitter,通用异步接收/发送 异步 没有时钟 接受端得有相应的采样时钟 否则会乱的
对于波特率的问题 这份数据有记录时间(具体精确的时间要看数据表) 好像记得在通信里面有码元这个概念 这里就是1bit 波特率=1/(1bit的时长) 这份数据1bit的时长≈8.6*10^(-6)s 也就是8.6us 1/8.6us =116279.06976744Hz
也就是115200的波特率了 因为那个8.6us的时间是估计的 而常用的波特率有这么些:看图片吧
也就是1200 1800 2400 4800 7200 9600 14400
19200 38400 57600
115200 128000 还有一些
115200 原来以为速度还挺快的 用示波器看了之后 我再运行了一段代码 输出两个引脚信号 来看时间 发现当运行一段不短的代码之后串口才发完3、4个码元(不是byte哦) 天哪 算一算 如果发16byte的数据 总共16*10(1bit起始位+8bit数据位+1bit的结束位)=160个码元的时间 160*1/115200=0.0013888888888889 也就是1.38ms 有时候中断都不知道发生多少次了 肯定 这也是相对的
UART里面还有一个经常提到的 RS232 这是一种标准(协议 ) 就像说市电一样的 就知道是220V RS-232 就是把TTL(0~5V) 转换到10+V的电压 提要电压 可以增强抗干扰的能力 增加传输距离
一般用芯片来实现 MAX232 很典型 工作电压5V 输出有12V左右 和输出的负载有关吧 例如TTL的逻辑1 232对应的就是 负10几V 0对应的就是10+V 就是一个变换 变换后一般用9针的接口线 工程应用上就是这样的 用到3根线 2、3、5 收发地
改天把图和数据传上来了 再对着图分析 各个UART中的各个概念
文件弄回来了 原始的是CSV格式的 原文件 放在Dbank 数据银行上
这个是示波器一段的图 上面的数据(原文件)就是这段的
Y的坐标单位是 电压值 V
X的单位是 时间 S 都是几十uS的 从这个可以分析出来 是多大波特率的
UART的格式 可以通过程序设置 有些会在停止位之前有一个奇偶校验之类的 停止位也不一定只是一个单位大小 可以设置为1、1.5、2等
中间的数据位长度也可以设置位 6 7 8 位等
还有数据的传输顺序 我这个是LSB先出的 所以可以看出
第一个数据 01010101 反过来就是10101010 =0xAA
第二个10101010 反过来01010101 0x55
第三个11001011 反过来 11010011 0xD3
第三个 11010000 反过来 00001011 0x0B
对着示波器 分析一遍之后 没错就是这样的 就是传的这些 也就是 数据和实际传输的信号 很好的对应上了
这个信号 是TXD 与 GND 之间的电压信号 此时 RXD与GND之间 一直为高电平电压值
这就是 UART : Universal Asynchronous Receiver/Transmitter,通用异步接收/发送 异步 没有时钟 接受端得有相应的采样时钟 否则会乱的
对于波特率的问题 这份数据有记录时间(具体精确的时间要看数据表) 好像记得在通信里面有码元这个概念 这里就是1bit 波特率=1/(1bit的时长) 这份数据1bit的时长≈8.6*10^(-6)s 也就是8.6us 1/8.6us =116279.06976744Hz
也就是115200的波特率了 因为那个8.6us的时间是估计的 而常用的波特率有这么些:看图片吧
也就是1200 1800 2400 4800 7200 9600 14400
19200 38400 57600
115200 128000 还有一些
115200 原来以为速度还挺快的 用示波器看了之后 我再运行了一段代码 输出两个引脚信号 来看时间 发现当运行一段不短的代码之后串口才发完3、4个码元(不是byte哦) 天哪 算一算 如果发16byte的数据 总共16*10(1bit起始位+8bit数据位+1bit的结束位)=160个码元的时间 160*1/115200=0.0013888888888889 也就是1.38ms 有时候中断都不知道发生多少次了 肯定 这也是相对的
UART里面还有一个经常提到的 RS232 这是一种标准(协议 ) 就像说市电一样的 就知道是220V RS-232 就是把TTL(0~5V) 转换到10+V的电压 提要电压 可以增强抗干扰的能力 增加传输距离
一般用芯片来实现 MAX232 很典型 工作电压5V 输出有12V左右 和输出的负载有关吧 例如TTL的逻辑1 232对应的就是 负10几V 0对应的就是10+V 就是一个变换 变换后一般用9针的接口线 工程应用上就是这样的 用到3根线 2、3、5 收发地
相关文章推荐
- 示波器分析UART串口数据
- 示波器分析串口数据
- 串口通信校验方式(even,odd,space,mark)UART数据波形分析
- stm32串口发送数据,丢失字节问题分析
- 从串口设置、读取、并分析um220模块的数据
- 分享一个自己写的串口数据分析、图形显示软件 can debugger 串口调试助手 免费,功能强大!
- MTK之UART串口收发数据
- STM32 使用 printf 发送数据配置方法 -- 串口 UART, JTAG SWO, JLINK RTT
- STM32L1XX使用HAL_UART_Transmit_DMA发送串口数据
- 通过MATLAB对从串口采集上来的一组数据进行频谱分析
- 串口数据打包分析
- UART串口软件接口的设计与分析
- 通过波形分析方法调试UART数据收发
- stm32串口发送数据,丢失字节问题分析
- CSerialport用于多串口烧录MCU时丢失数据的分析与解决办法
- 基于HAL库处理UART中断并接收串口传入的数据
- ARM架构处理器MT6572的LK printf 与UART串口打印分析
- dsPIC33F串口接收到的数据立即返送-UART
- linux中select()函数分析及Linux下用select查询串口数据
- 基于AVR的串口与PC机通信代码(uart8位数据)