完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
大家好,我用的是PI32MZ,它连接到带有SPI接口的LTC1864ADC转换器。我检查了我的SCKL引脚,但没有脉冲。似乎spi不是活动的.任何想法都会被理解.int main(void){CFGCONbits.JTAGEN=0;TRISA=0xC000TRISA=0xC000TRISB=0;TRISA=TRISA=0;TRISA=TRISA=0xC000TRISB=0;TRISC=TRISB=0;TRISA=TRISC 0;TRISC=0;TRISC 0;TRISC=0;TRISC 0;TRISC 0;TRISC=0;TRISC 0;TRISC=0;TRISC=0;TRISC 0;TRISC 0;TRISC 0;TRISC 0;TRISC 0/PMRDTRITRITRISC比特TRITRITRITRITRITRITRISC比特TRITRITRITRITRITRITRITRITRITRISC比特TRITRITRITRITRITRISC比特TRITRISC14=0;TRISC13=0;//sosciTRISGbits.TRISGbits.TRISG0=1;//sdi4TRITRISB比特.TRISB1=1;//sdi4TRITRITRISB比特.TRISB1=1=0;//sdi4TRISD14141414TRISD比特.TRISD10=0;//ck4CNPUDCDCDCDCDCDCDCDCDCD钻比特.CNPUD0=0;//sckkk4CNPUD位CNPUD位.CNPUD位.CNPUD10=0,//0=0=0=0=0=上拉式禁用CNPUBBB位被上拉禁用CNPUBCNPUG比特.CNPUB1=0=0;//0=//0=上拉ANSELC=0X0000;ANSANSELF=0X0000;ANSELF=0X0000;ANSELF=0X0000;ANSELG=0X0000;ANSELG=0X0000;CFGCON比特.IOLOCK=0;CFGCON比特.CFGCON比特.IOLOCK=0;CFGCON比特.PMDLOCK=0;CFGCON比特.PGLOCK=0;CFGCON比特.PGLOCK=0;CFGCON比特.PGLOCK=0;SDI4R=0;SDI4R=0b1100;//RG0;SDI4R=000b1100;//RG0,SDI4_asm_asm_uu_asm_us.SPI4EIE=0;//禁用所有中断IEC5bit。SPI4TXIE=0;//di所有可中断SPI4CON=0;//停止并重置SPI1.rData=SPI4BUF;//停止并重置SPI1.rData=SPI4BUF;//清除接收缓冲区IFS5bits接收缓冲区IFS5bits接收缓冲区IFS5bitsSPI4RXIF=0;//清除任何现有的eventiPC4141比特.SPI41bits.SPI4RXIP=0;//清除优先级IPC41bits.SPI4RXIP.SPI4RXIP=0;//清除优先级IPC41bits优先级IPC41bits优先级IPC41bitsSPI4RXIP=3.SPI4RXIP=3;///优先级IPC41IPC41404040404040404040404041bitsIPC41bitsIPC41能干的RX,TX和错误中断SPI4BRG=0x1;//使用FPB/4时钟频率SPI4STAT位.SPIROV=0;//清除溢出SPI4CON=0x0000D620;//SPI开启,清除溢出SPI4CON=0x0000D620;//SPI开启,禁用sdo pin,16位传输,主控PBCLK2,Mssen禁用///u asm_u volatil("ei");(1){LATBbit.LATB1=1;//APP_StartCoreTimer(0);//APP_CoreTimer_Del延迟(300);延迟(18);LATB位.LATB位.LATB1=0;//LATB1=0;//同时(计数< 16计数;16);int数据;//读取SPI数据缓冲SPI数据缓冲器数据=SPI数据缓冲器数据=SPI4BUUF;}}void_u.u.((中断(ipl3SRS),矢量(_SPI4_SPI4_RX_VECTOR))(矢量(_SPI4_SPI4_RX_RX_RX_VECTOR))))(矢量((_SPI4_SPI4_SPI4_RX_RX_RX_/使用在此接收的数据NT数据;//Read SPI数据BuffelDATa= SPI4BUF;/ /清除RX中断FraveS5BITS;SPI4RXIF=0;}
|
|
相关推荐
19个回答
|
|
|
我看不出你寄什么东西了。用SPI,你必须发送来接收。
|
|
|
|
|
|
因为我的ADC转换器没有输入引脚,所以我的主SDO引脚被禁用了。当禁用了SDO时,我如何发送任何数据?
|
|
|
|
|
|
这是不必要的。你必须给SPIxBUF写SPI模块来生成时钟。
|
|
|
|
|
|
哎呀,真的吗?这是一个好消息:…我会在星期一做我的工作
|
|
|
|
|
|
真正地!每个SPI事务是同时发送和接收的,通过写入主机中的SSPBUF寄存器触发。这与您是否不想发送无关。
|
|
|
|
|
|
德拉-西蒙基试图在SPI缓冲区之前写(1),它工作,但1次之后,它总是零。然后我试图写在缓冲区内(1),这样,它总是工作,但不管我的模拟输入的ADC转换器,我的意思是如果我禁用模拟输入,仍然是SDO引脚的ADC工作和不去ZiRO.在现实中SDO引脚的ADC应该转换我的模拟输入,如果输入是ZRIO它仍然有数据吗?
|
|
|
|
|
|
对不起,很难听懂你的口头描述。请贴出你测试的实际代码,尤其是你说的“只工作一次”的版本。
|
|
|
|
|
|
这是我的密码,时钟和接收中断工作ONCE:int main(void){CFGCONbits.JTAGEN=0;CFGCONbits.JTAGEN=0;TRISA=0xC000;TRISB=0;TRISA=0xC000TRISB=0;TRISC=0x0010;TRISC=0x0010;TRISD=0x0010;TRISD=0x2001;TRISE=0x0000;TRISE=0x0000;TRISF=0x0104;TRISF=0x0104;TRISG=0X0001;TRISG=0X0001;TRISG=0X0001;TRISG=0X0001;TRISGbits.TRISGbits.TRISG=1;TRI=0;//sck4 CNPUDCNPUD10=0;//0=上拉禁用CNPUBbits.CNPUB1=0;//0=上拉禁用CNPUGbits.CNPUG0=0;//0=0=0;//0=上拉禁用CNPUGGGGGGGGGG0=0;//0=上拉禁用ANSELA ANSELA=0X000LA=0X0000;ANSELB=0X0000=0X0000;ANSELC=0XLC=0X0000;ANSELD=0X0000=0X0000;ANSELE=0X0000=0X0000;ANSEL0=0X0000=0X0000=0X0000;ANSELF=0X0000=0XCFGCON bits.PMDLOCK=0;CFGCONPGLOCK=0;SDI4R=0b1100;//RG0,SDI4_u asm_u易挥发("di");///****************inispi.**************inispi spi标识符********int rData;IEC5bits.PGLOCK=0;//禁止所有中断IEC5bits IEC5bits.SPI4EIE=0;SPI4TXIE=0;//禁止所有中断0; //停止并重置SPI1.rData=SPI4BU///清除接收缓冲区IFS5bits.SPI4RXIF=0;///清除任何现有的事件IPC4141比特.SPI4RXIP=0;////清除优先级IPC41比特优先级IPC41比特.SPI4RXIP=3;//清除优先级IPC优先级IPC41比特.SPI4RXIP=3;//优先级IPC41比特优先级IPC41比特.SPI4RXIP=3;//优先级IPC41比特.SPI4RXIS=1;//次优先级IEC5比特.SPI4RXIE=1;SPI4RXIE=1;//EnablRX、TX和错误中断//启RX、TX和RX、TX和错误中断//启用RX、TX和错误中断//现有事件//IPC41BIT.SPI4TXIp=0;//清除优先级//IPC41BIT。/SPI4TXIp=3;/SPI4/TXIIS=1;//优先级/ /IEC5位。SPI4TXHY=1;//启用RX,TX和错误中断//ECEC5位。SPI4RXYE=1;//启用RX,TX和错误中断SPI4BRG= 0x1;/ /使用FPB/4时钟频率SPI4STATBITS。V=0;/ /清除过流SPI4CONTITE;MLKSEL=0;/从属模式SPI4CONTITE。SIDL=0;SMP4CONTITE。SMP4CONTITE;SPI4CONTITE。MODE16 16=1;/16位传输SPI4CONTITE。FLMNE=0;SPICONFF=0;SPI4CONDITS。DISSDO=1;/ /禁用SDO引脚SPI4CONTITY。=0;π=1;/SPI在SPI4BUF=“A”上;InCONTITES.MVEC=1;α(1){LATBIT.LATB1=1;DelayUS(10);LATBITS。LATB1=0;而(SPI4STATBES.SIPBF){LATABITS。LATA0= ~LATABITS。LATA0;}}}空格。(中断(IPL3SRS),向量(πSP44RxVeto)马斯森(r)()(NoMIPs16):SPI4RX中断(空隙){//与接收数据遗传= SPI4BUF工作;/ /清除RX中断标志SPI4STATBITS.SPIROV=0;IFS5BITS SPI4RXIF=0;}
|
|
|
|
|
|
请重新阅读我的文章第6页。每一个传输都需要写一个SSPBUF。每次写入SSPBUF时,只传输8位。
|
|
|
|
|
|
我也尝试每次写入缓冲区,这样时钟和中断总是工作,但我的ADC的SDO引脚总是有PURS(或数据)考虑到我的模拟输入,即使它是零。为什么?我只是把这个部分放在这里(1)其余的总是相同的:(1){ if(!)LIPB1=1;DelayUS(10);LATBITS。LATB1=0;而(SPI4STATBES.SIPBF){LATABITS。LATA0= ~LATABITS。LATA0;}}}空隙,γ属性((中断(IPL3SRS),矢量(πSP44RxVector)))数据= SPI4BUF;/ /清除RX中断标记SpIMP4STATBITS。SPROROV=0;IFS5BITS SPI4RXIF=0;}
|
|
|
|
|
|
你看到的数据到底是什么?在systemNote中总会有一些噪声,您不能同时轮询SPIRBF并从中生成中断。如果启用了中断,那么在您的非中断代码能够看到标志之前,它们将读取数据(并清除标志)。
|
|
|
|
|
|
抱歉,但是我不能撤消您的意思:注意,您不能同时轮询SPIRBF并从中生成中断。如果启用了中断,那么在您的非中断代码能够看到标志之前,它们将读取数据(并清除标志)。即使模拟输入不活跃,ADC的O引脚也是如此。
|
|
|
|
|
|
但是在我前面提到的jut工作一次的代码中,SDO在我的模拟输入中是活动的,当在非活动的模拟输入中SDO也是零时,SDO也有数据
|
|
|
|
|
|
很难理解你想用你的帖子告诉你什么,假设你的SDO是LTC1864 SDO引脚,而不是PICS SDO引脚。除了QHB的中断评论之外,你也开始读取ADC DATSIP4BUF=“A”;在你开始转换过程之前。如果LoBb1=1,则数据可以被移出,一旦CONV再次设置为0。由于循环,这仍然会给你一些数据,但不是你想要的样本,我猜。既然你现在要等待你的采样10,我们无论如何都是LabBIT。LATB1=1;DelayUS(10);LATBITS。LATB1=0;我看不到。一个真正的优点是使代码与中断复杂化。否则,你必须像QHB所说的那样重写。你很难得到一个精确的“0”的数字值,仅仅因为你把输入电压设置为零。最后对你的源代码进行一个注释,而这与你的问题无关(尽管它可能是一个症状):SPI4CONBITS。MSTN=1;// Sl。AAVE MODECCODE和注释相互矛盾。
|
|
|
|
|
|
是的,我说的是SDO,但是您是说我必须这样做:SPI4BUF='A';//start.-->这是写在缓冲LATBbits中的。LATB1=1;delayus(10);LATBbits.LATB1=1;而不是LATBbits.LATB1=1;//startconvertiondelayus(10);LATBbits.LATB1=0;//complete.rsionv,然后开始输出数据????????
|
|
|
|
|
|
我假设“平方”只是指“一些”脉冲?如果你看到一个精确的正方形脉冲,你很可能会看到错误的PIN。
|
|
|
|
|
|
你的帖子{不,我不是那个意思。那是我自己写的一份草率的复制品。修正了我的帖子
|
|
|
|
|
|
你能对我的代码做任何修改吗?我可以更不知道我的错误是什么????
|
|
|
|
|
|
嗯,你有没有可能用你的文字“你能请……”改写你自己的帖子19吗?我已经看到你的新帖子没有打扰地包含代码,但是现在已经不见了。这是我对你的帖子的答复,它已经消失了……——你仍然在开始ADC之前开始阅读。你应该把这个后置LATBbits.LATB1=0;这是ADC可以给你提供数据的时间。否则对我来说这听起来不错。至少足够好,开始看你的16位“数据”变量,而不是SDO引脚。把不同的“已知的”(和允许的)电压加到ADC输入端(例如用电位计),测量电压,看看通过SPI读取的值是否至少某种程度上类似于模拟输入。如果是的话,你可以继续处理噪音。如果不是,您可能仍然存在代码的问题。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1124浏览 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 06:12 , Processed in 1.125405 second(s), Total 111, Slave 93 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
943