用verilog描述的i2c代码二线I2CCMOS串行EEPROM的设计是根据I2C协议,以及EEPROMAT24C02的datasheet来进行设计的。
基于I2C的设计很多,归根到底是控制SDA线及SCL线来让设备间进行通信。
它有固定的帧格式。
本设计中Sda数据线与各模块是通过寄存器来进行数据的输入输出。
EEPROM模块是进行行为级描述的,它是根据具体芯片来写的模仿逻辑,不可综合。
EEPROM_WR是读写控制程序,是通过开关组合电路和控制时序电路组成的。
开关组合电路其实就是选择在SDA及DATA上的数据,根据信号来选择输出。
具体的控制时序电路就是一个状态机来完成。
Signal模块是测试用的,以前只接触过一些简单的testbench,在这次实验中,由于testbench理解的不透彻,用modelsim仿真的时候地址和数据线处于不定态,但是整个的时序是正确的。
2017/9/13 13:03:32 174KB i2c verilog
1
Kinect2.0人脸辨认及面部帧的获取,表情,骨架Kinect2.0人脸辨认及面部帧的获取,表情,骨架
2017/6/2 11:03:30 52.49MB 人脸识别2d
1
运用序列帧(单张、图集)或骨骼动画创建动画Clip运用示例的Demo
2017/6/20 22:20:35 1.68MB 骨骼动画 序列帧动画 CocosCreator 图集
1
(1)按原理图连接好电路,其中8254计数器用于产生8251的发送和接收时钟,TXD和RXD连在一同。
(2)编程:从键盘输入一个字符,将其封装成为数据帧后发送出去,并进行差错检测及奇偶校验,再接收回来在屏幕上显示,实现自发自收。
1
ov7725带FIFO不断地将图像显示到屏幕上,在一帧产生中断后,主函数再通过对屏幕的RGB色彩读取,转换成HSL值,通过阈值判断,颜色婚配,腐蚀中心,就可以进行图像识别,适用于STM32野火开发板ov7725摄像头
2015/11/3 16:55:54 2.83MB stm32 ov7725
1
《KinectforWindowsSDKv20开发笔记九面部帧获得》所附带资源
2017/2/27 3:41:55 14KB C++ Kinect
1
经过这几天的学习与调试,终于在STM32F103VCT6+W5500(SPI1)+Freemodbus平台上,实现Modbus-TCP协议的功能。
其实很简单,只需熟悉Modbus-RTU通讯,明白Modbus帧的结构等,Modbus-TCP只是在原来的帧结构上加个头,去个尾,然后用TCP传输即可。
关键的内容就是怎样获取W5500新接收的数据包,并发送给Modbus事件状态机驱动协议的执行,数据的处理。
主要参考Freemodbusdemo里的Modbus-TCP协议实现的思路,获取缓存区的读写与发送响应。
2015/4/12 12:19:47 376KB STM32 W5500 Modbus-TCP
1
杨波,周亚宁著出版社:人民邮电出版社ISBN:9787115204400出版时间:2009-05-01版  次:1页  数:336装  帧:平装开  本:16开 《大话通信:通信基础知识读本》是一本关于通信的基础知识读物,内容涉及通信的各个领域,从通信网络的基础架构到包括语音通信、数据通信、移动通信在内的各类通信技术,用独特的行文风格,以风趣、幽默的语言向读者讲述通信的发展历程,以独特的视角说明通信的目的和方式,用漫画式的插图协助读者理解晦涩、枯燥的技术,向通信爱好者展示了通信高科技的巨大魅力
2018/10/6 14:57:50 41.64MB 大话通信 通信
1
模仿数据链路层的gobackn协议/*该协议是搭载ack的回退n步协议*/#include#include"protocol.h"#definemax_seq7#defineflag126#defineESC100#definewait_time2700 //发送计时器等待的时间#defineack_wait_time280staticintphl_ready=0;unsignedcharbuf[max_seq+1][270];unsignedcharack[8];//发送空的ack帧unsignedcharin_buf[600],last_buf[520];//接收时的缓冲区;去掉冗余之后的缓冲区,为防备因误码两帧合并为一帧而定义了很大一个数组intnbuffered=0;//发送的帧数intbuf_size[max_seq+1];//记下以发送各帧的帧长intnext_frame_to_send=0;intframe_in_phl=0;//用于成帧intframe_expected=0;intack_expected=0;intbetween(inta,intb,intc){ if(((a<=b)&&(b<c))||((c<a)&&(a<=b))||((b<c)&&(c<a))) return1; elsereturn0;}//判断帧尾,防止出现误判escescflag为数据的情况intend_flag(intin_len){ intcount=0; inti; if(in_len=0;i--)//记录flag前的esc数目 count++; returncount%2;//若flag前的esc为偶数,则为帧尾}//成帧函数--数据帧voidsend_frame(char*my_buf,intlen){ intn; buf[frame_in_phl][0]=(frame_expected+max_seq)%(max_seq+1); //ack buf[frame_in_phl][1]=frame_in_phl; //发送帧的帧号 for(n=0;n<len;n++) buf[frame_in_phl][n+2]=my_buf[n]; //将处理过的新帧赋值到缓冲区中 len=len+2; *(unsignedint*)(buf[frame_in_phl]+len)=crc32(buf[frame_in_phl],len); //在原始帧的基础上加检验和 buf_size[frame_in_phl]=len+4; //记录当前帧的长度,包括3个帧头,4个检验和 nbuffered=nbuffered+1; //缓冲区占用数加一 frame_in_phl=(frame_in_phl+1)%(max_seq+1);}//成帧函数--ack帧voidsend_ack() //ack帧的处理{ ack[0]=(frame_expected+max_seq)%(max_seq+1); ack[1]=max_seq+10; //ack帧的序号位,使ack[1]==frame_expected恒不成立 *(unsignedint*)(ack+2)=crc32(ack,2); //在原始帧的基础上加检验和}//主函数intmain(intargc,char**argv){intevent,arg,n,m,i,j,len=0,in_len=0; unsignedcharmy_buf[260]; intphl_wait=0;//在物理层中还没有被发送的帧protocol_init(argc,argv);enable_network_layer();for(;;){event=wait_for_event(&arg);switch(event){caseNETWORK_LAYER_READY:
2019/7/26 21:18:43 425KB go back n gobackn
1
实现一个带参数控制五角星外形的绘制函数,并在不同位置绘制多个大小、颜色不同的五角星。
(要求采用随机数生成大小和颜色,大小需要限定在一个范围内,每帧五角星也发生变化)在VC6.0的环境下利用opengl绘制五角星,半径大小和颜色用了随机数,所以每个五角星的大小颜色实现了变化,也可以删除变成静态的,代码里有详细注释,可以自己修改
2018/11/23 10:26:04 1.23MB 绘制五角星
1
共 543 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡