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)这个就不知道怎么替代了



SYS_DisableAllIrq//关闭中断

SYS_RecoverIrq//恢复中断

DelayMs(200);//毫秒延时

DelayUs(200);/微秒延时


只有登录才能回复,可以选择微信账号登录