找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1053|回复: 3
收起左侧

STM32如何用Proteus软件模拟IO通信

[复制链接]
ID:952662 发表于 2021-7-14 08:41 | 显示全部楼层 |阅读模式
初学小白,关于STM32如何用Proteus软件模拟IO通信,例如IIC通信?
回复

使用道具 举报

ID:256945 发表于 2021-7-14 11:04 | 显示全部楼层
proteus要8以上的版本再能模拟STM32,IIC在仪表里面能找到
回复

使用道具 举报

ID:939710 发表于 2021-7-15 09:25 | 显示全部楼层
网上的stm32的iic通讯基本上都是io模拟的。找个例程试下就行了
回复

使用道具 举报

ID:954170 发表于 2021-7-20 00:03 来自手机 | 显示全部楼层
普通IO口模拟串口通信 串口通信协议   串口传输 默认 波特率9600 1起始位 1停止位 其他0 数据位是8位(注意图上的给错了)。  传输时,从起始位开始,从一个数据的低位(LSB)开始发送,如图从左向右的顺序,对电平拉高或拉低,最后停止位时拉高。 波特率大小,改变延时时间即可。例如9600 波特率    根据公式 : 1/9600=0.000104s(大致) 也就是说每发送1bit延时104us (下面我用9600波特率来说,代码用的是19200) 串口发送       将电平拉低 延时104us(视为 起始位 0   传输数据正式开始)  其中数据我发送的是16进制数据(8bit  一字节  例如10001000)  将想要发的数据按照二进制的‘0’‘1’高低电平的方式,每发送1bit 延时104us   直到发送完到终止位 将电平拉高视为一包数据传输结束。(根据需求更改即可) 串口接收    (稍微麻烦一些) 两种方法:第一种可以用定时中断,每隔104us开启一次定时中断,中断函数内进行高低电平判断,将这些bit存储最后转换成需要的数据。第二种,用外部中断处理函数,外部中断设置同时开启上升沿下降沿,思路:根据上升下降的电平跳变分析。比如说,触发外部中断后检测电平高低,记录一下当前时间,然后再进入外部中断后 计算出总共几个bit   (两个沿跳变之间的时间 =现在记录的时间 — 之前记录的时间        bit=这个时间/104us)  ,知道这个就可以转换数据了。 定时中断逻辑相对外部中断而言简单好写,但是数据多的时候准确率下降很多,容易丢数据(因为定时中断毕竟用计时开启中断,不可能时间准确每104us开启一次,数据一多时间误差大,自然丢包。可以尝试每发一串数据,重新计时校准一次)。外部中断较为准确,检测的高低电平跳变较为明显唯一,一个跳变就是一个数据,只是分析情况比较多。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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