发 帖  
原厂入驻New
[问答] PIC32MX170F256B上的UART引导加载程序存在问题
152 处理器 PIC32 UART
分享
我努力使AN1388代码为这个处理器工作,尽管早期成功了PIC32 MX7XX。似乎PIC没有读取Rx管脚(使用UART1),尽管物理上存在信号(GetChar从未看到RXDA位设置…)。硬件是好的,因为我有一个主程序,使用这个UART没有问题。这个主程序似乎使用相同的设置,虽然我使用库函数(旧库,而不是HARMony)而不是直接位寻址。是否有人遇到类似的问题,或者有人可以提供任何建议?我对这个论坛比较陌生,尝试过搜索功能,没有什么特别的成功。代码中没有魔法——我正在尽我所能地使用模板。它几乎就像Rx引脚没有被读取,或者没有被启用……我已经上传了三个文件到服务器——不知道这是否是正确的过程。“.LD”文件被保存为“txt”文件,因为不允许这种类型的文件。还有一些额外的调用Puffar,我用它来检查操作0传输的工作在UART上很好。帮助!
Uart .C(6.21 KB)-下载105次BTLY32 MX170F256BYUARtiVVJM TXT(29.33 KB)-下载78次
0
2020-3-5 06:47:01   评论 分享淘帖 邀请回答

相关问题

14个回答
我假设您没有使用或配置RX管脚RA4的次级振荡器。SOSCO/RPA4/T1CK/CTED9/PMA1/RA4来自您的uart.cI,缺乏使用该pps.h宏的经验,尤其是第一个“grp”参数。地图UART1 RX到PA4从P.SHIF这不是问题,你能成功地通过TXPIN发送数据吗?
2020-3-5 07:02:28 评论

举报

我同意,图11-2在这一点上是非常清楚的。如果不设置TIS输入,它将不起作用。
2020-3-5 07:23:49 评论

举报

仔细考虑后,TRIS寄存器应该在重置之后设置为输入(默认条件),所以对于UART它应该处于正确的状态,不需要特别设置。发射继续工作良好!回到困惑…
2020-3-5 07:51:06 评论

举报

请为codei.e.[ c o d e]myfunc();[/c o d e]使用代码标签,但是移除括号内的所有空白。仍然需要设置TRISAbits.TRISA4=1,所以您少了一个bug。我不清楚,为什么您的主应用程序没有这个错误而运行?主应用程序是由Bootloader运行的,还是没有Bootloader运行?如果这个PPSInput(3,U1RX,RPA4);//MAP UART1 Rx到PA4在你的主程序(应用程序)中工作,‘3’可能没有问题,但是正如前面所说,我不知道第一个‘grp’宏参数实际上做了什么。
2020-3-5 08:04:34 评论

举报

亲爱的Rodims,谢谢你的评论。我将尝试按照您的建议使用标签——我不经常使用这个论坛……重置状态,即所有端口都初始化为输入,应该解释为什么主代码工作正常。我总是感到惊讶的是模拟输入复位到on,但也就是这样。主应用程序正在使用PICKit3进行加载,并且运行良好;我现在转到串行引导加载版本,以允许字段升级——因此出现了这个问题!我通常使用PIC32MX795没有任何问题;这是我第一次使用PIC32MX1XX和相关的PPS功能。我将在主程序中尝试UART设置,或者可能从引导加载器中取出引导代码,并在PICKit3下将其设置为“正常”程序。我会告诉你,但我仍然困惑。问题可能完全出在别处,但这是一个非常简单的引导加载程序(除了内存映射,我已经从模板中复制了内存映射,但是试图更全面地理解)。
2020-3-5 08:22:19 评论

举报

别惊讶。这是最安全的方法,所有的PIC都这么做。你可以安全地将数字信号输入模拟管脚,但是将模拟信号输入数字管脚是不规范的。所以,所有可能为模拟的管脚都以该模式启动,并且根据需要将它们切换到数字模式是你的工作。实际上您切换的是数字模式ON,而不是模拟模式OFF。实际上,模拟输入总是活动的,并且当切换到数字模式时,您正在启用数字输入缓冲器。
2020-3-5 08:30:05 评论

举报

亲爱的QHB,你的观点是有意义的,谢谢。我很少使用PIC32中的模拟能力,因为它们对我的应用程序不够精确;我总是有外部DAC/ADC。因此我的评论(没有想过……)你对我目前的问题有什么建议吗?我希望测试其他模式下的设置…最好的祝愿
2020-3-5 08:43:54 评论

举报

我想我已经取得了进步,虽然我还不能确定我是否被说服。首先,115200在'main'的问题更多是由于RealTerm不同步而不是PIC的问题。我转移了引导加载程序代码(简化)驻留在主存储器中,并且遇到了类似的问题。S写入设备。然后,我忽略了PIC本身的模板设置(y.PARAMS),并插入了我通常使用的模板。这似乎可以解决问题。逐行比较(我以前做过,但是您经常阅读您希望阅读的内容)显示模板被设置为POSCMOD=HS,而我使用XT模式……我很难解释为什么这会导致观察效果,但是现在它看起来像下面这样工作预期。现在,我将会延迟并且超出预算,回到完成软件的实际可引导版本上来……谢谢您的建议和支持。道歉,提出这个问题;我担心的是我不熟悉PPS功能。
2020-3-5 09:17:09 评论

举报

我不知道这是否已经被问过/检查过,但是你安装了外围引脚选择模块吗?您提到了PIC32MX7xx的成功,但是该设备从来没有Pin Select模块,该模块将内部外围设备的输入和输出映射到选定的IO引脚。如果没有正确设置,UART将工作,但是没有显示或从引脚读取任何内容。我不能为您提供任何代码建议,因为我总是使用PLIB函数或Harmony,并且您看起来是直接向CPU寄存器写入的,但我确信数据表(DS60001168J)第11.3节中有详细信息。
2020-3-5 09:28:25 评论

举报

我已经检查了我的早期工作在PIC32 MX7XX,这仍然很好。我还没有真正考虑过PIC32MX1XX系列中启动ROM的3k限制,我想知道这是否是问题。根据程序统计窗口,一个极简版本似乎仍然需要3968(0xF1C),它看起来太大了(允许的最大值为3056/0xBF0)。也许这是万恶之源!代码似乎出现在1D001000,我需要对照映射进行检查。我需要弄清楚如何分割成程序内存……谢天谢地,我还有空余空间。
2020-3-5 09:50:19 评论

举报

看起来这个内存映射是由“环境”自动处理的。我不太清楚为什么代码在地址1D000 1000而不是1D00万开始,但它在那里,似乎运行。另一只红鲱鱼…我完全超出了我的舒适范围。如果有人有任何建议,我会非常感激。PIC32 UBL.EXE抱怨说它不能设置CMS频道,这不是很有帮助。
2020-3-5 10:06:04 评论

举报

总而言之,我所理解的是,您现在可以成功地与Realterm通信,例如,在PIC32MX170F256BBut PIC32UB.exe上,从您的引导加载程序以两个方向(TX,RX)以115200波特进行通信。exe无法打开(或者“设置”是什么意思?)尽管与Realterm测试相比,您的引导加载器中的PIC初始化和UART设置是相同的,但是通信通道呢?你现在的PIC和PC之间的物理连接是什么?RS232?USB到串行转换器?工作较旧的PIC32MX7XX的“PIC32UB.exe文件和端口设置”是否与PIC32UB.exe“不能设置通信信道”的当前系统相同?(相同的Windows PC,相同的物理连接,只有不同的PIC?)你首先需要检查什么是“不能设置CMS频道”真正的意思。
2020-3-5 10:16:46 评论

举报

亲爱的rodims,谢谢你一直以来的关心。我将尝试依次回答每个问题,因为我真的在努力理解当前的位置。总而言之,我所理解的是,您现在可以成功地与Realterm通信,例如,从PIC32MX170F256B上的引导加载程序向两个方向(TX,RX)传输115200波特。EX3U.EXE不能打开(或者设置什么意思?)通信通道,尽管与Realterm测试相比,PIC初始化和UART设置在引导加载器中是相同的?我不太清楚。PIC32 U.EXE正常打开,但不会连接到该单元。它指示“请重新设置设备并调用Bootloader”,并用“设备没有响应”超时。操作失败。这是完全相同的反应,好像没有连接到串口的设备。设置是相同的。当前PIC和PC之间的物理连接是什么?RS232?USB到串行转换器?我用我的笔记本电脑(W10)的一个坞站,所以我有一个RS-232串口。我把这个连接用于新的MX170单元和旧的MX795板(以及RealTerm的物理上相同的连接)。对于工作的旧的PIC32MX7XX,“PIC32UB.exe文件和端口设置”是否与PIC32UB.exe“不能设置通信信道”的当前系统相同?(相同的Windows PC,相同的物理连接,只有不同的PIC?)这是在同一台W10 PC上运行的PIC32UB.exe的相同实例。PIC设置略有不同,因为795设备的操作时钟是双倍的,并且这个设备还需要额外的设置规范。如果我在“不能...频道”点上造成混淆,请道歉。我的意思是我不能连接,正如上面提到的,我的想法已经用尽了。我已经检查了内存映射,并且这些指令在引导ROM和程序ROM中似乎处于合理的位置,这是由于170设备上较小的引导ROM的需要,但是我不能假装进一步解释它们。我很乐意提供代码或其他信息,如果你有任何想法!再次感谢。
2020-3-5 10:31:07 评论

举报

为了在最后一个帖子中提供一些内容,直接位设置似乎可以工作到57600波特,但不能像编程那样在115200波特。在所有情况下,pbClk都被正确地设置为20MHz,对于57600,U1BRG设置为20(对于115200波特,无法看到这一点)。更仔细地看,计算:U1BRG=((pbClk/(16*DEFAULT_BAUDRATE)-1);//计算实际的BAUD生成值。如果这个设置为十,那么问题就消失了。可能是更广泛的兴趣舍入问题与截断。如果我强迫U1BRG值到10,comms工作正常。另一条红鲱鱼…仍然卡住!
2020-3-5 10:52:45 评论

举报

只有小组成员才能发言,加入小组>>

108个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表