搜索
bottom↓
回复: 24

求教,stm8如何去使用串口单线半双工模式呢?(解决了)

[复制链接]

出0入0汤圆

发表于 2012-12-18 12:17:02 | 显示全部楼层 |阅读模式
本帖最后由 cyxavr 于 2012-12-20 08:49 编辑

    求教,stm8如何去使用串口单线半双工模式呢?
  因目前有一东东要用到一根线来收发数据,这里想到了,stm8的串口单线半双工,但怎么搞都是只能发不能收的。
  程序昨晚在家忘了拷过来了。
  还有串口一根线收发,那么电脑串口那端两根线的,如何去改成一根呢?
  有用过的大神们,指条明路走走。     

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2012-12-19 11:11:42 | 显示全部楼层
自己来消除0回复!

出0入0汤圆

发表于 2012-12-19 11:28:09 | 显示全部楼层
有个思路,就是接收器一般高阻输入,可以一直工作状态,发送的时候,忽略接收器的数据,数据线做个上拉电阻,发送器发送数据0 的时候,将数据线拉到低电平,发送1的时候,相当于高阻,有点像单总线系统,可以参考DS18B20,或者I2C总线的SDA数据线。
对于TTL传输,还可以将TXD和RXD接在一起,接收的时候,将TXD接口设成输入即高阻模式,发送的时候,设成输出,发送完成后立刻设为输入模式。

出0入0汤圆

 楼主| 发表于 2012-12-20 08:48:33 | 显示全部楼层
谢谢楼上的兄弟。
问题解决了。
方法:串口RXD + 二极管(4148) -   TXD  ,然名就用一个IO去模拟串口。

出0入0汤圆

发表于 2012-12-20 10:10:25 | 显示全部楼层
STM8的单线半双工模式只使用TXD脚,且TXD配置为OD外加上拉模式

出0入0汤圆

 楼主| 发表于 2012-12-20 13:57:55 | 显示全部楼层
zhshliu 发表于 2012-12-20 10:10
STM8的单线半双工模式只使用TXD脚,且TXD配置为OD外加上拉模式

兄弟,要在串口线加个二极管的。我之前也就是搞STM8单线串口模式,只使用TXD脚,能发,但收不了。所以改成一个IO去模拟串口收发。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-12-21 10:33:35 | 显示全部楼层
楼主,我是看明白你的意思了,
你没看明白我的意思,我的意思是你的只能发不能收是否是把TXD引脚配置成的PP模式,这个模式下是总线拉不低的,所接收不到数据,且接收模式时最好先把TE给关掉.
这跟你串口这边TXD要加二极管是一个道理.,因为TXD为强驱动,一端的TXD拉到高电平(认为是释放总线)时,另一端TXD可能出现拉不低的情况.

出0入0汤圆

 楼主| 发表于 2012-12-21 12:32:28 | 显示全部楼层
本帖最后由 cyxavr 于 2012-12-21 13:07 编辑

谢谢你的指点。兄弟,你有STM8的串口单线传输例程吗?贴上来让我学习学习吧。

出0入0汤圆

发表于 2012-12-21 16:17:31 | 显示全部楼层
你可以参照STM8库里面有HalfDuplex例程

出0入0汤圆

 楼主| 发表于 2012-12-21 20:42:15 | 显示全部楼层

void uart_init(void)
{
     GPIOD->DDR |= GPIO_PIN_5;   //输出模式
   GPIOD->CR1 &= ~GPIO_PIN_5;   //浮动或漏极开路
   GPIOD->CR2 &= ~GPIO_PIN_5;//输出最大速度2MHZ


    UART1_DeInit();
    uint16_t baud_div=0;
    UART1->SR = (1<<5);
    UART1->CR1 = (0<<4)|(0<<3)|(0<<2)|(0<<1)|(0<<0);
    /*1位起始位 8位数据位 结束位由CR3设置 不使用奇偶校验 不使能奇偶校验中断*/
    UART1->CR2 = (0<<7)|(0<<6)|(0<<5)|(0<<4)|(1<<3)|(1<<2);
    /*使能发送和接收 接收中断 禁止发送中断*/
    UART1->CR3 = 0; /*设置1位停止位 不使能SCLK*/        
    UART1->CR5 |= (1<<3);   // 选择单线半双工模式  
    /*使用智能卡模式需要设置的,基本上保持默认就行了 */
   
    /*设置波特率*/
    baud_div =HSIClockFreq/BaudRate;  /*求出分频因子*/
    UART1->BRR2 = baud_div & 0x0f;
    UART1->BRR2 |= ((baud_div & 0xf000) >> 8);
    UART1->BRR1 = ((baud_div & 0x0ff0) >> 4);    /*先给BRR2赋值 最后再设置BRR1*/
    UART1->CR1 |= (1<<5);         /*使能UART*/
}

然后在TXD 引脚加了个10K的上拉电阻.
就用6位的串口线图.
没加上10K上拉还能发的,现在加了,也不能发送了.其怪.

出0入0汤圆

发表于 2012-12-21 21:32:28 | 显示全部楼层
cyxavr 发表于 2012-12-21 20:42
void uart_init(void)
{
     GPIOD->DDR |= GPIO_PIN_5;   //输出模式

TXD发送时设置为推挽输出,接收时设置为输入,不就行了?

出0入0汤圆

发表于 2013-1-23 09:29:01 | 显示全部楼层
cyxavr 发表于 2012-12-21 20:42
void uart_init(void)
{
     GPIOD->DDR |= GPIO_PIN_5;   //输出模式

最终有结果吗,贴出来让我学习下嘛,谢谢咯

出0入0汤圆

 楼主| 发表于 2013-1-23 23:32:14 | 显示全部楼层
有结果.是用一条IO去模拟的的.

出0入0汤圆

发表于 2013-1-24 08:09:25 来自手机 | 显示全部楼层
有种芯片叫运放……rx输出,tx输入,加几个电阻和一个三极管就成。信号输出上拉到12V,纯硬件不模拟,已大量出货,性能稳定

出0入17汤圆

发表于 2013-1-24 12:25:08 | 显示全部楼层
51的串口也可以这么用吧

出0入0汤圆

发表于 2013-2-27 14:50:48 | 显示全部楼层
amazing030 发表于 2013-1-24 08:09
有种芯片叫运放……rx输出,tx输入,加几个电阻和一个三极管就成。信号输出上拉到12V,纯硬件不模拟,已大量 ...

能否说清楚点呢,你这样太玄乎了

出0入0汤圆

发表于 2013-2-28 12:03:33 | 显示全部楼层
发出来我学习下。我和你一样 做个能发不能收啊,

出0入0汤圆

发表于 2013-2-28 16:19:18 | 显示全部楼层
學習了,頂

出0入0汤圆

发表于 2013-4-8 22:35:49 | 显示全部楼层
amazing030 发表于 2013-1-24 08:09
有种芯片叫运放……rx输出,tx输入,加几个电阻和一个三极管就成。信号输出上拉到12V,纯硬件不模拟,已大量 ...

你好 兄弟 我有问题想请教你  你提到的大量出货的板子 有详细的资料型号吗 我这边要做个电路转换 正需要你的板子

出0入0汤圆

发表于 2013-4-8 22:41:50 | 显示全部楼层
一直不太明白这个是怎么工作的 最近在研究一个楼宇对讲的电路 和楼主的很像

出0入0汤圆

发表于 2013-4-9 22:55:34 | 显示全部楼层
你好 楼主 请教一下 你知道怎么把这个单线串口转换为标砖串口吗?

出0入0汤圆

发表于 2013-4-9 22:55:52 | 显示全部楼层
amazing030 发表于 2013-1-24 08:09
有种芯片叫运放……rx输出,tx输入,加几个电阻和一个三极管就成。信号输出上拉到12V,纯硬件不模拟,已大量 ...

你好 请教一下 你知道怎么把这个单线串口转换为标砖串口吗?

出0入0汤圆

发表于 2013-4-9 23:14:13 | 显示全部楼层
都是高手哦。。我还没试过呢、、

出0入0汤圆

发表于 2013-8-7 15:22:53 | 显示全部楼层
amazing030 发表于 2013-1-24 08:09
有种芯片叫运放……rx输出,tx输入,加几个电阻和一个三极管就成。信号输出上拉到12V,纯硬件不模拟,已大量 ...

有种芯片叫运放……rx输出,tx输入,加几个电阻和一个三极管就成。信号输出上拉到12V,纯硬件不模拟,已大量出货,性能稳定 能交流下吗??

出0入0汤圆

发表于 2017-10-10 17:13:32 | 显示全部楼层
学习一下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-16 02:46

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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