你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

485通信在发送状态切换到接收状态多发送个0怎么回事

[复制链接]
人之颠 提问时间:2015-7-16 09:37 /
阅读主题, 点击返回1楼
收藏 评论21 发布时间:2015-7-16 09:37
21个回答
小耳朵1500922649 回答时间:2018-8-31 17:09:41
跳过MAX3430的485通讯,直接串口调试,先确保串口收发正常
小耳朵1500922649 回答时间:2018-8-31 17:11:49
qwb736727429 发表于 2018-8-31 14:39
那请问下,软件上是怎么写的?
我这边就是开发送时能,发送数据,判断传输完成之后开接收时能。485会收到 ...

void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)
{
  /* Check the parameters */
  assert_param(IS_USART_ALL_PERIPH(USARTx));
  assert_param(IS_USART_DATA(Data));
   
  /* Transmit Data */
  USARTx->TDR = (Data & (uint16_t)0x01FF);
}

static void RS485_SendData(uint8_t *buff,uint8_t len)
{
        RS485_TX;//切换为发送模式
        while(len--)
        {
                                        while(__HAL_UART_GET_FLAG(&huart2,UART_FLAG_TXE)==RESET);//等待发送区为空

                                        USART_SendData(USART2,*(buff++));
        }
                                while(__HAL_UART_GET_FLAG(&huart2,UART_FLAG_TC)==RESET);//等待发送完成
                                RS485_RX;//切换为接收模式
}
软件上用一个定时器器实现MODBUS,调用RS485_SendData函数即可
qwb 回答时间:2018-8-31 18:06:25
小耳朵1500922649 发表于 2018-8-31 17:11
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)
{
  /* Check the parameters */

好的,谢谢,程序差不多一样的。我电路图RN、EN本来是分开用两个IO控制的。看了你的电路,把他们并在一起,用一个IO口控制。现在可以了
Ich_Sun 回答时间:2018-9-1 10:10:17
本帖最后由 Ich_Sun 于 2018-9-1 11:25 编辑

问题解决了
huzhongadd 回答时间:2018-11-4 10:40:47

你好,请问怎么解决的呀? 我也碰到相同问题
人之颠 回答时间:2018-11-11 12:08:32
huzhongadd 发表于 2018-11-4 10:40
你好,请问怎么解决的呀? 我也碰到相同问题

都隔了三年了,差不多也忘记了,我看了一下以前的问题记录文档,幸好有对此问题的记录,当时好像是去掉了AB之间的120欧姆电阻就行了
人之颠 回答时间:2018-11-11 12:10:07
huzhongadd 发表于 2018-11-4 10:40
你好,请问怎么解决的呀? 我也碰到相同问题

这个是我的问题描述
QQ截图20181111120804.png
12

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版