SIF协议

  1. 一次传输一帧数据,传输结束后要求线路空闲状态为低电平,每次传输需一次性完整传输所有数据。
  2. 数据的电平遵守 TTL 规范。

1.1 信号定义

Tosc定义: 250us <Tosc<2ms,推荐值:500us

1、同步信号:

2、Bit(0)表示方法:

3、Bit(1)表示方法:

1.2 代码实现

需要定义一个中断定时器,定时器周期为一个Tosc,中断处理函数判断是否有数据需要发送。下面是发送数据的处理函数。

#define SIF_VERSION 1
#define SIF_SYNC  53
#define SIF_SEND_COUNT 3volatile static uint8_t sif_sync_tosc  = 0;
volatile static uint8_t sif_send_tosc = 0;
volatile static uint8_t state_mode = 0;
volatile static int8_t bit_cnt = 7;
volatile static uint8_t byte_cnt = 0;static uint8_t result[64] = {0};//需要发送的数据
volatile static uint8_t length = 0;//数据的长度static void sif_send_data_handle(uint8_t state)
{switch(state){case SYNC_SIGNAL://同步模式if (sif_sync_tosc < SIF_SYNC - 2) {sif_turn_off();} else {sif_turn_on();}sif_sync_tosc++;if (sif_sync_tosc >= SIF_SYNC){state_mode = SEND_DATA;sif_sync_tosc = 0;bit_cnt = 7;byte_cnt = 0;sif_send_tosc = 0;}break;case SEND_DATA:    //发送数据 static uint8_t res;            uint8_t count = SIF_SEND_COUNT;static uint8_t nums = sizeof(uint8_t) * 8;uint8_t *p = (uint8_t *)result;sif_send_tosc = sif_send_tosc % count;uint8_t data = (p[byte_cnt] >> bit_cnt) & 0x1;if (data){if (sif_send_tosc == 0){sif_turn_off();sif_send_tosc ++;}else if (sif_send_tosc == 1){sif_turn_on();sif_send_tosc ++;} else {sif_send_tosc = 0;}}else{if (sif_send_tosc == 0){sif_turn_off();sif_send_tosc++;}else if (sif_send_tosc == 2){sif_turn_on();sif_send_tosc = 0;} else{sif_send_tosc++;}}if (sif_send_tosc == 0){if (--bit_cnt < 0){byte_cnt++;bit_cnt = 7;}if (byte_cnt >= length){state_mode = SEND_DATA_COMPLETE;break;}}break;case SEND_DATA_COMPLETE://数据发送完成,将标志位清0state_mode = 0;sif_turn_off();length = 0;memset(result, 0, sizeof(result));break;default:break;}
}

sif一线通输出协议以及代码实现相关推荐

  1. LDR6290-QFN28 做Type-C台式显示器 一线通大功率PD3.0 快充与在线升级的运用

    LDR6290 PD3.0芯片,是专门为解决大功率台式显示器一线通.随着市场USB-C HOST端设备的实用性普及,周边设备也跟着相应改变. 从实用性出发,LDR公司在2021年7月推出了最新的一线通 ...

  2. HDMI/type-c一线通EDP驱动板|应用高清便携显示器支持2K/1080P

    一线通,便携显示屏应用 输入端1080P.4K30.4K60HZ这三种规格,输入端HDMI 由4路信号数据通道组成,支持1.62Gbps.2.7Gbps.5.4Gbps链路速率.内置可选SSC功能可降 ...

  3. android加载efi分区,高通Android UEFI XBL 代码流程分析

    高通Android UEFI XBL 代码流程分析 背景 之前学习的lk阶段点亮LCD的流程算是比较经典,但是高通已经推出了很多种基于UEFI方案的启动架构. 所以需要对这块比较新的技术进行学习.在学 ...

  4. “虽无彩凤双飞翼,确有巧处一线通”——明基PD2710QC显示器体验

    轻便还要全面,专业兼顾优雅,移动办公时代配合笔电的最佳方案大概如是吧 作为一枚程序猿哥哥,从通勤上班到晚上回家,day by day 每天形影不离的就是一台笔记本电脑.如果说要给我的笔电搭配一台显示器 ...

  5. 好物推荐 | 新一代一线通投影仪方案

    现在很多年轻人都偏向于购买投影仪而不是电视机,那么如何选择一款性价比高的投影器,就成了网友们比较头疼的一个问题了,接下来我们一起来看一下具体要如何选择一款性价比高的投影仪吧! 据欧盟最近发布指令消息, ...

  6. STM32 Ymodem 协议及代码解析

    点击左上角的"关注",定期更新 STM32 最新资讯,总有你想要的信息! STM32 Ymodem 协议及代码解析 文章导图: 1. Ymodem 协议传输效果 1.1 发送端软件 ...

  7. 12小时进制的时间输出的编辑代码

    关于时间输出的编辑代码个人思考了很久,包括顺序,进位之类的,求完善和纠错 public class yunsuanfu {public static void main(String[] arg){d ...

  8. ML之Clustering之LPA:LPA算法主要思路、输出结果、代码实现等相关配图之详细攻略

    ML之Clustering之LPA:LPA算法主要思路.输出结果.代码实现等相关配图之详细攻略 目录 LPA算法的主要思路 LPA算法的输出结果 LPA算法的代码实现 LPA算法的主要思路 更新-- ...

  9. Asp.net 2.0 中获取控件输出的Html代码 (转)

    将Asp.net 控件的呈现html获取,在不少场合会用到,比如生成静态页时 以下代码选自 Asp.net 2.0 高级编程 转自:Asp.net 2.0 中获取控件输出的Html代码 public  ...

  10. 在命令提示符输出c语言代码_您可以在Windows命令提示符中更改输出缓冲区的大小吗?...

    在命令提示符输出c语言代码 If you are someone who loves using the Windows Command Prompt, you may have found your ...

最新文章

  1. python数组越界_python 整数越界问题详解
  2. mybatis传入list、array等数据集合的处理
  3. 【转载】 regsvr32 注册dll
  4. 修改xp boot.ini文件
  5. python 单元测试_Python 单元测试(unittest)
  6. css里calculate,calc() ---一个会计算的css属性
  7. 深度学习(十二)——Winograd(2)
  8. 监测ASP.NET MVC 网站
  9. 字节跳动专家会_字节跳动招聘直播策略运营专家/经理/海外财务AR BP,ACCA优先...
  10. 亚洲诚信亮相2018天翼智能生态博览会
  11. PHP查询文件扩展名
  12. sqlserver2008的数据库自动备份方法(转载)
  13. 项目中一些零碎化总结的
  14. 基于 DSP+FPGA 的排爆机器人控制系统设计与实现
  15. 高小英和张东健1998年合作出演过爱情片《恋风恋歌
  16. 【练习八 结构体(强化)编程题4. 看电影】
  17. [转]基于POI的功能区划分()
  18. C语言编程 - 清空键盘缓冲区
  19. Linux命令ls是什么缩写,linux基本命令ls、pwd、cd、mkdir等
  20. Windows11镜像下载及安装

热门文章

  1. ArcGIS勘测定界三调版发布
  2. Camera IIC总线
  3. MATLAB计算卫星相对位置、速度和加速度
  4. 【历史上的今天】5 月 30 日:Risc 架构之父出生;ATT 宣布推出视频电话系统;Windows NT 3.51 发布
  5. sql server安全管理-新建登录名-sql和混合身份验证模式#windows域和用户名的查找#不是有效的 Windows NT 名称。请给出完整名称: <域\用户名>。
  6. CSS实现单行、多行文本溢出显示省略号(…)
  7. think PHP前台模板,thinkphp5(二)前台模板的引入
  8. java创建mapping_详解MyBatis Generator自动创建代码(dao,mapping,poji)
  9. Cortex-M3/M4内核处理器一次中断事件可能产生两次中断问题
  10. 高维统计理论 估计量的Minimax误差分析 基础理论