找回密码
 立即注册
查看: 85|回复: 3

STC32G144K246测试手记

[复制链接]
  • 打卡等级:常住居民II
  • 打卡总天数:91
  • 最近打卡:2025-12-17 00:46:41
已绑定手机

7

主题

19

回帖

478

积分

中级会员

积分
478
发表于 2025-12-7 01:41:53 | 显示全部楼层 |阅读模式
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 (  // 超时时间 [ms]
    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

如果梁工看到此贴,能不能帮分析一下(翻转速度与驱动能力试过改也不行):
头文件 部分:
sbit  SD_CLK  = P2^5;
sbit  SD_MISO = P2^4;   
sbit  SD_MOSI = P2^3;     
// sbit  SD_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_4  SCLK-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();
}


回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:102
  • 最近打卡:2025-12-17 00:03:22
已绑定手机

7

主题

136

回帖

768

积分

高级会员

DIY玩家

积分
768
发表于 6 天前 | 显示全部楼层
CPU模拟SPI驱动ST7789显示
对系统实时性有多少影响
真正的学徒往往怀着大师的心
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:266
  • 最近打卡:2025-12-16 08:29:17

812

主题

1万

回帖

2万

积分

管理员

积分
21282
发表于 6 天前 | 显示全部楼层
STC32G144K246@100MHz
用 DMA-SPI 刷 320*240-TFT彩屏,是 视频级的



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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:102
  • 最近打卡:2025-12-17 00:03:22
已绑定手机

7

主题

136

回帖

768

积分

高级会员

DIY玩家

积分
768
发表于 6 天前 | 显示全部楼层
神*** 发表于 2025-12-11 10:08
STC32G144K246@100MHz
用 DMA-SPI 刷 320*240-TFT彩屏,是 视频级的

数据量大
硬件处理更快
真正的学徒往往怀着大师的心
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-12-17 03:01 , Processed in 0.108174 second(s), 59 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表