【友善串口调试助手Serial Port Utility以ASCII形式发送字节数据显示0D的问题】

项目场景:

在做DS18B20温度检测时自己想通过UART串口接收上位机发出的指令来进行相应的操作,但是第一次上板未能成功,所以回过头来逐步排查问题


背景描述

自己考虑FPGA与DS18B20数据交互对DS18B20的控制可分为三类:复位、写操作与读操作,每种操作后面还需跟相应具体的指令,如SKIP ROM [CCh]、CONVERT T [44h]属于写操作一类;READ SCRATCHPAD [BEh]属于读操作。若通过串口控制则设置一个两字节的寄存器:

reg [15:0] rx_data_reg;

rx_data_reg[15:8]指示命令种类,rx_data_reg[7:0]指示命令种类下具体的指令。

在UART接收模块设置的数据位是8bit:

module uart_rx_byte (clk, rst_n, rxd, dout, rx_done);
 input clk, rst_n, rxd;
 output reg [7:0]dout;
 output reg rx_done;

dout为UART的rx端接收到的数据,由于需要的寄存器为2字节,所以还需一个移位寄存器:

always@(posedge clk or negedge rst_n)begin 
if(!rst_n)begin
        rx_data_reg <= 0;
    end 
else if(rx_data != rx_data_reg[7:0])begin
        rx_data_reg <= {rx_data_reg[7:0], dout};
    end     
else begin
        rx_data_reg <= rx_data_reg;
    end
end //always end

上述代码的含义为当串口接收到不一样的数据时,从rx_data_reg的右端“塞入”新的字节;

当在串口助手以ASCII形式发送字符“c”时,SignalTap显示如下:

由波形图可知当前FPGA接收到的数据最后1字节是0Dh,不是想要的字符“c”的ASCII码


原因分析:

 由于之前验证过UART接收模块的正确性,所以这里考虑应该是串口接收而非rx模块的问题,根据发送数据是字符“c”的ASCII码和接收到的0Dh值可联想到搜索0Dh所代表ASCII的值:

0D代表回车键,接着检查串口助手是否在字符后面多加了回车,发现也没有: 

此时检查寄存器rx_data_reg里的数据为630Dh,63为字符“c”的ASCII码值,说明数据发送成功,只是在末尾加入的回车的操作,此时检查串口助手的设置, 发现软件自动勾选了“当发送后自动添加换行(只在文本模式下有效)”,换行设置默认的是回车:

解决方案:

由以上分析可知,取消默认勾选即可解决ASCII码发送显示多余数据问题:

补充知识:

carriage return意为回车, line feed意为换行,回车只是只回到当前行的行首,换行只是只向下移动一行,组合起来才是我们熟悉的移动至下一行的行首;

在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做"回车",告诉打字机把打印头定位在左边界;另一个叫做"换行",告诉打字机把纸向下移一行。

后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。Unix系统里,每行结尾只有"<换行>",即"\n";Windows系统里面,每行结尾是"<回车><换行>",即"\r\n";Mac系统里,每行结尾是"<回车>"。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 友善串口调试助手 csdn是一款功能强大的串口调试软件,它可以帮助用户在串口通信过程中快速连接设备和发送数据,还可以实时接收和解析串口数据,提供数据监控和日志记录功能,方便用户进行数据交互和调试。 该软件操作简单,具有可视化用户界面,用户可以通过界面快速选择串口通信参数,如波特率、数据位、停止位等等,同时支持多种数据格式的发送和接收,如ASCII码、HEX十六进制等。 另外,友善串口调试助手 csdn支持一键发送、循环发送数据自动化处理等高级功能,大大提高了调试效率,增强了用户体验。如果用户需要进行串口通信调试,特别是需要进行数据监测、解析和记录,友善串口调试助手 csdn是个不错的选择。 ### 回答2: 友善串口调试助手是一款非常实用的串口调试工具,可以帮助开发者快速进行串口通讯调试,提高开发效率。该助手具有以下几个特点: 1. 界面友好:友善串口调试助手的用户界面非常简洁,设置和操作都非常方便,令人感受到很好的使用体验。 2. 功能强大:该助手支持多种类型的串口通讯,可以进行数据发送和接收,支持16进制、ASCII和字符串的显示方式,并且支持定时发送和自动回复等多种功能。 3. 兼容性高:友善串口调试助手可以兼容多种操作系统平台,如Windows、Linux、Mac OS等,并且支持主流的串口通讯标准,如RS232、RS485等。 4. 自定义配置:该助手可以根据用户需要进行自定义配置,包括串口参数设置、波特率调节、字符集设置等,具有很好的灵活性。 总之,友善串口调试助手是一款功能强大、界面友好、兼容性高的串口调试工具,可以帮助开发者更快速准确地进行串口通讯调试,是值得推荐的工具。 ### 回答3: 友善串口调试助手是一款集串口调试、数据分析、协议解码、数据记录等功能于一体的工具软件,为开发者在串口通信中的调试提供了便利。它可以通过简单的设置快速连接串口设备,实时响应串口数据,并实现对数据的录入、记录和分析。在数据分析方面,友善串口调试助手支持多种数据格式的显示,提供了多种数据分析方式,如查看数据的实时曲线、散点图和直方图等,可以帮助开发者更加直观地了解数据的特性。此外,友善串口调试助手还支持自定义协议解码方式,便于开发者对不同协议的串口数据进行解码。在数据记录方面,该软件支持实时记录串口数据,并可以将数据保存到文件中,方便后续的数据分析和处理。总的来说,友善串口调试助手是一款功能强大、易于使用的工具软件,可以加速开发者的串口调试和数据分析过程, 提高工作效率,使得产品开发更加高效和可靠。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值