完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛扫一扫,分享给好友
|
我需要一些帮助获得我的UART功能。在这一点上,我只是尝试接收,而不使用中断。我的程序有几个基本功能:我用8MHz的板载振荡器运行,在CLK0上验证4Mhz,我已经用示波器检查了U1RX上传入的信号,看起来和预期的一样。我在U1RXREG中什么也没得到,代码只是挂起等待IFS0位。U1RXIF改变。由于我有一个配置问题,端口设置错误或什么。欢迎任何建议!谢谢!
|
|
相关推荐
17个回答
|
|
|
好的,我可以传得很好。标价看起来不错,在范围上和预期的一样。我把UART设置为回环模式,我仍然挂在同一个地方,等待收到一些东西。还有其他建议吗?
|
|
|
|
|
|
试着在ORR位上添加一个检查,如果你看到它,就清除它。
|
|
|
|
|
|
谢谢你的建议,没有设置ORR位。状态寄存器为0x8400。
|
|
|
|
|
|
还有其他建议吗?我在这件事上撞到了砖墙。
|
|
|
|
|
|
展示你现在使用的所有代码,包括配置设置。苏珊
|
|
|
|
|
|
|
|
|
我设法让回环模式工作了。仍然不能让它识别任何东西在RX管脚上。状态显示0x8410,接收机空闲位是我不理解的一个。有数据以正确的波特率进入。e书面)#pragma配置GSS0=OFF//通用段码保护(无保护)//FOSCSEL#pragma配置FNOSC=FRC//8MHz#pragma配置SOSCSRC=DIG//SOSC源类型(用于SCLKI上的外部时钟的数字模式)#pragma配置LPRCSEL=LPRC功率和准确度(低功率/低Ac)精确度)#pragma config IESO=OFF//Internal External Switch Over bit(禁用内部外部切换模式(禁用双速启动)//FOSC#pragma config POSCMD=NONE//主振荡器模式(禁用主振荡器)#pragma config OSCIOFNC=OFF//CLKO Pin I/O功能(端口I/O启用(CLKO禁用)pragma配置POSCFREQ=LS//主振荡器频率范围(主振荡器/外部时钟频率<100kHz)pragma配置SOSCSEL=SOSCLP//SOSC功率选择配置位(配置用于低功率操作的次级振荡器)pragma配置FCKSM=CSDCMD//时钟切换和监视器选择(时钟切换和故障安全时钟监视器禁用)//FWDTpragma配置WDTPS=PS32768//看门狗定时器后刻选择位(1:32768)pragma配置FWPSA=PR128//WDT预刻机位(WDT预刻机比为1:128)pragma配置FWDTEN=OFF//看门狗定时器启用位(用SWDTEN位设置控制的WDT)#pragma配置WINDIS=OFF//Windowd看门狗定时器禁用位(标准WDT选择(禁用窗口WDT)//FPOR#pragma配置BOREN=BOR3//Brown输出重置启用位(在硬件中启用;禁用SBOREN位)#pra配置PWRTEN=ON///电源启动定时器启用(PWRT启用)#pragma配置I2C1启用(PWRT启用)\24pragma配置PWRTEN=ON///电源启动定时器启用(PWRT启用PWRT启用)\\24pragma配置I2C1I2C1SEI2C1 II2C1=PRI=PRI//交替I2C1引脚映射位(对于I2C1,默认SCL1/SDA1 2121212121212121212121212C1,默认SCL1/SDA1 Pin Pin Pin Pin,用于I2C1,默认SCL1/SDA1引脚启用了MCLR)//FICDα-PracMA配置ICS=PGX1//ICD引脚放置选择(EMUC/EMUD共享PGC1/PGD1)
|
|
|
|
|
|
更新:我添加了一个外部回环,将RX直接连接到TX引脚。同样的结果,我什么也没收到。也许UART没有连接到RX PIN?
|
|
|
|
|
|
特里斯,模拟特征(我可以看到和ANSB2…),外围重新映射可能(不确定这个PIC)…?
|
|
|
|
|
|
这是我的整个程序,除了上面列出的配置位。CRO既有回环模式,也有回环模式。发送的数据看起来是相同的,正如预期的那样。U1RX管脚与AN4、T3GU、CN6共享,RB2I已经将ANSB寄存器设置为0x0,以确保AN4设置为数字输入缓冲器。我已经在T3CON中验证TMR3ON设置为0。我不知道这对T3GU有什么影响,找不到细节。我已经将TRISB设置为所有1s,以确保RB2设置为输入。我已经检查了板上的连续性,U1TX连接到U1RX。还有其他想法吗?我不知所措,谢谢!包括&xc.h>void main(void){char数据;UART1Init();for(;;;;(;;){针对((;;){{在{((;){当({{当{U1STA比特U1STA位.UT1RXXREG=U1XREG=0XF=1)=1);U1TXREG=0xA;U1TXREG=0xA;//接收如果IFS0xA(IFS0bits.U10bits.U1RXIF==U1RXIF==U1RXIF==U1RXIF==1){{1){{data=U1RXREG=U1R{U1BRG=25;//波特率设置为9600 U1STA=0;U1MODE=0;//8位数据,没有奇偶性,1停止位U1MODEbits.UARTEN=1;//启用模块U1MODEbits.LPBACK=1;U1MODEbits.RXINV=0;U1STAbits.UTXISEL0=0;U1STAbits.UTXISEL1=1;U/中断生成的传输是完整的IFS0bits.U1RXIF=0;//clear接收中断标志U1STAbits.UTXEN。=1;//使能传输IEC0bit.U1RXIE=0;//UART接收器中断禁用IEC0bit.U1TXIE=0;//UART发射器中断禁用ANSB=0;TRISB=0b11111;}
|
|
|
|
|
|
嗯,听起来很不错……我只是把这些值表示为16位二进制,给出了PIC。
|
|
|
|
|
|
U1MODEbits.RXINV=0;上拉电阻U1MODEbits.RXINV=1;下拉电阻从U1RXREG读出时,应该先检查U1STA。中断比较好。
|
|
|
|
|
|
你有ANNSB=0;如果你想使用数字管脚,就说所有输入。ANSB=- 1;
|
|
|
|
|
|
PIC24F16KL401的FRM表示ANSBx=0->;数字输入缓冲区ist activeANSBx=1->;数字输入缓冲区不活动(用作模拟输入),所以ANSB=0应该可以。您检查外部连接了吗,TX正在工作?或者是用RX输入测试的唯一机会?您发布的代码stll使用U1MODEbits.LPBACK=1I假设现在是0。您说您已经成功地用循环返回模式进行了测试,否则我将检查您的主循环。在正常速度下,它将输出0xA,但是对接收到的字符的单个查询将是错误的(需要时间来发送/接收,s.o你将输出下一个字符(等待在一段时间内)。可能在下一次发送0xA之后,您将检测到第一个。因此,确保正确地测试。/ /发送(U1SistIt.UTXBF=1);U1TXRGG=0xA;//If IF(IFS0BIT.U1RXIF==1)
|
|
|
|
|
|
我确实把U1MODEbits.LPBACK改为0。在回送模式下的主循环工作得很好,我知道它不理想,只是尝试用简单的代码进行调试。我有一根线在微型计算机上连接TX和RX。我可以用一个范围来检查TX(在回环模式和环回模式),并且它是按预期工作的,在两种模式下都是一样的。
|
|
|
|
|
|
一件事:完全配置外围设备,然后启用它。唯一的例外应该是在数据表的第18.2节中设置UTXEN位。苏珊
|
|
|
|
|
|
我会先让输出工作,你应该下载:第17节。来自微芯片的UART。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1121浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1095浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
872浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 19:28 , Processed in 1.138973 second(s), Total 104, Slave 87 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1606