WCH沁恒单片机
直播中

vinww特烦恼

9年用户 1220经验值
擅长:存储技术
私信 关注
[问答]

CH571f要对接一个外设,通讯协议延时600us这个怎么处理?

CH571f要对接一个外设,通讯协议  延时600us 这个怎么处理


/*******************************************************************************
- 函数说明:一线通数据发送【注意调试的时候,用示波器或者逻辑分析仪看一下脉冲宽度】
- 隶属模块:内部
- 参数说明:dat = 待发送的数据
- 返回说明:无
********************************************************************************/

#define IO1_HIGH() JL_PORTA->DIR &= ~BIT(6);JL_PORTA->OUT |=  BIT(6);

#define IO1_LOW() JL_PORTA->DIR &= ~BIT(6);JL_PORTA->OUT &= ~BIT(6);



void oneline_send_one_data(u8 dat)

{

    u8 i = 0 ;

    IO1_LOW() ;/*现将总线拉低*/

    udelay(5000) ;/*延时6MS --- 这里就是发起通讯的起始信号*/

    CPU_SR_ALLOC();//关中断--芯片不同,可能接口不同

    OS_ENTER_CRItiCAL();//关中断

    for(i=0 ; i<8 ;i++){

        if(dat & 0x01){

            IO1_HIGH() ;

            udelay(500);/*延时600us*/

            IO1_LOW();

            udelay(170) ;/*延时200us*/

        }else{

            IO1_HIGH() ;

            udelay(170);/*延时200us*/

            IO1_LOW();

            udelay(500) ;/*延时600us*/

        }

        dat = dat >> 1 ;/*发送的时候,先发送最高位,再发送次高位,以此类推*/

    }

    IO1_HIGH() ;/*空闲时将该脚拉高即可*/

    OS_EXIT_CRITICAL();//开中断

    /*同时注意,芯片初始化的时候,请将信号脚拉高。*/

}

  
  CPU_SR_ALLOC();//关中断--芯片不同,可能接口不同
OS_ENTER_CRITICAL();//关中断
这两个怎么处理,


DelayMs(200);  CH571f可以这么用    udelay(500)这个就不知道怎么替代了


回帖(1)

李玉华

2022-9-6 09:56:43
SYS_DisableAllIrq//关闭中断
SYS_RecoverIrq//恢复中断
DelayMs(200);//毫秒延时
DelayUs(200);/微秒延时
举报

更多回帖

发帖
×
20
完善资料,
赚取积分