完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
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个回答
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
516 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2901 浏览 2 评论
2396 浏览 1 评论
860浏览 2评论
CH32F103C8T6使用当前官网上的CDC例程会出现设备描述符请求失败
402浏览 1评论
678浏览 1评论
riscv-none-embed-objcopy: \'PWM_Output.elf\': No such file这个咋解决,
412浏览 1评论
511浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 16:18 , Processed in 1.051070 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号