完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
大家好,我正在研究SPIC2通讯SPICE33 EP512MU810微控制器和SST闪存。我正在发送制造ID(BF)和设备ID(4B)命令以从SST闪存读取数据,SST闪存(MISO)的第2引脚根据Scope附图给了我正确的值。但问题是在控制器端,它未被采样,我无法读取SPI2BUF中的值,寄存器。它总是读取值00。我怀疑控制器的时钟和MISO脉冲同步吗?我使用了以下代码:定义SST25 CS.() SST25 SST25 CS_CS_LAT=0;定义SST25 CS低() SST255CS_SST25 CS_SST255CS_SST2555CS_SST2555CS_CS_LAT=0\\定义SST25SST2555555SST255555555SST2555CSCS_CS_CS_CS_CS_低() SST25SST25SST2555CS_CS_CS_CS_CS_低()SST25 CS_CS_LA低() SST25 SST25(){_TRISE9=0;//CE_TRIS0;//SCK2_TRISG8=0;//SDO2_TRISG7=1;//SDO2_TRISG7=1;//SDI2_TRISE8=0;//SDI2_TRISE8=0;//WP SST25 SST25 CS_CS_CS_TRI_TRIS_TRIS_TRIS=0;SST25InInit(&pInit数据);同时(1){1){SST25MFGRT25MFGRGRGRGRGRGRGRGRGR读取Byte(0x00);}无效DRV_SPI_SPI_SPI_初始化(无效DRV_SPI_SPI_初始化DRV_SPI_SPI_SPI_初始化_SPI_初始化_初始化V_SPI_STAT(2)=0;DRV_SPI_CON(2)=0;DRV_SPI_[2]MSTEN=SPI_MST_MODE_MODE_ENABLE;DRV_SPI_CON比特(2)SMP=pData->smP=pData->SMP=pData->DRV_SPI_SPI_CON比特(2)SMP=pI_MSTEN=SPI_MST_MOT_MODE_MODE_ENENABL_ENABL_ENABL;DRV_SPI_CON比特(2)DRV_SPI_SPI_CON比特(2)CKP=pData-&MSP=pData->_SPI_SPI_CON比特(2)DRV_SPI_CON比特(2)DRV_SPI_SPI_CON比特(2 V_SPI_CONbits(2).MODE32=((pData->mode)>>1)&0x01//DRV_SPI_SPI_BRG(2)=pData->;波特率;//DRV_SPI_CON比特(2)//DRV_SPI_SPI_CON比特(2)//DRV_SPI_SPI_SPI_SPI_BRG(2)=pData->;波特/DRV_SPI_SPI_SPI_BRG_BRG(2)=pData-&pData->>>>;波特/DRV_SPI_SPI_SPI_SPI_CON比特(2)//DRV_SPI_SPI_SPI_SPI_SPI_SPI_SPI_SPI_SPI_SPI_SPI_SPI_BRG_2.SPIEN=SPI_MODULE_ENABLE;#endif.;}}BYTE SST25MFGREADEnter(DWORD地址){字节温度;int i=0;同时()!SPILock(spiInitData..));DRV_SPI_Initialize(spiInitData..,(DRV_SPI_INIT_DATA*)&spiInitData);SST25CS.();SPIPut(spiInitData..,0x90);SPIGet(spiInitData..,0x90);SPIPut(spiInitData..,0x00);SPIGet(spiInitData..,0x00);itData..;SPIPut(spiInitData..,0x01);SPIGet(spiInitData..,0);SPIPut(spiInitData..,0);temp=SPIGet(spiInitData..);SST25CS.();SPIUnLock(spiInitData..);.(temp);}void SPIPut(无符号整数信道,无符号字符数据){if(.==2){.(DRV_SPI_STA)TTBIT(2).SPITBF);DrviSPixBuf(2)=数据;DRV_SPI_STATbits(2.SPIRBF);.;}BYTE SPIGet(无符号整数信道){if(.==2){spiData=DRV_SPI_BUF(2);return spiData;}我读了Errata"并在第6页上显示了帧脉冲模式。虽然我没有使用帧模式……但是任何帮助都会被感激....谢谢。
|
|
相关推荐
5个回答
|
|
|
错误的论坛-在SdSP33论坛或SPI(论坛)论坛中要求这个Soudl。它与PicKit程序员无关。SDI2与CIN1和RG7共享一个引脚,并且我看不出您将RG7设置为数字化的位置(在本例中使用ANSELG寄存器)。正如在数据表的第11.2节中所说的,处于模拟模式的引脚总是读作“0”。
|
|
|
|
|
|
对不起发错帖子了。在放置ANSELG=0x0000之后,它工作了。我可以读取Mfg ID,但是仍然读取和写入值不正确……我总是接收0xFF值,即使写入值是0x99..SST25MFGReadByte(0x00);SST25SectorErase(0x001000);SST25WriteByte(0x99,0x001001);SPIByteRead=SST25ReadByte(0x001001);有什么想法?谢谢苏珊
|
|
|
|
|
|
0xff值是未编程位置的默认值,所以我猜您没有获得“写入”操作的正确时机。您可以显示“SST25SectorErase”和“SST25WriteByte”函数的代码吗?苏珊
|
|
|
|
|
|
你好,苏珊,代码如下:有一件事我不明白…你知道,在张贴了上述帖子之后,我确实切断了电源,重置了所有的连接,重新启动了我的个人电脑,它工作得很好……我能够写和读取255字节的数组到SST闪存…我相信你的时间安排是对的。一些写/延迟写操作…无论如何,代码低于其标准的微芯片库文件。“你可以谷歌它,你会发现这个文件在互联网上。我真的很感激你正在回复这个帖子..空SST25WrdEnter(字节数据,dWord地址){SST25WrreEnEnable();SPILock(spiInitData..));DRV_SPI_Initialize(spiInitData..,(DRV_SPI_INIT_DATA*)&spiInitData;SST25CS.();SPIPut(spiInitData..,SST25_CMD_WRITE);SPIPut(spiInitData..,((DWORD_VAL)地址)v[2]);SPIGet(spiInitData..);SPIPut(spiInitDat)。a..,((DWORD_VAL)address.v[1]);SPIGet(spiInitData..);SPIPut(spiInitData..,((DWORD_VAL)address)v[0]);SPIGet(spiInitData..);SPIPut(spiInitData..,data);SPIGet(spiInitData..);SST25CS.();SPIUnLock(spiInitData..);//等待写结束(SST25IsWri(TeBuy());}无效SST25SECORDERASE(DWORD地址){SST25WrreEnEnable();而(!)SPILock(spiInitData..));DRV_SPI_Initialize(spiInitData..,(DRV_SPI_INIT_DATA*)&spiInitData;SST25CS.();SPIPut(spiInitData..,SST25_CMD_SER);SPIPut(spiInitData..,((DWORD_VAL)address)v[2]);SPIGet(spiInitData..);SPIPut(spiInitData..)。通道,((DWORD_VAL)地址)v[1];SPIGet(spiInitData..);SPIPut(spiInitData..,((DWORD_VAL)地址)v[0];SPIGet(spiInitData..);SST25CS.();SPIUnLock(spiInitData..);//等待写结束(SST25IsWriteBusy();}BYTE SST25IsWriteBusy(void){BYTE temp;.(!SPILock(spiInitData..));DRV_SPI_Initialize(spiInitData..,(DRV_SPI_INIT_DATA*)&spiInitData);SST25CS.();SPIPut(spiInitData..,SST25_CMD_RDSR);SPIGet(spiInitData..;SPIPut(spiInitData..,0);temp=SPIGet(spiInitData..);SST25CS.();SPIUnLock(spiInitDa)。TA.Channel;返回(TEMP&0x01);}空SST25可写(空){()!SPILock(spiInitData..));DRV_SPI_Initialize(spiInitData..,(DRV_SPI_INIT_DATA*)&spiInitData);SST25CS.();SPIPut(spiInitData..,SST25_CMD_WREN);SPIGet(spiInitData..);SST25CS.();SPIUnLock(spiInitData..);}谢谢,Rakesh
|
|
|
|
|
|
是否有任何原因,你似乎是初始化SPI外设为每个操作?如果在电源重置后工作,那么它可能指示硬件问题或代码中的其他地方。苏珊
|
|
|
|
|
只有小组成员才能发言,加入小组>>
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
873浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
475浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 00:37 , Processed in 0.925853 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1292