[PIC®/AVR®/dsPIC®产品] PIC18F16Q41的SPI用MCC配置函数怎么卡死啊

[复制链接]
 楼主| mintspring 发表于 2024-7-21 23:11 | 显示全部楼层 |阅读模式
  1. void ST7735_SPI_SendByte(uint8_t byte)
  2. {       
  3.     while(SPI1_IsTxReady()==false);
  4.     SPI1_ByteWrite(byte);
  5. }
配置后,使用上述函数实现SPI发送字节,但是为何总是在这个while里卡死呢?
难道用错了吗?

gaoyang9992006 发表于 2024-7-22 14:30 | 显示全部楼层
你尝试交换这两句位置。
先发送再判断是否可以继续发送。
因为第一次发送肯定是可以的,而判断能否再次发送表示测试刚才是否发送完成。
gaoyang9992006 发表于 2024-7-22 14:31 | 显示全部楼层
如果按照当前的操作,那么会有这种可能,就是发送函数执行后,可能被别的操作打扰,导致发送并未完成。所以建议交换位置。
yiyigirl2014 发表于 2024-7-22 14:33 | 显示全部楼层
楼上总结 很好,建议试试楼主的说法。看看是不是因为这个。
呐咯密密 发表于 2024-7-22 16:54 | 显示全部楼层
我也投一票,交换一下顺序,很多都会因为这个出问题
huangcunxiake 发表于 2024-7-27 22:29 | 显示全部楼层
能发送成功吗
xiaoqi000 发表于 2024-9-25 16:20 | 显示全部楼层
可能是因为SPI1的发送缓冲区一直处于满状态,导致SPI1_IsTxReady()返回false。你可以检查SPI的配置
哈根达斯uz 发表于 2024-9-30 16:10 来自手机 | 显示全部楼层
使用上述函数实现SPI发送字节
liu96jp 发表于 2024-10-23 16:45 | 显示全部楼层
正常来说估计是初始化没配置对会导致卡死
g0d5xs 发表于 2024-10-23 16:46 | 显示全部楼层
一般就是SPI没配置对吧
lix1yr 发表于 2024-10-23 17:50 | 显示全部楼层
是不是数据发的格式之类的错误了啊
ex7s4 发表于 2024-10-23 20:02 | 显示全部楼层
根据PIC18F16Q41的数据手册,SCK(时钟)和SDI(数据输入)引脚是固定的,不能随意更改。如果在MCC中错误地配置了这些引脚,可能会导致SDO(数据输出)的时序错误,进而造成通信失败或函数卡死
cen9ce 发表于 2024-10-23 21:13 | 显示全部楼层
SPI通信支持多种模式,包括模式0到模式3,这些模式在时钟极性(CPOL)和时钟相位(CPHA)上有所不同。如果选择的模式与外设不匹配,可能导致通信失败
tax2r6c 发表于 2024-10-23 22:24 | 显示全部楼层
在配置SPI时,需要确保CKE(时钟边缘选择)和CKP(时钟极性)的设置正确
lamanius 发表于 2024-10-24 07:25 | 显示全部楼层
在使用SPI进行通信时,如果同时启用了发送和接收FIFO(First In First Out),但只处理了发送FIFO而没有处理接收FIFO,可能会导致接收FIFO溢出,从而中断SPI通信
suw12q 发表于 2024-10-24 09:10 | 显示全部楼层
SPI通信通常涉及多个中断和标志位,如发送中断(TXIF)和接收中断(RXIF)。如果这些中断和标志位没有得到正确处理,可能会导致通信失败或函数卡死。
b5z1giu 发表于 2024-10-24 10:15 | 显示全部楼层
根据外设的要求选择正确的SPI模式。在MCC中正确设置CKE和CKP的值。
l1uyn9b 发表于 2024-10-24 11:27 | 显示全部楼层
处理发送和接收FIFO:如果只使用发送功能,可以只启用发送FIFO。确保在发送数据后及时处理接收FIFO,避免溢出
稳稳の幸福 发表于 2024-11-29 20:23 | 显示全部楼层
后来是如何解决的,我好像看到过一个贴说这个。
稳稳の幸福 发表于 2024-11-29 20:33 | 显示全部楼层
是不是选的IO不对导致的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

303

主题

4964

帖子

24

粉丝
快速回复 在线客服 返回列表 返回顶部