-
长线电压释放问题
各位大佬好,做一个二总线通讯的设备,通过控制其中一条线的电压高低来通讯。现在遇到问题,怎样在长线下使得信号的下降沿加快速度。现在断线下可以正常收发,但是长线下下降沿受影响。有没有这方面经验的大佬指点一下
10610浏览量 16回复量 关注量 -
ZYNQ7020学UART总线AN3485模块 但串口测试小助手收发显示不出来
按照教学配套的视频操作,视频最后串口发送成功,但我的一点反应没有。使用配套的代码也没反应,我之前也没用过,按着给的照片接的线,不懂是不是接错了?
2908浏览量 2回复量 关注量 -
DS18B20 请各位大佬帮忙看一下哪里不正确,
void delay_us(uint count)//进入一次该函数需要11.95us { while(count--); //执行一次cout-- 需要6.5us } //即delay_us(2)的延时时间为6.5*2+11.95 void delay_ms(uint y) { uint x; for(;y>0;y--) { for(x=110;x>0;x--); } } uchar DS18B20Init(void) //send reset and initialization command { uchar i=0; DS=0; delay_us(82);//复位,至少延时480us,挂在总线上的DS18B20将被复位 DS=1;//释放总线, i=0; while(DS)//延时等待82us { delay_ms(1); i++; if(i>5) { return 0;//初始化失败 } } return 1;//初始化成功 } void writebyte(uchar byte) //write a byte to ds18b20 { uchar j; for(j=0;j<8;j++) { DS=0;//每次写入一个数据之前需要把总线拉低 _nop_();//15us内要释放总线,产生写时序 DS=byte&0x01;//写入字节从最低位开始 delay_us(10);//延时不少于60us,不可以大于120us DS=1;//释放总线,准备下一次数据写入 byte>>=1; } } uchar readbyte(void) //读字节 { uchar i,j,byte; for(i=0;i<8;i++) { DS=0; _nop_(); _nop_();//延时至少1us,产生读时序 DS=1; delay_us(1);//释放总线 j=DS;//数据采集, delay_us(10);//延时不少于60us byte=(j<<7)|(byte>>1); delay_us(6); } return byte; } void main() { int i,temp; uchar L,H; while(1) { DS18B20Init();//初始化 delay_ms(1); writebyte(0xcc); // address all drivers on bus,发送跳跃ROM指令 writebyte(0x44); // initiates a single temperature conversion,发送温度转换指令 DS18B20Init();//主机和DS18B20做任何通讯前需要对其初始化 delay_ms(1); writebyte(0xcc);//发送跳跃ROM writebyte(0xbe);//读取DS18B20暂存器值 L=readbyte();//读低俗暂存器的值 H=readbyte();//读高速暂存器的值 i=H; i<<=8;//H移到高8位 i|=L;//L写入i的低字节 if(i<0) { i=i-1; temp=~i; } else { temp=i; } i=temp*0.0625*10000 ;//浮点型数据转换 Display(i); } }
1017浏览量 3回复量 关注量