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(); }  

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

    秦天qintian0303 发表于 2024-4-9 11:21 波特率111111,你的串口助手可以设置这个值吗?   可以设置,使用SSCOM,可以自定义设置波特率,我也用波特率9600试过,也是上面这种情况

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

    没事用LIN为什么会检测到断开呢,还FE置位NE没有置位那表示没有发生帧错误而是接受到断开符,我用CH341的TX和RX短接,串口助手收发都正常,没问题,难道是我硬件有问题?

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

    本帖最后由 CC2503 于 2024-4-9 10:36 编辑 求助:STM32F103单使用串口收发时,收不到数据,SR寄存器的LBD:LIN断开标志,RXNE读数据寄存器非空,IDLE监测到总线空闲,FE帧错误以上均被硬件置位,NE没有置位,接收到的数据一直为0,找不到原因了。 使用的USART1 RX PA0浮空输入,TX PA9复用推挽输出 速度10M,系统时钟16M 波特率111111,串口收发使用的CH341 12M,整个系统只是使用了串口收发一个功能。 以下为DEBUG: 初始化后USART1各寄存器状态 收到收据后SR寄存器状态 发送数据后SR寄存器状态 USART1部分代码如下: void USART1_Conf(void) {     USART1->CR1    &=    ~USART_CR1_M;//一个起始位,8个数据位,n个停止位          USART1->CR2    &=    ~USART_CR2_STOP;//设置1个停止位          USART1->BRR    &=    ~USART_BRR_DIV_Mantissa;//整数部分清0     USART1->BRR    |=    (9<<4);//设置整数部分 9 整数加小数部分为9.0000     USART1->BRR    &=    ~USART_BRR_DIV_Fraction;//小数部分清0          USART1->CR1    |=    USART_CR1_UE;//USART1使能     USART1->CR1    |=    USART_CR1_RE;//使能接收     USART1->CR1    &=    ~USART_CR1_RWU;//接收器处于正常工作模式 } int main(void) {     unsigned long u;          RCC_Conf();     GPIO_Conf();     USART1_Conf();     while(1)     {         while(!(USART1->SR    &    USART_SR_RXNE));//等待收到数据可以读出         u=USART1->DR;                  USART1->CR1    |=    USART_CR1_TE;//使能发送         while(!(USART1->SR    &    USART_SR_TC));//等待发送完成                  while(!(USART1->SR    &    USART_SR_TXE));//等待发送数据寄存器空                  USART1->DR    =u;//数据写进DR发送寄存器中         while(!(USART1->SR    &    USART_SR_TC));//等待发送完成                  while(!(USART1->SR    &    USART_SR_TXE));//等待发送数据寄存器空         USART1->CR1    &=    ~USART_CR1_TE;//关闭发送     }     } 

  • 2024-04-01
  • 回复了主题帖: 新编电子电路大全 共3卷

    感谢分享,对基础学习很有帮助,多看一看受益颇深

  • 回复了主题帖: 《晶体管电路设计》日本 池原典利著 中文版

    感谢分享,参考借鉴以下,对基础学习很有帮助,大好人

最近访客

< 1/1 >

统计信息

已有2人来访过

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

留言

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


现在还没有留言