历史上的今天
今天是:2025年01月21日(星期二)
2020年01月21日 | 【嵌入式开发】STM8S103F3P6单线半双工串口通信
2020-01-21 来源:eefocus
最近突然接手一个项目,很基础的一些单片机操作就可以完成,唯一值得说道的就是受限于任务要求,需要采用单线通信方式。拿到这个要求的时候有点懵,之前倒是从来没有用过单线的串口通信。
首先翻了下StrongerHuang的例程,没有,看来还是只能自己来了,在这也对StrongerHuang表示感谢,找到datasheet,这里直接可以看到STM8支持单线半双工,还有别的方法,后面再说。
既然有这样的功能,那么再找找Reference manual看,所有的信息如下:
可以看到讲得很简单,主要就是控制寄存器的配置和引脚的设置。按照这个搞了一天都没有弄出来。问题主要出在哪呢(直接马后炮)?
引脚使用。上面提到了单线半双工使用的是Tx脚,Rx脚是不用的。因为我这里主要是为了和上位机通信,另一端使用的是CH340做的模块,而无法将其设置为单线半双工模式,所以一定记得在发送和接收时切换CH340这端的Tx和Rx,比如做一个单刀双掷开关在切换时直接拨。
引脚配置。最后是在看了官方固件库之后完成的,这里有句话很有意思,Apart from this, the communications are similar to what is done in normal UART mode. 所以官方固件库的做法就是先按照正常配置,然后最后来个HDSEL的设置就OK了。而不要先去做别的配置(好吧,不求甚解了,按照官方配置通信没有问题之后没有去深究为什么)。
最后,Talk is cheap, show you my code.
//直接基于StrongerHuang的例程修改的,只展示最关键的部分
void UART_Initializes(void)
{
UART1_Init((uint32_t)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);
/* Enable UART1 Half Duplex Mode*/
UART1_HalfDuplexCmd(ENABLE);
}
最后的这个半双工使能是这样的(STM8S的官方库里面有这个文件,路径是下面这个)
STM8S_StdPeriph_LibProjectSTM8S_StdPeriph_ExamplesUART1UART1_HalfDuplex
void UART1_HalfDuplexCmd(FunctionalState NewState)
{
assert_param(IS_FUNCTIONALSTATE_OK(NewState));
if (NewState != DISABLE)
{
UART1->CR5 |= UART1_CR5_HDSEL; /**< UART1 Half Duplex Enable */
}
else
{
UART1->CR5 &= (uint8_t)~UART1_CR5_HDSEL; /**< UART1 Half Duplex Disable */
}
}
实际上就是对HDSEL进行了操作。其他的配置和串口的使用都跟普通的串口一样。不过如果是真实的半双工对半双工的话,就像手册里面说的,请设计好仲裁机构,注意通信的顺利完成。
现在说说别的方式,最后并没有采用这个方案,因为设计硬件的人设计好了电路。那他是怎么设计的呢?就是直接把普通的串口利用两个光电隔离接在了一起,搜索了一下,这倒是很常见。
史海拾趣
|
IBM日前在上海举行典礼,与合作伙伴和各界代表共同见证了全球首个Power架构专用协作创新平台——IBM Power架构应用中心的启用。该中心将围绕IBM Power架构处理器技术,通过与Power.org全球及本地的合作伙伴及研究机构等多方进行共同协作,帮助客户 ...… 查看全部问答> |
|
关键字:网络摄像机 网络摄像机是传统摄像机与网络视频技术相结合的新一代产品,除了具备一般传统摄像机所有的图像捕捉功能外,机内还内置了数字化压缩控制器和基于WEB的操作系统,使得视频数据经压缩加密后,通过网络送至终端用户。本文 ...… 查看全部问答> |
|
MFC requires WINVER to be #defined to 0x0400 or greater MFC requires WINVER to be #defined to 0x0400 or greater… 查看全部问答> |
|
计算机组成原理课程设计、电子钟、电子琴、智能交通灯电路图!用8255!~和汇编程序! 各位高手:今年计算机组成原理课程设计,电子钟,电子琴,智能交通灯! 这些电路图!我们是用实验箱做实验的!主要电路图不会画 和借口不知道从哪接! 希望大家能看看有没有会的,和做过这样的课程设计!还有相关的汇编语言程序! 希 ...… 查看全部问答> |
|
在看手册时看到说STM32中,中等密度器件的flash分成了128个page,每个128K,但是中等密度器件的最大Flash也只有128K,那么如果小于128K的那些是怎么分配的吗?另外,这些分配之后Information block和Flash memory interface&nb ...… 查看全部问答> |
|
/******************************************************* 说明: 次程序成功实现SPI简单通信配置,能实现SPI1发送 数据,SPI2接收数据简单通信功能,仅供测试使用。 *********************************** ...… 查看全部问答> |




