2613|1

5263

帖子

236

TA的资源

管理员

楼主
 

FAQ_使用任意GPIO模拟串口 [复制链接]

 

本文作者:ST工程师 Lucien KUANG
点击下载pdf文档查看:  FAQ_如何使用任意GPIO模拟串口.pdf (590.31 KB, 下载次数: 15)


关键词:BlueNRG

 

 

问题: 有些客户在项目后期调试时,没有串口可以引出,或者硬件串口被占用了,没有其他串口调试。

然后遇到问题时不知道怎么调试。

ST工程师解答: 我个人建议,如果简单的应用,可以用一个GPIO高低电平来验证来验证。复杂一些的调试,可以

 

 操作步骤

a. 使用GPIO 模拟串口时序

数据帧:

 

是串行通讯的数据单元,其中各位的意义如下:起始位:先发出一个逻辑”0”的信号,表示传输数据的开始。数据位:紧接着起始位之后,数据位的个数可以是4、5、6、7、8等,(通常使用8位)构成一个字符,通常采用ASCII码,从最低位开始传送,通过时钟定位。奇偶校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。 由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

b. 增加重写vsprintf

 

c. 增加FIFO存储log,控制输出

 

移植到其他工程方法

已给出参考Demo ,链接地址:

https://github.com/wallekuang/BlueNRG_Demo

BlueNRG_Demo/BlueNRG-1_2 DK 3.1.0/Project/Supply/BLE_Simulate_Uart/

a. 添加相关文件 cassert.c user_buffer.c simulate_uart.c 到目标工程

b. 在程序开始处设置初始化 simulate_uart_init();

c. 在sistick 中断中 void SysTick_Handler(void) 增加simulate_uart_handler();

d. 使用COMPrintf()输出日志 用法和printf一样

e. 如果调试带睡眠的程序,增加log, 需要在睡眠检测函数中增加,因为睡眠systick是不工作,会影响log输出。

SleepModes App_SleepMode_Check(SleepModes sleepMode)
{
if(SdkEvalComIOTxFifoNotEmpty() || SdkEvalComUARTBusy())
return SLEEPMODE_RUNNING;
if(simulate_uart_fifo_len())
return SLEEPMODE_RUNNING;
return SLEEPMODE_NOTIMER;
}

 

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

最新回复

软串口的缺点是速率不能太高。   详情 回复 发表于 2020-1-20 16:38
点赞 关注
 
 

回复
举报

1万

帖子

24

TA的资源

版主

沙发
 

软串口的缺点是速率不能太高。

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表