找回密码
 立即注册
楼主: runjiu

32G可以做 ISP / OTA 升级么?

[复制链接]
  • 打卡等级:偶尔看看II
  • 打卡总天数:23
  • 最近打卡:2025-09-23 15:30:49

8

主题

16

回帖

256

积分

中级会员

积分
256
发表于 2024-12-31 15:25:01 | 显示全部楼层
我做了一套OTA的工具,包含固件及上位机
微信截图_20241231152334.png
知识改变命运,技能成就梦想!
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:683
  • 最近打卡:2025-10-15 08:16:23
已绑定手机

54

主题

1917

回帖

4071

积分

论坛元老

积分
4071
发表于 2025-3-2 15:20:45 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-08-09 17:52:13
已绑定手机

2

主题

5

回帖

34

积分

新手上路

积分
34
发表于 2025-7-2 22:07:14 | 显示全部楼层
求教一下各位大佬,ota刷机过程中断电了。主程序不全丢失,官方说必须要将p3.3链接gnd!有没有别的办法解决!刷机失败,程序不完整 就从新进入刷机模式,如何实现!我现在有时候 AP程序没有刷完,断电,在插电,并没有进入刷机模式!

点评

强制进ISP的办法也是自定义的,可以自己更改引脚。 刷一半问题,例程里只校验前几个字节,可以更改逻辑: 可以刷完了ISP给EEPROM某个地址置位,刷前清除置位。 可以ISP里自定义加完整的CRC校验。  详情 回复 发表于 2025-7-2 22:13
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:328
  • 最近打卡:2025-10-15 08:50:20
已绑定手机

85

主题

3256

回帖

7196

积分

荣誉版主

无情的代码机器

积分
7196
发表于 2025-7-2 22:13:43 | 显示全部楼层
xwec*** 发表于 2025-7-2 22:07
求教一下各位大佬,ota刷机过程中断电了。主程序不全丢失,官方说必须要将p3.3链接gnd!有没有别的办法解决 ...

强制进ISP的办法也是自定义的,可以自己更改引脚。
刷一半问题,例程里只校验前几个字节,可以更改逻辑:
可以刷完了ISP给EEPROM某个地址置位,刷前清除置位。
可以ISP里自定义加完整的CRC校验。
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-10-08 18:07:13
已绑定手机

1

主题

5

回帖

55

积分

注册会员

积分
55
发表于 2025-10-7 22:23:54 | 显示全部楼层
神*** 发表于 2022-12-18 10:36
如下,拿去简单改下通信协议就行了,STC 是ISP/IAP的全球领导者

深圳国芯人工智能有限公司-在线升级 (stca ...

#include "stc.h"
#include "uart.h"

BOOL bUartRxReady;

BYTE UartrecvIndex;
BYTE UartRecvStep;
BYTE UartRecvSum;

BYTE edata UartTxBuffer[256];
BYTE edata UartRxBuffer[256];

void uart_init()
{
    // UART3引脚配置 - P5.0(RXD3), P5.1(TXD3)
    // 设置P5.0为高阻输入(RXD3) - 只保留一次配置
    P5M0 &= ~(1 << 0);  // P5M0.0 = 0
    P5M1 |= (1 << 0);   // P5M1.0 = 1 → 高阻输入
   
    // 添加P5.1为推挽输出(TXD3) - 之前缺失的配置
    P5M0 |= (1 << 1);   // P5M0.1 = 1
    P5M1 &= ~(1 << 1);  // P5M1.1 = 0 → 推挽输出

    // UART3初始化
    S3CON = 0x10;       // 8位数据,可变波特率
    S3CON &= 0xBF;      // 串口3选择定时器2为波特率发生器
    AUXR |= 0x04;       // 定时器时钟1T模式
   
    // 统一使用BAUD宏,移除固定的0xCC,0xFF
    T2L = BAUD;         // 设置定时初始值低位
    T2H = BAUD >> 8;    // 设置定时初始值高位
   
    AUXR |= 0x10;       // 定时器2开始计时
   
    // 使能UART3接收(轮询方式,不使能中断)
    S3CON |= 0x01;      // 使能接收 (REN3=1)
   
    uart_recv_done();
}

// 建议将函数名改为uart_poll以明确是轮询方式
void uart_isr()  // 考虑改为 uart_poll()
{
    BYTE dat;
   
    // 检查UART3接收中断标志(轮询方式)
    if (S3CON & 0x01)   // 检查RI3标志
    {
        S3CON &= ~0x01; // 清除RI3标志
        dat = S3BUF;    // 读取接收数据
        
        UartRecvSum += dat;
        switch (UartRecvStep)
        {
        case 0:
L_CheckHead:
            UartRecvStep = ((UartRecvSum = dat) == '#');
            break;
        case 1:
            UartRxBuffer[0] = dat;
            UartrecvIndex = 0;
            UartRecvStep++;
            break;
        case 2:
            UartRxBuffer[1 + UartrecvIndex++] = dat;
            if (UartrecvIndex >= UartRxBuffer[0])
                UartRecvStep++;
            break;
        case 3:
            if (dat != '$') goto L_CheckHead;
            UartRecvStep++;
            break;
        case 4:
            if (UartRecvSum != 0) goto L_CheckHead;
            bUartRxReady = 1;
            UartRecvStep++;
            break;
        default:
            break;
        }
    }
}

static BYTE send(BYTE dat)
{
    // 等待UART3发送缓冲区空
    while (!(S3CON & 0x02));  // 等待TI3标志
    S3CON &= ~0x02;           // 清除TI3标志
    S3BUF = dat;              // 发送数据
   
    return dat;
}

void uart_send(BYTE status, BYTE size)
{
    BYTE sum;
    BYTE i;
   
    sum = send('@');
    sum += send(status);
    sum += send(size);
    if (size)
    {
        for (i = 0; i < size; i++)
        {
            sum += send(UartTxBuffer);
        }
    }
    sum += send('$');
    send(-sum);
   
    // 等待发送完成
    while (!(S3CON & 0x02));
}

void uart_recv_done()
{
    bUartRxReady = 0;
    UartrecvIndex = 0;
    UartRecvStep = 0;
    UartRecvSum = 0;
}
我把STC32的ISP代码改成串口3下载,然后通过蓝牙下载,发现下载不了,并且波特率设置没问题,连接无问题,可以给我看看问题在哪吗
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-10-16 05:42 , Processed in 0.112145 second(s), 79 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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