历史上的今天
返回首页

历史上的今天

今天是:2024年08月31日(星期六)

2020年08月31日 | PIC18F45K80单片机串口调试总结

2020-08-31 来源:eefocus

/****PIC18F45K80单片机串口调试总结—Sandy*********Start of file***********/

文件名:PIC18F45K80单片机串口调试总结

/***************************瘟 鸡 工 作 室********************************/


PIC18F45K80单片机串口调试总结


今天调试了PIC18F45K80单片机的串口模块,本来以为很简单的,去花了比较长的时间去调试,接上串口,启动串口调试助手,使用以下的配置函数是可以使调试助手收到数据的,但是一直出现单片机发送的数据跟接收到的数据不一致。


void pic_uart_init(void)


{


     UART1MD = 0;  //使能寄存器


     /*端口配置 RC6__TX  RC7__RX*/


     TRISC6 = 1;                 //RC6配置为输入,手册中明确说明


     TRISC7 = 1;                 //RC7配置为输入,手册中明确说明


     /*波特率配置*/


     BAUDCON1bits.BRG16 = 0;      //使用8位波特率模式


     SPBRG1 = 103;                //9600波特率


     BAUDCON1bits.ABDEN = 0;      //禁止波特率测量


     /*接收与发送配置配置*/


     TXSTA1 = 0x24;              //发送配置


     RCSTA1 = 0x90;              //接收配置


     /*中断配置*/


     RC1IE=1;                     //开启串口中断


}


这时出现数据的错误我就在想原因,第一个想到的是波特率配置问题,尝试了很多次还是出现相同的问题,第二个我想到的是系统时钟问题比如时钟偏差,时钟分频没有设置对,也试了很多但都没有找到问题。在网上找到的资料跟我上面所配置的差不多。所以一时迷茫了。就拿来示波器,抓了下波形,发现了空闲时的电平问题,后来我又翻开数据手册。果然发现BAUDCON1寄存器中有以下两位,网上找了很多资料是没有提到的。


然后我就修改了一下我的配置函数:如下


 


void pic_uart_init(void)


{


     UART1MD = 0;  //使能寄存器


     /*端口配置 RC6__TX  RC7__RX*/


     TRISC6 = 1;                  //RC6配置为输入,手册中明确说明


     TRISC7 = 1;                  //RC7配置为输入,手册中明确说明


     /*波特率配置*/


     BAUDCON1bits.BRG16 = 0;      //使用8位波特率模式


     SPBRG1 = 103;                //9600波特率


     BAUDCON1bits.ABDEN = 0;      //禁止波特率测量


//以下两句非常重要


     BAUDCON1bits.TXCKP = 1; //空闲状态下保持低电平。


     BAUDCON1bits.RXDTP = 1; //接收电平反向。


     /*接收与发送配置配置*/


     TXSTA1 = 0x24;               //发送配置


     RCSTA1 = 0x90;               //接收配置


     /*中断配置*/


     RC1IE=1;                     //开启串口中断


}


加上红色的那两句语句后接收和发送都正常了。我是说针对我的串口调试器正常了,我觉得应该有两种串口调试器,我是说空闲时电平不同的两种,或高电平,或低电平。如果有调试时发现发送错误可以试试改变空闲时的电平。


在调试时如果我们要用示波器去看串口的波特率,我们可以发送0XAA 或0X55 来抓取周期,从而计算出波特率。


/***************我所理解的 XXX—Sandy**************End of file*************/

推荐阅读

史海拾趣

潮州三环(Three-circle)公司的发展小趣事

潮州三环(集团)股份有限公司,最初成立于1970年,主要从事陶瓷基体及固定电阻器的制造和销售。然而,随着电子行业的快速发展,公司意识到单一产品已无法满足市场需求。因此,在1996年,三环集团开始投资生产片式电阻用的氧化铝陶瓷基片,这一决策标志着公司正式进入片式化元件制造领域。通过引进国外先进设备和技术,三环集团成功实现了电阻及瓷体的自动化生产,为公司后续的发展奠定了坚实基础。

宜源科技(ETERNAL)公司的发展小趣事

宜源科技公司深知品质对于企业长远发展的重要性。因此,公司从原材料采购到生产流程控制,再到产品出厂检验,都严格遵循国际标准和行业规范。通过不断提升产品品质,宜源科技赢得了客户的信赖和市场的认可,逐渐树立起自己的品牌形象。

Arima Lasers Corp公司的发展小趣事

随着产品线的丰富和技术的成熟,Arima Lasers Corp开始积极寻求市场拓展的机会。公司首先与一些知名的电子设备制造商建立了合作关系,为其提供定制的激光解决方案。这些合作不仅帮助公司扩大了市场份额,也提升了品牌知名度。随后,Arima Lasers Corp进一步拓展了国际市场,与海外企业开展技术交流和贸易往来,推动了公司的全球化发展。

C-MEDIA公司的发展小趣事

在2000年代初,C-MEDIA以其在音频处理领域的专业技术而知名。然而,随着市场竞争的加剧和技术的快速发展,公司意识到需要调整战略以适应市场变化。于是,C-MEDIA在与瑞昱(Realtek)达成收购协议后,决定将AC97、HD Audio板载音频芯片技术转让给Realtek,并退出板载声卡领域。这一决策使得C-MEDIA能够专注于中高端音频处理芯片的研发,进一步巩固了其在独立声卡市场的地位。

Aptiv公司的发展小趣事

作为一家具有社会责任感的企业,Aptiv始终关注社会公益事业。公司积极参与各项社会活动和慈善捐赠,为改善社会环境和提升公众生活质量做出了积极贡献。同时,Aptiv还注重在运营所在城市推动社区发展,通过创造就业岗位、支持教育事业等方式,为当地社会经济的繁荣做出了贡献。

爱普特微(aptchip)公司的发展小趣事

创立不久,爱普特微电子便迎来了一次重大的技术突破。公司成功研发出了全国产、全自主可控、高可靠性的32位微处理器芯片。这一产品的推出,不仅填补了国内市场的空白,更以其卓越的性能和稳定性,赢得了市场的广泛认可。随后,公司又基于自研IP库及RISC架构内核,量产了一系列全国产高可靠性32位MCU产品,广泛应用于工业控制、物联网、智能家电等领域。

问答坊 | AI 解惑

基于EM-AT91SAM3U开发板Touchscreen开发完成了,与大家分享

最近一直在使用英蓓特公司开发的EM-AT91SAM3U开发板http://www.embedinfo.com/list.asp?id=318(芯片为ATMEL公司推出的SAM3U,功能很强大,特别是USB2.0高速接口,高达480BPS。内核为Cortex-M3v2.0 主频96MHZ)做Touchscreen的开发,研究了很长时间 ...…

查看全部问答>

经验分享:如何成为一名优秀的电源设计工程师?

本人做过技术开发工作多年,从焊电路板的小工程师逐渐做到项目经理、研发经理,现在做到总工程师,作为工程师有亲身的感受,作为研发主管,对工程师的性格、心理和知识结构有非常深入的了解,现在把自己的一点感悟与大家分享。       作为研 ...…

查看全部问答>

触控技术的发展动力及趋势

本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑 中心议题: 触控面板技术特性将影响其最适合应用触控面板成本与使用情境是未来技术发展的动力触控面板专利布局胜的分布 人机接口产业在长期的酝酿之中由苹果计算 机的iPhone手机正式鸣锣 ...…

查看全部问答>

新手请教:protel里面SMB是一个什么接口?

这个接口是不是一定要配合一个二极管、两电容、两电阻才行?如下图,它的作用是什么?还有些什么其它的接法? 谢谢各位高手赐教! …

查看全部问答>

wince平台下,Datagrid列标题分行显示?谢谢

wince平台下,Datagrid列标题分行显示?谢谢…

查看全部问答>

I/O接口电路的实现方法(还有其他的问题!)请各位帮忙

比较常用的奔腾系列机与8086机接口芯片,推出做了哪些改进 DOS操作系统对PC I/O设备是如何进行管理的 接口硬件是如何组成的?如何进行接口硬件设计? 接口软件包括哪些内容?如何进行接口软件设计? …

查看全部问答>

流驱动如何实现多次加载

问题如下:     用两个应用程序要同时调用同一个流驱动,但是一个应用程序打开驱动后,另外一个程序是无法打开和加载这个驱动的,请问各位大侠有没有解决的办法?…

查看全部问答>

驱动项目编译无法生成DLL文件

我的SPI驱动项目编译无法生成DLL文件,纠结中。。。 我在项目文件夹运行命令Build,显示如下信息: C:\\WINCE600\\PLATFORM\\SMDK6410\\SRC\\DRIVERS\\SPI>build Build for Windows CE (Release 601) (Built on Aug 17 2006 15:18:52) File nam ...…

查看全部问答>

一个关于WinCE5 C#

有个问题想问一下: 1 WinCE5 C# 获得从 panel 获得绘图面的方法? 说明 : 精简版的compect Frame Work 不支持CreatGraphics 我使用Graphics.FromHdc()但是发生了内存溢出错误,应该是使用方法不正确,请指教! 我看有资料说使用WinAPI里面 ...…

查看全部问答>

各位大哥大姐推荐一本关于VS2005中的WINDOWS CE5.0开发的书啊

各位大哥大姐推荐一本关于VS2005中的WINDOWS CE5.0开发的书啊…

查看全部问答>