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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版