找回密码
 立即注册
查看: 495|回复: 7

使用USB-CDC库函数怎么读取一个字节?

[复制链接]
  • TA的每日心情
    无聊
    昨天 10:27
  • 签到天数: 122 天

    [LV.7]常住居民III

    3

    主题

    24

    回帖

    777

    积分

    高级会员

    积分
    777
    发表于 2023-11-17 10:55:40 | 显示全部楼层 |阅读模式
    STC_USB_LIBRARY 提供的函数只能读取多个字节,没见到有读取1字节的方法



    另外这个库都是封装成了lib,工具箱里提供的CDC例子里又不能实现不断电下载功能 @STCISP#
    包括VID PID因为用了lib库 也没办法修改,这个lib库不能放出源码么?

    能不能像新唐的51一样 有个 BSP包和例子,stc入门太难了。。。
    没啥基础的情况下 新唐可以很快上手写东西,stc 折腾好久都不行

    鱼和熊掌难兼得

    回复 送花

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 10:27
  • 签到天数: 122 天

    [LV.7]常住居民III

    3

    主题

    24

    回帖

    777

    积分

    高级会员

    积分
    777
     楼主| 发表于 2023-11-17 11:01:21 | 显示全部楼层
    用 avr 的片可以用 arduino,几乎不用啥基础都可以很容易的写东西。。。直接 Serial.read Serial.write
    stc用的头疼。。。
    gbx.jpg
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    552

    主题

    9492

    回帖

    1万

    积分

    管理员

    积分
    14059
    发表于 2023-11-17 11:06:33 | 显示全部楼层
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-5-5 08:35
  • 签到天数: 143 天

    [LV.7]常住居民III

    29

    主题

    558

    回帖

    2140

    积分

    荣誉版主

    积分
    2140
    发表于 2023-11-17 11:25:28 | 显示全部楼层

    不停电下载
    IAP_CONTR = 0x60

    截图202311171123003549.jpg
    回复 支持 1 反对 0 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:59
  • 签到天数: 143 天

    [LV.7]常住居民III

    27

    主题

    1343

    回帖

    4187

    积分

    论坛元老

    积分
    4187
    发表于 2023-11-17 11:47:30 | 显示全部楼层
    使用USB-CDC库函数,从USB给MCU发几个字节,就收到几个字节
    如果你想一个字节一个字节读取,发送时一个字节一个字节发送就可以
    1.         if (bUsbOutReady)
    2.         {
    3.             USB_SendData(UsbOutBuffer,OutNumber);   //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
    4.             
    5.             usb_OUT_done();
    6.         }
    复制代码

    if (bUsbOutReady) 判断条件里面就是收到数据,其中 OutNumber 是收到的字节数,UsbOutBuffer是接收数据存放的缓冲区。
    如果 OutNumber = 1 只收到一个字节数据,就是UsbOutBuffer第一字节的内容。
    使用USB CDC库进行通信已经是很简单的,几十行代码就能实现通信,不停电下载。

    视频回放, 2023/7/3期, USB 零基础实战,CAN应用,STC32位8051实战宣讲会
    https://www.stcaimcu.com/forum.php?mod=viewthread&tid=2990
    这期视频一步步介绍了USB CDC库的使用,包括数据通信,不停电下载演示。

    如果你想自己修改配置的话也可以,实验箱例程包,开天斧/屠龙刀例程包,一箭双雕USB转双串口例程包,里面都有一个例子“CDC(Communication Device Class)协议范例”,是完全开源的。
    修改配置需要对USB协议比较熟悉,论坛也有相应的教学视频可以观看:
    https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4526
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 10:27
  • 签到天数: 122 天

    [LV.7]常住居民III

    3

    主题

    24

    回帖

    777

    积分

    高级会员

    积分
    777
     楼主| 发表于 2023-11-17 13:54:55 | 显示全部楼层
    乘风飞扬 发表于 2023-11-17 11:47
    使用USB-CDC库函数,从USB给MCU发几个字节,就收到几个字节
    如果你想一个字节一个字节读取,发送时一个字节 ...

    电脑端是github开源的,我是基于avr闭源的功能,重写芯片代码
    老外写的代码,发送是 A0 , A是命令 后面读到的是 地址,还会有 A200,如果是我自己写上位机肯定不这么搞
    先读 A ,后面再读后续的,0 或者 其他值
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:59
  • 签到天数: 143 天

    [LV.7]常住居民III

    27

    主题

    1343

    回帖

    4187

    积分

    论坛元老

    积分
    4187
    发表于 2023-11-17 14:28:05 | 显示全部楼层
    happysoul 发表于 2023-11-17 13:54
    电脑端是github开源的,我是基于avr闭源的功能,重写芯片代码
    老外写的代码,发送是 A0 , A是命令 后面读 ...

    如果对方是一串数据发送的,那么接收的也是一串数据。接收完再进行解码也是一样的。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 10:27
  • 签到天数: 122 天

    [LV.7]常住居民III

    3

    主题

    24

    回帖

    777

    积分

    高级会员

    积分
    777
     楼主| 发表于 2023-11-21 14:47:44 | 显示全部楼层
    可以,但很恶心。。。
    就比如上位机要读取一个地址的数据发送3个字节 R 00 FF 的 hex数据 (R的hex表示读取,地址 0x00FF )
    switch(接收的第一个字节)
        case 'R':
            读取第二个字节,左移8位 <<8 , 加上第三个字节
            
    上面这个简单,还可以接受

    举例 写数据发送65个字节 W000000.............. 正常情况是 读取一个字节 W ,后面读取64位的0
    由于stc 只能收 64字节,所以第一包读取64,包含W和63个0,之后再读取一次1字节

    没办法先读取1个字节,再读取64个字节(可以改程序,但是。。开源的程序大改后就要自己维护一套私有的代码)

    用 lib库可以demo,或者基于现有收发规则开发上位机程序。对于已有上位机程序可能就需要各种大改造
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-18 15:51 , Processed in 0.342832 second(s), 60 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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