[PIC®/AVR®/dsPIC®产品] MCC配置的SPI怎么没法用啊

[复制链接]
2516|18
 楼主| huahuagg 发表于 2024-7-21 12:42 | 显示全部楼层 |阅读模式
谁用MCC配置过SPI啊?分享一下经验,初始化函数看不懂啊。
  1. bool SPI1_Open(uint8_t spiConfigIndex)
  2. {
  3.         bool returnValue = false;
  4.         if(false == SPI1CON0bits.EN)
  5.         {
  6.         SPI1CON0 = spi1_configuration[spiConfigIndex].con0;
  7.         SPI1CON1 = spi1_configuration[spiConfigIndex].con1;
  8.         SPI1CON2 = spi1_configuration[spiConfigIndex].con2 & ~(_SPI1CON2_SPI1RXR_MASK) & ~(_SPI1CON2_SPI1TXR_MASK);
  9.         SPI1BAUD = spi1_configuration[spiConfigIndex].baud;        
  10.         SPI1CLK = spi1_configuration[spiConfigIndex].clksel;        
  11.                 TRISBbits.TRISB4 = 0;
  12.         SPI1CON0bits.EN = 1U;
  13.                
  14.                 returnValue = true;
  15.         }
  16.         else
  17.         {
  18.                 returnValue = false;
  19.         }
  20.         return returnValue;
  21. }
这谁懂啊
配置好后这么操作
    SPI1_Initialize();
    while(SPI1_Open(SPI1_DEFAULT)==false);  

发现没反应啊,卡这走不下去。
mintspring 发表于 2024-7-21 20:18 | 显示全部楼层
搜了一下,全网没有一个用MCC配置SPI驱动TFT彩屏的。
mintspring 发表于 2024-7-21 20:20 | 显示全部楼层
不知道为何厂家没提供相关的例子。也没库函数,现在很多国内的51单片机都是库函数的。
mintspring 发表于 2024-7-21 20:20 | 显示全部楼层
PIC没落了。。。
wutaosamuel 发表于 2024-7-22 10:19 | 显示全部楼层
因为“if(false == SPI1CON0bits.EN)”这句话,当外设使能的时候,SPI1_Open会一直返回false。所以while(SPI1_Open(SPI1_DEFAULT)==false);会一直卡着
Betty996 发表于 2024-8-3 13:46 | 显示全部楼层
我也没正式配过这个功能,一般都是用其点个灯之类的
Betty1299 发表于 2024-8-3 14:51 | 显示全部楼层
其实你可以按照ST的cubemx的思路来配置MCC的SPI的
Charlotte夏 发表于 2024-8-3 15:55 | 显示全部楼层
一般来说直接用例程就好啊,都是有例程SPI的,没必要自己配置了
Allison8859 发表于 2024-8-3 17:05 | 显示全部楼层
都是配置IO,时钟和功能模式就可以吧
Carina卡 发表于 2024-8-3 18:20 | 显示全部楼层
这个MCC配置起来还是比较麻烦的
Alina艾 发表于 2024-8-3 19:26 | 显示全部楼层
你仿真看看呢?是不是漏哪里了
Belle1257 发表于 2024-8-4 08:30 | 显示全部楼层
一般来说可以用逻辑分析仪抓一下,看看是否有正常的波形
Emily999 发表于 2024-8-4 09:33 | 显示全部楼层
硬件连接是否正确啊?
alxd 发表于 2024-8-4 11:03 | 显示全部楼层
可能是你的时钟配置有问题,就容易这样
B1lanche 发表于 2024-8-4 13:00 | 显示全部楼层
一般是资源冲突可能也会导致初始化失败的

呐咯密密 发表于 2024-8-15 14:54 | 显示全部楼层
论坛现在好像有了
AloneKaven 发表于 2024-8-15 22:54 来自手机 | 显示全部楼层
例程里没有相应配置吗
夏眠毁灭者 发表于 2025-6-25 10:18 | 显示全部楼层
MCC 配置的 SPI 无法使用,可能有以下原因:
硬件连接错误:检查 SCK、MISO、MOSI、SS 引脚是否正确连接,是否有短路或断路。
时钟极性(CPOL)和相位(CPHA)不匹配:确认主从设备的 CPOL 和 CPHA 设置一致。
波特率设置过高:尝试降低波特率,确保在设备支持范围内。
中断配置问题:若使用中断方式,检查中断使能和优先级设置。
引脚复用冲突:确保 SPI 引脚未被其他外设复用。
MCC 生成代码问题:检查生成的初始化代码是否正确,可对比官方例程。
花开了相爱吧 发表于 2025-9-19 17:51 | 显示全部楼层
MCC 配置的 SPI 无法使用,可能是引脚映射错误(未正确分配 SCK/MOSI/MISO 引脚)、时钟频率不匹配(超出从设备支持范围)、模式设置不符(CPOL/CPHA 与从设备不一致),或中断 / 使能位未正确配置。需检查 MCC 生成代码中的 SPI 初始化参数,核对硬件接线及从设备规格,确保片选信号逻辑正确
您需要登录后才可以回帖 登录 | 注册

本版积分规则

159

主题

1430

帖子

2

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