CC2503

  • 2025-01-27
  • 回复了主题帖: STM32F103单使用串口收发时,收不到数据,SR寄存器的LBD,FE置位,NE没有置位

    问题解决了,想起帖子的时间太久了,串口收的一个标志放在循环体的外面导致的

  • 回复了主题帖: STC98LE52模拟 I2C通信 这个波形为什么会出现中间的电平,怎么消除?

    问题解决了,这个板子驱动5个设备,而且都是相同的I2C地址,这样应答时就会冲突

  • 2024-04-29
  • 发表了主题帖: STC98LE52模拟 I2C通信 这个波形为什么会出现中间的电平,怎么消除?

    STC98LE52模拟 I2C通信 带1个负载,上拉电阻是R202,这个波形为什么会出现中间的电平,怎么消除啊?求帮助 图后附模拟I2C程序                                                  //状态标志 bit ack;                     //应答标志位 void Delay50us()        //@12.000MHz {     unsigned char i;     _nop_();     i = 22;     while (--i); } //                     起动总线函数                //函数原型: void  Start_I2c();   //功能:       启动I2C总线,即发送I2C起始条件.    void start_i2c() {   sda=1;           //发送起始条件的数据信号   sck=1;  Delay50us();    sda=0;           //发送起始信号  Delay50us();        sck=0;           //钳住I2C总线,准备发送或接收数据   Delay50us(); } //        结束总线函数                //函数原型: void  Stop_I2c();   //功能:       结束I2C总线,即发送I2C结束条件. void stop_i2c() {   sda=0;          //发送结束条件的数据信号   sck=1;          //结束条件建立时间大于4μs  Delay50us();   sda=1;          //发送I2C总线结束信号  Delay50us(); } //                 字节数据传送函数                //函数原型: void  SendByte(unsigned char c); //功能:  将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对 //     此状态位进行操作.(不应答或非应答都使ack=0 假)      //     发送数据正常,ack=1; ack=0表示被控器无应答或损坏。 void  sendbyte(unsigned char c) {  unsigned char BitCnt;    for(BitCnt=0;BitCnt<8;BitCnt++)          //要传送的数据长度为8位     {      if((c<<BitCnt)&0x80)sda=1;           //判断发送位        else  sda=0;                      sck=1;             //置时钟线为高,通知被控器开始接收数据位      Delay50us();              sck=0;      }         Delay50us();     sda=1;              //8位发送完后释放数据线,准备接收应答位    Delay50us();       sck=1;     Delay50us();     if(sda==1)ack=0;             else ack=1;      //判断是否接收到应答信号     sck=0;     Delay50us(); }  

最近访客

< 1/1 >

统计信息

已有2人来访过

  • 芯积分:6
  • 好友:--
  • 主题:3
  • 回复:13

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言