完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,我是微芯片新手,这个论坛,我已经陷入困境,真的需要帮助。我使用PIC24FJ128GA202试图写数据到一个微SD卡。我使用的是MPLAB X V3.3和ICD3。我正在将微芯片应用程序库(MLA)用于文件系统,现在我正试图修改fileio代码中的示例来处理我的图片。使用调试器逐步检查代码,我发现它正在等待SPIRBE位来指示接收缓冲区中存在信息,但是该位永远不会被设置。我还试着继续调试,让它运行5分钟左右,但是它仍然停留在while循环中。调用堆栈是SPI1_ExchangeBuffer(uint16_t len=0x0200,void*pRecieveData=0,void*pTransmitData=30)DRV_SPI_GetBuffer()FILEIO_SD_AsyncReadTasks()FILEIO_SD_SectorRead()FILEIO_LoadMBR()FILEIO_DriveMount()main()在我的PCB I上连接如下卡引脚#pin nameSDO 11 RPI4SDI 14 RP5SCK 15 RP6EDIT:不知何故附上了示意图,之前遇到了麻烦。所以我试着用这些线路上的电阻作为分压器来重新确定SD卡的电压,但是后来我发现SD卡可以工作在2.7V-3.3V,所以现在我有一个零欧姆,47kOhm接地。VDD应该是3V的电池。我会提供更多的信息(如示意图),但在尝试发布此消息时继续获得以下信息,我将尝试编辑以添加信息。您没有权限访问“http://www..hip.com/for./post.aspx?”在这个服务器上。
|
|
相关推荐
8个回答
|
|
我已经在配置位#pragma config SOSCSEL=OFF//SOSC选择位(数字(SCLKI)模式)中禁用了SOSC,这足以禁用SOSC吗?下面将包含我的配置位
|
|
|
|
这应该是所有你需要的。请测试你的硬件以确保这已经足够了。
|
|
|
|
我已经测试了我的PIN配置,我相信PIN 11(RPI4)是正确的。然而,这个问题仍然存在,它仍然被困在SPI1Exchange缓冲区中。我的测试程序如下。我的电路在PCB上,所以我焊接了一根线到引脚11(RPI4),并且检查了库中的代码,我发现数据是使用SPI1_Exchange发送和接收的。DRV_SPI_Get和DRV_SPI_Put都重定向到这个函数。瓮。我注意到,在SPIX交换函数中,PixVIEDATA不是全部1(0xFF),它有00001101个11000000。我真的不明白为什么,因为我找不到任何关于库中的所有助手函数是如何使DriveMount函数工作的,但是我假设它的工作正常。EDIT:我刚意识到pRecieveData是一个指针,所以它显示的值是RecieveDa的地址检查表中的TA是0xDC0,这是我之前看到的相同值。我现在觉得很傻,总之,我相信PIN 11的PIN配置是正确的。
|
|
|
|
第一次使用任何库代码时必须小心。如果您从未调试过在微芯片PIC上实现的任何SPI接口,那么您可能处于颠簸的旅程中。微芯片库代码素有粗略和容易出现奇数行为的名声。并非所有代码和目标的组合都已被验证。从我自己的经验来看,我使用微芯片库代码作为可能实现的例子。然后,我为项目所需的内容编写自己的实现。我从来没有成功地使用提供API的微芯片。总是有bug。为了调试螺旋初始化代码,您需要创建最简单的方法来打开、读取、写入和关闭库API并用真实硬件运行。它有助于知道工作硬件来验证你可以使用微芯片库来构建一个项目,并且它运行正常。这是不可能告诉你具体做什么的。有点像问你需要多少绳子来捆扎我的山羊。在你提出一个数量之前,你可能需要更多关于我和我的山羊的细节。
|
|
|
|
感谢到目前为止的回复,我将开始尝试调试库代码。有没有人得到微芯片库以便应用程序工作,您使用过哪个微控制器芯片?此外,你使用了HS振荡器,还是代码与内部FRC振荡器一起工作?
|
|
|
|
首先,这个论坛似乎不支持过时编辑器。只需在ASCII中使用+-*/^()键入方程,希望它不会被破坏。其次,PIC24FJ128GA202具有用于具有疯狂复杂程度的SPI函数的时钟配置。其部分取决于主时钟源配置,部分取决于参考振荡器输出功能配置,部分取决于SPI功能配置。文档被切碎并蔓延到PIC24FJ系列参考文献和PIC24FJ128GA202数据表中。显示时钟分布的数字不一致地使用名称。文本中的功能描述不清楚。没有任何“简单”的例子可以显示从配置字的定义到最终SPI时钟比特率的完整设置。微芯片应用库(MAL)中的示例代码非常复杂,单靠检查似乎无法验证。看起来,必须构建一个示例项目,并在真正的硬件上运行它,只是为了检查SPI初始化在特殊函数寄存器中是否设置了正确的值。MAL库中的这种卷积级别是我避免在必须维护的代码中使用它们的原因。
|
|
|
|
谢谢你的回复,是的,我也注意到文件有点混乱,这就是为什么我首先问。我希望我只是哑巴,你们知道数据表的意思。无论如何,当我将SPI1BRGL寄存器更改为不同的值时,我得到了FILEIO_ERROR_INIT_ERROR,所以我猜这不是问题。仍然不了解他们的逻辑,或者发现了他们如何实现这个库的任何文档。
|
|
|
|
我把它安装在驱动器上,然后写入驱动器。我在drv_spi_16bit中清除了SPIROV位,并且在headerDRV_SPI_STATLbits(1)中启用了增强缓冲模式,SPIROV=0;不确定为什么标准缓冲模式不能工作。我在另一篇文章中读到,他们有相反的标准缓冲模式,但没有增强。猜测它取决于芯片。
|
|
|
|
只有小组成员才能发言,加入小组>>
5006 浏览 9 评论
1923 浏览 8 评论
1853 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3067 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2143 浏览 5 评论
577浏览 1评论
432浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
476浏览 0评论
367浏览 0评论
IPECMD命令烧录AVR128DA48芯片,报找不到芯片错误
853浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-17 08:22 , Processed in 1.285661 second(s), Total 92, Slave 76 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191