Microchip
直播中

刘思思

8年用户 201经验值
私信 关注
[问答]

PIC18F4550在SPI中***不工作但BF工作

大家好,论坛上的第一篇文章,我很难使用PIC18F45的SPI功能。我用PIC作为奴隶,ARDUNO作为一个主。在数据表中,加载SSPBUF的过程被作为(我的解释):1。检查SSPIF=02。读取SSPBUF,即TEMP= SSPBUF3。编写SSPBUF,即SSPBUF= ByTeTyixWANTAtiOTHOSDENT4。等待中断标志被设置,即当()!SSPIF)5。清晰的SSPIFThis在数据表中是非常直接的,所以我在代码中实现了它,但是它没有工作。所以,Q.No.1:为什么它不能工作?我试着去推理,但失败了。在试错阶段,我替换了。(同时)BF)一切都有效。即使没有阅读第四步后的SSPBUF来清除BF。这是我的第2号:即使没有阅读SSPBUF,我的代码是如何工作的?因为它要工作,所以每次发送字符之前都需要清除BF。我没有在代码中看到SSPBUF,在这之后,我完全跳过了第四步和第五步,得到了与“同时”的完全相同的结果。SSPIF的意思是,SSPIF总是因为某种原因而总是1,即使我每次轮询时都清除它。这是我无法解答的第三个问题。到了最后,我能够成功地发送和接收数据,但没有答案,我为什么在这些情况下失败。代码解释:1。ARDUINO从串行监视器接收一个字节。它将这个字节发送到PIC UC3。PIC读取字节,如果不是空,则将其显示在LCD4上。取决于字节中的数据,SSPBUF是LoADD5。ARDUINO发送0x00 3次来接收来自PIC的数据,并将其显示在串行监视器上。1,ARDUINO接收一个2,它接收两个和3个或其他任何东西,它接收!!!!即1:ON2:TWO3:!!!!这是完美的,当我使用BF-当我尝试使用SSPIFE结果我们如下:1!!2:哦!3!!!!如果我把这4条线全部删除,同样的事情也会发生。对不起,这是一个很长的帖子,但是我无法解释我的问题而不需要仔细考虑我的思维过程。不过,我觉得我还没有给出关于这个问题的足够细节。希望有人通过整个帖子,消除我的疑虑。同时,我会尝试在代码中添加“读取SSPBUF”行。

以上来自于百度翻译


      以下为原文

    Hello everyone,
First post on this forum

更多回帖

发帖
×
20
完善资料,
赚取积分