找回密码
 立即注册
楼主: z***

STC8H超级简单的USB-CDC虚拟串口应用及不停电下载(中断模式+查询模式)

[复制链接]

该用户从未签到

9

主题

293

回帖

1696

积分

版主

积分
1696
QQ
发表于 2023-3-28 15:56:02 | 显示全部楼层
晓奇 发表于 2023-3-28 14:21
想把一箭双雕开源代码移植到32G上,除了换头文件为32g,其他不知该修改哪些?我换过去试过了不行,是不是des ...

可以参考下STC32G数据手册5.5章节

1.png
QQ:1463035472,微信:19952583954
  • TA的每日心情
    奋斗
    昨天 09:21
  • 签到天数: 123 天

    [LV.7]常住居民III

    26

    主题

    1252

    回帖

    3911

    积分

    论坛元老

    积分
    3911
    发表于 2023-3-28 20:01:51 | 显示全部楼层
    perseverance51 发表于 2023-3-17 23:00
    实测STC8和STC32G很不稳定,时不时端口号消失,如果很稳定为什么不把这么一个重要的功能放到库函数例程里 ...

    有没有添加到库函数例程里,不是衡量一个功能是否稳定的标准。库函数例程是为了方便用户配置芯片模块功能而封装了配置函数。
    USB模块功能比较复杂不容易封装,所以我们提供了两种版本:一种是完全开源的例程给资深用户和企业客户,方便他们进行修改配置表,添加功能。另一种是将USB模块封装成库文件,按照固定的方法调用就能轻松实现USB通信,方便初学者以及不是很熟悉USB结构的用户能够简便的使用USB通信。
    USB/CDC功能已经发布了一段时间了,也送出了大量的开天斧,屠龙刀实验板,配套的例程基本上都用到了USB/CDC功能,是否稳定大家心里也有公论。
    时不时端口号消失的话建议检查一下线路是否稳定,线材质量是否可靠,以及板子的耗电是否超出USB接口的承受能力。

    该用户从未签到

    3

    主题

    51

    回帖

    473

    积分

    中级会员

    积分
    473
    发表于 2023-3-28 23:42:25 | 显示全部楼层
    不好意思,开源程序移植到32G上没有问题,只是需要仔细核对每一个寄存器的操作,特别是32G可以位寻址可以直接进行位操作,做一遍核对以后windows也就能识别了,一番周折终于走通了,最大的收获不在这个双雕,而在于对USB的认识加深了理解
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    550

    主题

    9209

    回帖

    1万

    积分

    管理员

    积分
    13926
    发表于 2023-3-29 08:54:43 | 显示全部楼层
    恭喜,我看了都不敢回的USB, 晓奇兄 举重若轻 搞定了 !

    晓奇兄,20年的老兄弟,下面您谁便选,就这些家当了,全部 【免费 + 包邮】 送您

    1,芯片:1T 8051, 32位8051,各种封装的芯片
    2,核心功能实验板:
         屠龙刀-STC32G12K128核心功能实验板,MCU自带硬件USB下载, 支持SWD硬件仿真
         开天斧-STC8H8K64U核心功能实验板,MCU自带硬件USB仿真,MCU自带硬件USB下载
    3,  STC-USB Link1D /【专业仿真器,全自动在线下载器/自动停电上电,脱机烧录器,USB转双串口工具】

    加STC华南区客服刘经理QQ: 3398500488 ;微信:18106296592  要求 【免费+包邮】 送
    加STC华南区客服曹经理QQ:1933892258 ;微信:18106296595 要求 【免费+包邮】 送
    加STC华东区客服聂经理QQ:2593903262;微信:18106296598  要求 【免费+包邮】 送
    加STC西北区客服孙经理QQ: 1347154513 ;微信:18106296593  要求 【免费+包邮】 送
    加STC华北区客服石经理QQ: 1638975601 ;微信:19952583876  要求 【免费+包邮】 送
    加STC华中区客服唐经理QQ:2571301708 ;微信:18106296589 要求 【免费+包邮】 送
    加STC东北区客服张经理QQ:3141888640 ;微信:19952583265   要求 【免费+包邮】 送
    工作时间:  8:30-12:00  13:00-17:30(周一 到 周五, 法定节假日除外)


    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    3

    主题

    51

    回帖

    473

    积分

    中级会员

    积分
    473
    发表于 2023-3-29 11:07:24 | 显示全部楼层
    神农鼎 发表于 2023-3-29 08:54
    恭喜,我看了都不敢回的USB, 晓奇兄 举重若轻 搞定了 !

    晓奇兄,20年的老兄弟,下面您谁便选,就这些家当 ...

    谢谢神农鼎老兄,我这是没事干,被STC的技术吸引了,很多东西需要学习啊,客服已经与我联系了。非常感谢!学习中还会遇到很多问题,别嫌我事儿多就好,真诚为国产芯片崛起而感到自豪!
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    3

    主题

    51

    回帖

    473

    积分

    中级会员

    积分
    473
    发表于 2023-3-30 11:41:16 | 显示全部楼层
    本帖最后由 晓奇 于 2023-3-30 12:40 编辑

    总结一下,我把修改部分整理出来给需要的同学参考,对转换其他代码有点用

    为了稳妥起见把原工程文件复制一个出来修改一下新的目录名,建议简短、英文加数字、别用符号
    下面开始修改:(我习惯用UEDIT来做)
    1.找到并复制一个stc32g.h进来
    2.在文件stc.h里面用stc32g.h替换stc8h.h
    3.在文件uart.h里面把xdata改为edata,不改也行,在宏定义函数BR(n)里面的65536前添加(DWORD)否则251系统会报错
    4.打开uart.c修改里面的EUASB的用法,因为在8h里只是一个宏定义常数数据,而在32g里面他是sbit定义的可位寻址的位变量
      a.把IE2 &= ~EUSB替换为EUSB=0,把IE2 |= EUSB替换为EUSB=1.
      b.xdata -> edata
      c.Count7F全部删掉,没有用,估计原作者本来想用的,后来忘了又另外重新定义了一个IspCount7F;
      d.AUXR |= T1x12; 也是宏定义与sbit的不同,改为T1x12 = 1;//1T模式
        AUXR |= T2x12;  -> T2x12 = 1;  AUXR |= T2R; -> T2R = 1;   IE2 |= ES2; -> ES2 = 1;
        if(S2CON & S2TI) -> if( S2TI )    S2CON &= ~S2TI; -> S2TI =0;
        if (S2CON & S2RI) -> if ( S2RI )  S2CON &= ~S2RI; -> S2RI =0;
      e.S2CON &= ~S2TB8; -> S2TB8 = 0;
        把      if (!P)
                {
                    S2CON |= S2TB8;
                }
                else
                {
                    S2CON &= ~S2TB8;
                }
        直接换成一句
                S2TB8 = !P;
        同样:  if (P)
                {
                    S2CON |= S2TB8;
                }
                else
                {
                    S2CON &= ~S2TB8;
                }
        直接换成一句
                S2TB8 = P;
        S2CON |= S2TB8; -> S2TB8 = 1;
      uart.c完成,保存一下
    5.打开 usb.c在usb_init()里面有一句 IE2 |= EUSB; 把他改成 EUSB = 1; 完成,保存

    6.打开main.c,端口设置都在这里,还有其他设置,寄存器的操作8h和32g不同要仔细核对头文件定义方式
      a. sys_init()里面头二行换成:
            WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
            EAXFR = 1; //扩展寄存器(XFR)访问使能
            CKCON = 0; //提高访问XRAM速度
      b. 下面这两行
            P_SW1 |= UART1_S2;      //UART1(RxD_2/P3.6, TxD_2/P3.7)
            P_SW2 |= UART2_S1;      //UART2(RxD2/P1.0, TxD2/P1.1)
        改成:
            S1_S1 = 0;      //UART1 switch to, 00: P3.0 P3.1, 01: P3.6 P3.7, 10: P1.6 P1.7, 11: P4.3 P4.4
            S1_S0 = 1;
            S2_S = 0;       //选择串口2通道  0: P1.0, P1.1;  1: P4.6, P4.7

    7.keil打开原来的工程.uvproj,进入工程设置:
      a. Device 里面把芯片改为32g;
      b. Target 下设置内存模式为 XSmall,右边的4-Byte...勾上
      c. Output选择输出文件格式为HEX-386,别忘了左边打个勾
      c. 把各种文件的路径设置一下,不喜欢都聚在一起,分开存放比较清爽。头文件都在inc目录下必须要设置,不然keil找不到
       可以编译一下看看有没有遗漏的
       写入芯片看看,一举成功在系统硬件管理器里面多了两个串口
       
       读通高手的源代码是一个既痛苦又兴奋的过程,痛苦的是一开始很多东西无法理解--看不懂,兴奋的是经过不懈地努力逐渐投入了--懂了一点,
       今天把这个修改的过程记录下来重新演示一遍,实际上就是一个学习提高的过程,高兴

    点评

    感谢分享,屠龙刀以及STC-USB Link1D今日已安排寄出,期待您的测试好评  详情 回复 发表于 2023-3-30 13:27
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    9

    主题

    293

    回帖

    1696

    积分

    版主

    积分
    1696
    QQ
    发表于 2023-3-30 13:27:45 | 显示全部楼层
    晓奇 发表于 2023-3-30 11:41
    总结一下,我把修改部分整理出来给需要的同学参考,对转换其他代码有点用

    为了稳妥起见把原工程文件复制一 ...

    感谢分享,屠龙刀以及STC-USB Link1D今日已安排寄出,期待您的测试好评
    QQ:1463035472,微信:19952583954
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    550

    主题

    9209

    回帖

    1万

    积分

    管理员

    积分
    13926
    发表于 2023-3-30 18:12:53 | 显示全部楼层
    可以用STC-USB Link1D 来 SWD仿真 STC32G12K128的 USB,
    要仿真USB[D-/P3.0, D+/P3.1], 那 SWD仿真接口要设置到其他I/O !
    1.png


    1.png
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    3

    主题

    51

    回帖

    473

    积分

    中级会员

    积分
    473
    发表于 2023-3-31 15:52:09 | 显示全部楼层
    东西收到了,非常感谢。
    屠龙刀核心板子,两个字:工整。
    link1D插上就Ok,仿真功能连接试了一下也很顺利,单步等都很爽,第一次用硬件仿真,有点惊喜感的。
    现在剩下一个问题:脱机下载好需要慢慢来,摸索一下
    再次感谢STC的礼物!

    点评

    脱机下载也是非常方便的,我联系您  详情 回复 发表于 2023-3-31 16:08
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    9

    主题

    293

    回帖

    1696

    积分

    版主

    积分
    1696
    QQ
    发表于 2023-3-31 16:08:29 | 显示全部楼层
    晓奇 发表于 2023-3-31 15:52
    东西收到了,非常感谢。
    屠龙刀核心板子,两个字:工整。
    link1D插上就Ok,仿真功能连接试了一下也很顺利, ...

    脱机下载也是非常方便的,我联系您
    QQ:1463035472,微信:19952583954
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-4-26 04:53 , Processed in 0.075936 second(s), 72 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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