• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32F030C8串口复用的开漏输出

灵澈 2017-07-04 浏览量:4139
STM32F030C8串口复用的开漏输出问题

串口是接在PB6/PB7上的,因为串口需要和外部5V的芯片通讯,所以需要设置为开漏,

我也看到软件工程师已经设置了,但输出还是3.3V,串口复用设置成开漏难道还有什么窍门?

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 这两个引脚是容忍5V的

    关于这一点可以参考

    https://zhidao.baidu.com/question/813327849757663612.html


    捕获.JPG




    配置程序:



    void HAL_UART_MspInit(UART_HandleTypeDef* huart)
    {
    
      GPIO_InitTypeDef GPIO_InitStruct;
      if(huart->Instance==USART1)
      {
      /* USER CODE BEGIN USART1_MspInit 0 */
    
      /* USER CODE END USART1_MspInit 0 */
        /* Peripheral clock enable */
        __HAL_RCC_USART1_CLK_ENABLE();
      
        /**USART1 GPIO Configuration    
        PB6     ------> USART1_TX
        PB7     ------> USART1_RX 
        */
        GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
        GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
        GPIO_InitStruct.Pull = GPIO_PULLUP;
        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
        GPIO_InitStruct.Alternate = GPIO_AF0_USART1;
        HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
    
      /* USER CODE BEGIN USART1_MspInit 1 */
    
      /* USER CODE END USART1_MspInit 1 */
      }
    
    }            
    
    但为了提高安全性,一般都会使用光耦进行隔离或是上拉或是串个电阻。
    
    
    • 发布于 2017-07-04
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:9
  • 1、要复用所以才能使用PB6/PB7,因为这不是它第一功能引脚。

    2、开漏一般设置是用于和外部通信,比如spi,模拟i2c。


    TWIIHHUEQX`)[PP~K21J1RM.png

    3、开漏的时候电平是不确定的,靠外部器件把它拉高拉低。这就是一般的数字通信方式。

    • 发布于2017-07-04
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果出现这种情况,那就是某些引脚不允许使用开漏式输出,即使设置了也是这样

    STM32一般每个串口会对应两对IO,你可以使用另外一对,或者是额外加一个电平转换器,将其转换为5V

    • 发布于2017-07-04
    • 举报
    • 评论 0
    • 0
    • 0

  • STM32 I/O口本來就是輸出3.3V了...

    436.PNG

    只是部分I/O可以容忍5V輸入而已

    若只是簡單訊號輸出(非大負載),只要接一個NPN進行電流放大,然後產生5V壓降即可

    435.png

    注意此組態會是反邏輯,即IN=1,OUT是拉到地,而IN=0時,OUT拉到VCC

    以上

    • 发布于2017-07-04
    • 举报
    • 评论 0
    • 0
    • 0

  • 当引脚用于输出连接上拉电阻(也就是说当与5V系统接口时)时配置成开漏输出。不能的原因是不是这个引脚不能设置成5v。
    • 发布于2017-07-04
    • 举报
    • 评论 0
    • 0
    • 0

  • 开漏输出,需要加上拉电阻到5V
    才能使输出电压达到5V
    • 发布于2017-07-04
    • 举报
    • 评论 0
    • 0
    • 0

  • 需要在电路额外加一个电平转换器,即加一个5V上拉电阻​。

    这样才能设置成5V,感觉是楼主疏忽了。

    • 发布于2017-07-04
    • 举报
    • 评论 0
    • 0
    • 0

  • 楼主,这个还是硬件工程师的问题。

    您了测的那个3.3v 也不一定是准的。或者,硬件工程师把它上拉到了3.3v

    • 发布于2017-07-05
    • 举报
    • 评论 0
    • 0
    • 0

电子老工程师 回复了  :没有满足120Ω 回复

相关问题

问题达人换一批

STM32F030C8串口复用的开漏输出