芯查查logo
  • 数据服务
    1. 新产品
    2. 物料选型
    3. 查替代
    4. 丝印反查
    5. 查品牌
    6. PCN/PDN
    7. 查方案
    8. 查代理
    9. 数据合作
  • SaaS/方案
      SaaS产品
    1. 供应链波动监控
    2. 半导体产业链地图
    3. BOM管理
    4. 解决方案
    5. 汽车电子
    6. 政府机构
    7. 数据API
  • 商城
  • 行业资讯
    1. 资讯
    2. 直播
  • 论坛社区
    1. 论坛
    2. 学习
    3. 测评中心
    4. 活动中心
    5. 积分商城
  • 查一下
  • 开通会员
用STC8H8K64U制作的USB转TTL工具
原创 精华 发布时间:2024/01/29 08:38
版块:
PCB设计
简介:利用STC芯片做的一个USB转TTL工具

 

前言:之前在使用STC8H芯片做项目的时候发现,该款STC芯片,已经支持了USB功能,每次传输的字节只要不超过64字节就可以,内部还有几个缓冲区供客户使用,可以满足日常的需求。

 

下面我简单的介绍下自己的设计思路:

1:主控部分

使用STC8H做为主控,设计的时候只需要注意将引脚8设置一个1uf电容,引脚9设计的电阻就可以。由于没有太多的功能,所以选用的LQFP_32封装就可以,这样还有很多引脚没有用到,在外扩功能的时候也是可以满足要求的。

2:下载程序接口

由于使用P3.0和P3.1做为USB的接口,但是芯片初次下载程序的使用也是需要这两个接口的,务必将这下载接口引出,否则程序下载就会出现问题。

3:电源部分,按键部分。

以上两个部分是预留的无线通讯功能,选用的是E32-400T20S芯片。手册上面介绍的在空旷地方传输距离可以达到3km,穿墙能力也是满强的,这样调试起来就会方便很多,再也不需要太多的线缆了。

4:状态显示部分:

显示程序是否正常运行,主机从机的状态显示。

二:软件部分:

串口初始化:

//========================================================================
// 函数: void UART2_config(u8 brt)
// 描述: UART2初始化函数。
// 参数: brt: 选择波特率, 2: 使用Timer2做波特率, 其它值: 无效.
// 返回: none.
// 版本: VER1.0
// 日期: 2014-11-28
// 备注: 
//========================================================================
void UART2_config(u8 brt)    // 选择波特率, 2: 使用Timer2做波特率, 其它值: 无效.
{
   /*********** 波特率固定使用定时器2 *****************/
   if(brt == 2)
   {
       SetTimer2Baudraye(65536UL - (MAIN_Fosc / 4) / Baudrate2);

       S2CON &= ~(1<<7);   // 8位数据, 1位起始位, 1位停止位, 无校验
       IE2   |= 1;         //允许中断
       S2CON |= (1<<4);    //允许接收
       P_SW2 &= ~0x01; 
       P_SW2 |= 0;         //UART2 switch to: 0: P1.0 P1.1,  1: P4.6 P4.7

       B_TX2_Busy = 0;
       TX2_Cnt = 0;
       RX2_Cnt = 0;
   }
}

芯片进入HID模式代码:

//========================================================================
// 函数: void KeyResetScan(void)
// 描述: P3.2口按键长按1秒触发软件复位,进入USB下载模式。
// 参数: none.
// 返回: none.
// 版本: VER1.0
// 日期: 2022-6-11
// 备注: 
//========================================================================
void KeyResetScan(void)
{
   if(!P32)
   {
       if(!Key_Flag)
       {
           Key_cnt++;
           if(Key_cnt >= 1000)        //连续1000ms有效按键检测
           {
               Key_Flag = 1;        //设置按键状态,防止重复触发

               USBCON = 0x00;      //清除USB设置
               USBCLK = 0x00;
               IRC48MCR = 0x00;
               
               delay_ms(10);
               IAP_CONTR = 0x60;   //触发软件复位,从ISP开始执行
               while (1);
           }
       }
   }
   else
   {
       Key_cnt = 0;
       Key_Flag = 0;
   }
}

 

主程序:

    while (1)
   {
       delay_ms(1);
                
       KeyResetScan();   //长按P3.2口按键触发软件复位,进入USB下载模式,不需要此功能可删除本行代码

       if(DeviceState != DEVSTATE_CONFIGURED)  //等待USB完成配置
////                        HostLED = 0 ;
////                else 
////                      SlaveLED  = 0 ;
       continue;
/***************************主机调用函数部分*********************************/
       if (bUsbOutReady)
       {
                     HostLED = 0 ;
                    SlaveLED = 1 ;
                     usb_OUT_done();    //接收应答(固定格式)
/*通过串口2将USB需要发送的数据发送到无线模块*/                    
                     for(SendPoint = 0 ; SendPoint <OutNumber ;SendPoint++ )
                        {
                            UART2_TxByte(UsbOutBuffer[SendPoint] );
                        }
       }
//                else
//                {
//                 
//                     HostLED = 1 ;
//                    SlaveLED = 0 ;
//                
//                
//                }
            
                if(Rx2_Pack_Flag)   //收到数据, 发送空闲
       {                
                  Rx2_Pack_Flag = 0 ;
                  USB_SendData(RX2_Buffer,RX2_Cnt);
                    RX2_Cnt = 0 ;
       }    

}

 

 

实物图片如下:

调试视频:由于初版只是实现了USB转TTL的功能,后期增加了无线通讯的功能,再将设计资料上传。

一起学习
2024/01/29 08:38
  • 举报
😁😂😃😄😅😆😉😊😋😌😍😏😒😓😔😖😘😚😜😝😞😠😡😢😣😤😥😨😩😪😫😭😰😱😲😳😵😷😸😹😺😻😼😽😾😿🙀🙅🙆🙇🙈🙉🙊🙋🙌🙍🙎🙏✂✅✈✉✊✋✌✏✒✔✖✨✳✴❄❇❌❎❓❔❕❗❤➕➖➗➡➰🚀🚃🚄🚅🚇🚉🚌🚏🚑🚒🚓🚕🚗🚙🚚🚢🚤🚥🚧🚨🚩🚪🚫🚬🚭🚲🚶🚹🚺🚻🚼🚽🚾🛀Ⓜ🅰🅱🅾🅿🆎🆑🆒🆓🆔🆕
@好友

全部评论

加载中
游客登录通知
已选择 0 人
自定义圈子
移动
发布帖子
发布动态
发布问答
发布者
聪聪哥哥
最新帖子
萤火工场GD32VW553-IOT测评+蓝牙串口透传树莓派pico 2测评 - 初体验【工程师经验】+ 飞线【开源】zvs142857 2.1A,3A快充 充电宝迷你UC3842 开关电源优化全解析:攻克常见难题,提升性能
热门版块
查看更多
电子元器件
汽车电子工程师论坛
工业电子专区
新手入门指南
单片机/MCU论坛
PCB设计
开源项目
每日打卡
电子DIY
维修技术

248

收藏

分享

微信扫码
分享给好友

评论