完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
你好,我正在寻找一个具有两个SPI端口的小型快速dsPIC,用于在MPLLABX4.05中使用最新的微芯片代码配置器进行实验,并选择了dsPIC33EP256GP502 28-pin DIP。使用所有最新的XC16、MCC等硅修订版A8,已经查看了Eratta文档80000533M。在这个模型中,SPI1不是pin-remappable,而是SPI2。在MCC中,我将SPIs设置为主机,~200 KHz,8位,增强的缓冲区禁用,没有SPI中断。SPI2(可恢复的一个)工作得很好——可以在DSO上看到信号,它与从属设备完美地对话。但是SPI1什么也不做——没有时钟输出。SCK1管脚肯定被设置为输出(MCC抱怨,如果不是),但是从来没有时钟出现。我读过帖子说PPS可能导致SPI问题,并且设置SCK作为输入和输出。但是如果需要的话,MCC不应该这么做吗?这并不能解释为什么SPI2工作得很好(PPS一个),而不是SPI1。MCC不会生成相关的错误(它确实抱怨SPI2和SPI1驱动程序需要启用增强的缓冲区,但我认为这无关紧要,因为我可以字节控制SPI2,这很好。)我怀疑问题是我的代码持久性,并且更多人认为MCC管脚配置有些奇怪,ILICON EARTATA,或者别的什么。有什么想法吗?谢谢你的帮助!
|
|
相关推荐
13个回答
|
|
|
如果错误正确,检查生成的代码MCC的正确性和完整性。MCC“应该”生成正确的代码,但这是“应该”。实际情况常常不同,由于两个SPI显著不同,很可能SPI2的初始化正常,而SPI1有一些错误。
|
|
|
|
|
|
MC你在哪里读到PPS导致SPI问题?(它不)不能将SCK设置为输入和输出。Master总是生成时钟。将spi模块设置为Master。从不使用MCC,spi的确很容易设置。如果可以在mcc上设置,那么没有理由不能手动设置。
|
|
|
|
|
|
勘误表有两个关于SPI帧模式的注释,但这是不被使用的。我没有发现任何其他相关的第一眼和第二眼。现在检查所有MCC初始化代码以寻找隐藏的“gotcha”。我甚至在运行时读取了两组(SPIXSTAT、SPIXCON1、SPIXCON2),并对它们进行了比较,它们也是相同的。所以它一定是别的原因导致SPI1不正常——几乎就像SCK1管脚上错误地启用了其他外围设备一样,覆盖了SPI1特性。再次查看DSO,有时SCK1在SSS1变低两秒后确实变高(并停留在那里,没有时钟)。有时甚至不会很高。这是什么,它有时也会变得很高当SS1变低?奇怪的。仔细观察SCK1的上升沿和SS1的下降沿,SS1仅领先5nS——考虑到70MHzFosc/2和它们之间的指令数量,这是不可能的。尝试添加一些NOP…没有时间变化。非常奇怪!
|
|
|
|
|
|
不要寻找SPI1外围块初始化-寻找引脚配置:所有4个引脚与一些其他功能竞争-包括PPS映射。我会开始检查RP39…41,以不覆盖SPI功能,最终挖掘通过其他竞争对手。
|
|
|
|
|
|
常见的错误,发现我与周边股票是模拟引脚和PWM输出。固定地图的备用插脚…祝你好运
|
|
|
|
|
|
我知道,我的意思是把SPI作为主人或奴隶。
|
|
|
|
|
|
我还是没有运气。RP39 .. 41检查好。我能想到的签出的所有内容.* ANSEL A和B都被初始化为0.*没有其他外围设备被启用,从而按引脚方式冲突(只有SPI1&2和UART)* PPS引脚仅被分配给SPI2(和UART),这两个引脚都工作正常.*确保JTAG被禁用,没有PWM等.*被使用最新的XC 1.33,尝试1.32-同样的事情*尝试使用该芯片的链接器文件-sameMy在引脚RB0上手动定义的“SS1”按预期工作,但是考虑到RB0的中断可能性,将该函数移动到RB1-该引脚也工作,但是没有改变到SCK1。在等待SPIRBF时,执行会停滞不前,因为传输字节从来没有超时,所以从来没有接收到任何消息:这对于SPI2……但是在SPI1上从来没有产生时钟(或者至少没有任何有意义的东西)。关于:*设置另一个芯片,没有其他设备连接到它*启动一个新项目*跳过MCC并用手工编写所有代码*用尽可能小的代码再现问题
|
|
|
|
|
|
写入SPI1控制寄存器的实际值是多少?
|
|
|
|
|
|
自己编写代码,我不相信MCC,使用MPLAX X已经够糟糕了。
|
|
|
|
|
|
我知道它可能是可怕的,但你能告诉我们MCC生成的代码SPI1?苏珊
|
|
|
|
|
|
你在时钟线上看到了什么?如果你的想法已经用完了,我也会检查硬件/布线。如果可能的话,将SCK1从SPI设备中分离,禁用SPI1(不启用),并使用RC3作为简单的输出(最好没有MCC)。设置TIS输出并将LAT位设置为“1”和“0”,并查看它是否真的跟随。DSPIC33 EPXXXGP504PIN 36:SCK1/RPI51/RC3
|
|
|
|
|
|
好的,我用SPI1构建了一个新的XC16项目,SPI1很好用!因此,我开始启用并测试正在使用的每个部分/特征,每次一个,直到问题重新浮出水面。这些都是按顺序完成的,寻找中断动作:*使用4MHz XTAL,不锁相环,中断全局禁用…OK *启用SPI1,创建代码发送字节…好啊。可以看到DSO上的SPI1输出。*锁相环启用FoSc / 2=30MHz,设置SPI1速率设置为/ 64和/ 5=93.75 kHz…OK*FoSC/2从30MHz改为70MHz。好啊。SPI1速率现在=218.75 kH.*连接SPI1到从设备1…OK * SPI2(可映射)启用,但未分配任何引脚…OK * SPI2设置为SCK2=RB10,SDO2=RB11,SDI2=RB12,OK。SS2设置为GPIO RB5…OK *为SPI2创建的代码发送字节…好啊。可以同时看到DSO上的SPI1和SPI2。*连接SPI2到第二设备…OK *启用全局中断…OK *启用Time1,设置为25US中断…OK *启用UART1,启用中断…OK *设置各种其他GPIOS…仍然OKAT这一点,所有的原始硬件使用是积极的,似乎工作。因此,我在监视SCK1和2时添加/重写其余代码,看看是否有代码破坏了它。这真的很奇怪。Aaaaand,现在我的板凳补给刚刚死了,但输出功率很低。有没有想过有些东西只是诅咒?感谢所有的帮助,让我重新开始工作,希望我能对这一团糟做出结论。
|
|
|
|
|
|
我敢打赌,当您将工作SPI2代码复制到SPI1时,您忘记在那边一两个寄存器的名称中将“2”更改为“1”。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1122浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1095浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
872浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
475浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 22:31 , Processed in 0.754152 second(s), Total 66, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1438