google 发表于 2025-5-28 09:46:37

硬件SPI读不到数据问题



此字库连接STC8H8k64U的SPI1接口,按如下配置初始化,无法读出字库芯片数据,请问我的SPI配置有没有问题?附件中为STM32的配置,我模仿了它的SPI配置,我注意到STC8H8k64U的SPI为快速SPI,是否和这个有关系?









void GT_SPI1_Init(void)
{
    unsigned char temp;
    // 1. GPIO配置 --------------------------------------------------
    temp = P_SW1;               // 切换到第一组SPI
    temp &= ~(SPI_S0 | SPI_S1); // SPI_S1=0 SPI_S0=0
    P_SW1 = temp;               //(P1.2/SS, P1.3/MOSI, P1.4/MISO, P1.5/SCLK)


      P1M0 = 0x28; // 0010 1000 (P1.3和P1.5推挽输出)
      P1M1 = 0x10; // 0001 0000 (P1.4高阻输入)
      P5M0 = 0x10; // 0001 0000 (P5.4推挽输出)
      P5M1 = 0x00;      

      GT_CS = 1; // 初始时关闭片选

      // 2. SPI控制器配置 --------------------------------------------
      SPCTL = SSIG | // 忽略SS引脚(由软件控制片选)
                SPEN | // 使能SPI
                MSTR | // 主模式
                CPOL | // 时钟极性=1(空闲时高电平)
                CPHA | // 时钟相位=1(第二个边沿采样)
                SPDLL; // CPU_CLK/128

      SPSTAT = SPIF | WCOL; // 清除状态标志
      SPDAT= 0;         // 初始化SPI数据
    }


    unsigned char GT_SPI1_WriteReadByte(unsigned char dat)
    {
      SPSTAT = SPIF | WCOL;   // 清除传输完成标志和写冲突标志
      SPDAT = dat;            // 将要发送的数据写入SPI数据寄存器
      while (!(SPSTAT & SPIF)); // 等待SPI传输完成(SPIF标志位置1)
      SPSTAT = SPIF | WCOL;   // 清除传输完成标志和写冲突标志
      return SPDAT;             // 返回接收到的数据(全双工模式下)
    }

国芯人工智能 发表于 2025-5-28 09:48:00

您好,关于您提到的问题,建议您检查并确认以下配置是否正确:

1. SPI初始化配置:
确保您的初始化代码与STM32的SPI1接口配置一致,特别是关于P1M0和P1M1的设置。由于STC8H8k64U的SPI是快速 SPI,可能需要根据其特性调整设置。
检查是否需要使用不同的控制引脚来配置 SPI,例如是否需要使用不同的 P1M0 或 P1M1 值。

2. 快速 SPI 的特殊处理:
因为 STC8H8k64U 的 SPI 是快速 SPI,可能需要根据其特性调整初始化代码。具体来说,是否需要使用不同的控制模式或调整其他参数以适应快速 SPI 的特性。

3. 其他可能的错误点:
检查是否有其他部分的初始化设置需要调整,例如定时器的设置、定时模式等。
确保时钟信号和推挽信号的配置与 STC8H8k64U 的 SPI 配置一致。

如有更多问题,欢迎随时补充,我们共同探讨解决方案。

[本文内容由国芯人工智能辅助生成,仅供参考]

google 发表于 2025-5-28 09:55:12

硬件SPI读不到数据问题

刚才发错板块了,这个才正确,不转内容了,转个网址过来,欢迎讨论
https://www.stcaimcu.com/thread-18136-1-1.html



国芯人工智能 发表于 2025-5-28 09:58:00

以下是关于STM芯片(STmicroelectronics的STM系列芯片)的问题和解决方案:

1. STM芯片的SPI读取问题
   如果您在使用STM芯片时遇到SPI读取问题,可能是因为以下原因:
芯片型号错误:确保您的STM芯片是正确的型号,例如STM898L、STM891G等。
驱动器有问题:检查驱动器的兼容性,确保驱动器版本与芯片型号一致。
电源问题:确保电源供应稳定,避免因电源不稳定导致的读取异常。
软件错误:检查驱动器或开发板的驱动软件,确保软件兼容性。

2. 解决方法
选择合适的STM芯片:根据您的需求选择合适的STM芯片型号。
安装正确驱动器:确保驱动器是针对您的STM芯片设计的。
检查电源设计:确保电源供应稳定,避免导致的读取异常。

3. 注意事项
文档检查:查阅手册或文档,确保使用的是正确的版本。
联系支持:如果问题持续存在,可以联系STmicro Electronics的技术支持团队。

希望以上信息能帮助您解决问题!

[本文内容由国芯人工智能辅助生成,仅供参考]

ercircle 发表于 2025-5-28 10:03:23


检查下这两个,这类问题用逻辑分析仪抓下波形最直观了。


google 发表于 2025-5-28 12:59:05

ercircle 发表于 2025-5-28 10:03
检查下这两个,这类问题用逻辑分析仪抓下波形最直观了。

可惜没有逻辑分析仪。。。

ercircle 发表于 2025-5-28 13:26:41

google 发表于 2025-5-28 12:59
可惜没有逻辑分析仪。。。

低速的某宝搜迷你逻辑分析仪也不贵,I2C、SPI这些够用了
高速的可以看下DSLogic

google 发表于 2025-5-29 08:28:09

ercircle 发表于 2025-5-28 13:26
低速的某宝搜迷你逻辑分析仪也不贵,I2C、SPI这些够用了
高速的可以看下DSLogic ...

麻烦高手,查看下附件PDF,我楼顶这个SPI初始化没问题的吧?

ercircle 发表于 2025-5-29 08:50:46


看文档这芯片同时支持spi mode0 model3。你st代码用的spi model0,8H代码用的model3应该是都可以的。

页: [1]
查看完整版本: 硬件SPI读不到数据问题