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();//开中断
/*同时注意,芯片初始化的时候,请将信号脚拉高。*/
}