OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5043|回复: 12

关于双机串口通信

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2015-8-17
在线时间
0 小时
发表于 2015-8-18 11:14:20 | 显示全部楼层 |阅读模式
5金钱
请教一下。我参照例程将两块单片机的usart1通信激活了。两块单片机与电脑串口助手收发都没有问题。但是我把两个板子usart1的tx,rx对接,无法实现通信,就是说双方都根本收发不到对方的任何数据。可否提一点建议。
程序配置,两块板的串口初始化程序一样,具体如下:

void uart_init(u32 bound){

  GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
 
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); 
  
//USART1_TX   GPIOA.9
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 
  GPIO_Init(GPIOA, &GPIO_InitStructure);//GPIOA.9
   
  //USART1_RX  GPIOA.10
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOA, &GPIO_InitStructure);//GPIOA.10  

  //Usart1 NVIC 
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; 
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 
NVIC_Init(&NVIC_InitStructure); 
  
 

USART_InitStructure.USART_BaudRate = bound;
USART_InitStructure.USART_WordLength = USART_WordLength_9b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_Even;
//USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; 

  USART_Init(USART1, &USART_InitStructure); 
  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
  USART_Cmd(USART1, ENABLE);               

}
两块板调用时波特率都是9600,字长为9bits,偶校验。 由于分别于电脑通过ft232连接调试没有问题,个人认为程序应该没有问题。但是双机相连通信没有任何信号。于是我就毫无头绪了。希望大家有想法的话点拨一下,十分感谢。

最佳答案

查看完整内容[请看2#楼]

不需要,STM32都是CMOS电路并且也都是3.3V器件。不需要特殊转换。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2015-8-18 11:14:21 | 显示全部楼层
美丽的时光机器 发表于 2017-11-18 10:16
板子的TX和RX引脚和电脑上位机通信时候使用了电平转换,也就是TTL电平经过CH340转换成了USB电平然后才和电 ...

不需要,STM32都是CMOS电路并且也都是3.3V器件。不需要特殊转换。
十六进制带我飞。
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13114
金钱
13114
注册时间
2012-11-26
在线时间
3812 小时
发表于 2015-8-18 12:41:39 | 显示全部楼层
用的什么协议?
学无止境
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-8-18 12:47:38 | 显示全部楼层
共地了么???
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2015-8-17
在线时间
0 小时
 楼主| 发表于 2015-8-18 13:52:02 | 显示全部楼层
谢谢大家回复。我注意了共地。而且是tx-rx,rx-tx连接。但是就是出现上述问题
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-8-18 23:10:33 | 显示全部楼层
回复【5楼】jj_stm:
---------------------------------
那估计是代码处理的问题了,呵呵
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
发表于 2017-11-18 10:16:28 | 显示全部楼层
板子的TX和RX引脚和电脑上位机通信时候使用了电平转换,也就是TTL电平经过CH340转换成了USB电平然后才和电脑通讯,你把两个板子的TX和RX引脚直接接在一起,没有经过电平转换,用的是TTL电平,所以我在这里有个疑问,STM32通过串口进行双机通讯需要电平转换芯片吗?
没有脑袋
回复

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
发表于 2017-11-18 10:42:38 | 显示全部楼层
TTL电平是不能用来通讯的哦  必须进行电平转换
没有脑袋
回复

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
发表于 2017-11-18 10:53:25 | 显示全部楼层
更新,TTL电平可用来做原生串口通信,WIFI、GSM、GPS等就是用原生串口通信。。。。。
没有脑袋
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2017-10-24
在线时间
15 小时
发表于 2017-11-26 11:04:43 | 显示全部楼层
帮顶,自己这两天也在弄这个
回复

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2017-11-26 22:30:33 | 显示全部楼层
可能的问题:线坏了
测试一下吧。

十六进制带我飞。
回复

使用道具 举报

82

主题

589

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1255
金钱
1255
注册时间
2017-11-18
在线时间
296 小时
发表于 2017-11-27 08:00:14 | 显示全部楼层
DreamWaterPro 发表于 2017-11-26 22:29
不需要,STM32都是CMOS电路并且也都是3.3V器件。不需要特殊转换。

是的   后来我才整明白
没有脑袋
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2017-12-15
在线时间
4 小时
发表于 2018-3-22 14:59:28 | 显示全部楼层
是不是加上:USART_ClearFlag(USART1,USART_FLAG_TC); 试试!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 02:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表