骨碎补 发表于 2025-12-7 01:41:53

STC32G144K246测试手记

STC32G144K246实验箱经过多天测试,一般内外设结果:
频率默认48MHZ,

LCM测试完成,正常显示。
模拟SPI-ST7789测试完成,正常显示。(为什么不用硬件SPI?因为论坛上有硬件SPI动画片的示例了且引脚跟其他的测件冲突)。

QSPI测试烧写FLASH(USB-CDC)和读取完成,其中烧录FLASH有问题:1000000波特时会有中断出错情况,可能我的线电流不够。
USB声卡测试完成,基于AI8051U移植,可以播放USB音乐,但可能我用的功放8002和手机的喇叭不良,音质不好。
搞了三天TF卡,无法成功,但同样的代码在AI8051U实验箱是正常的,引脚也没有错。

具体是TF卡挂载不成功,初始化错误,但是wait_ready(5) 可以返回1,说明是通信的

// 等待 SD 卡就绪(1:就绪,0:超时)
uint16 wait_ready (// 超时时间
    uint16 wt ){
    uint8 d;
    uint16 timer_count = 0;
    while (timer_count < wt) {
      d =SPIReadByte();
      if (d == 0xFF) {
            return 1;// 卡已就绪
      }
      delay_ms(1);// 延时 1 毫秒
      timer_count++;
    }
    return 0;// 超时
}


注:TF卡的CSN引脚是P92,电平有2种方法:
1.#define    SD_CS_H()P9SETB=0x04//P92 = 1
#define    SD_CS_L()P9CLRB=0x04//P92 = 0
2.
#define    SD_CS_H()    P9OUT |=BIT2;//P92 = 1
#define    SD_CS_L()P9OUT &=~BIT2;//P92 = 0

如果梁工看到此贴,能不能帮分析一下(翻转速度与驱动能力试过改也不行):
头文件 部分:
sbitSD_CLK= P2^5;
sbitSD_MISO = P2^4;   
sbitSD_MOSI = P2^3;   
// sbitSD_CS   = P9^2;
#define    SD_CS_H()    P9OUT |=BIT2;
#define    SD_CS_L()P9OUT &=~BIT2;
源文件部分:

void SD_SPI_Init(void)
{
///内存卡:MOSI-P2_3   MISO-P2_4SCLK-P2_5   CSN-P92
SPI_SwitchP2n();
SetP2nQuasiMode(BIT4);////设置为准双向口模式
SetP2nPushPullMode(BIT3|BIT5);////设置为推挽输出模式
SetP9nPushPullMode(BIT2);////设置为推挽输出模式
SPI_MasterMode();                   //设置SPI为主机模式
SPI_IgnoreSS();                     //忽略SS脚
SPI_DataMSB();                      //设置SPI数据顺序为MSB (高位在前)
SPI_SetMode0();                     //设置SPI工作模式0 (CPOL=0, CPHA=0)
SPI_SetClockDivider4();             //设置SPI时钟分频
HSSPI_Disable();                  //关闭SPI高速模式
   SPI_Enable();                     //使能SPI功能
}
void SD_SPIWriteByte(u8 out)
{
    SPI_SendData(out);                  //触发主机发送数据
    while (!SPI_CheckFlag());         //等待发送完成
    SPI_ClearFlag();                  //清除中断标志
}
u8 SD_SPIReadByte(void)
{
    SPI_SendData(0xff);               //触发主机读取数据(主机发送时钟信号)
    while (!SPI_CheckFlag());         //等待读取完成
    SPI_ClearFlag();                  //清除中断标志
    return SPI_ReadData();
}


狂热主宰 发表于 2025-12-11 09:53:35

CPU模拟SPI驱动ST7789显示
对系统实时性有多少影响

神农鼎 发表于 2025-12-11 10:08:10

STC32G144K246@100MHz
用 DMA-SPI 刷 320*240-TFT彩屏,是 视频级的


软件模拟 SPI, 那就改用 8051就行了

狂热主宰 发表于 2025-12-11 10:46:42

神农鼎 发表于 2025-12-11 10:08
STC32G144K246@100MHz
用 DMA-SPI 刷 320*240-TFT彩屏,是 视频级的



数据量大
硬件处理更快
页: [1]
查看完整版本: STC32G144K246测试手记