STM32L15系列IO模拟串口失败,请教

2019-07-20 23:03发布

本帖最后由 猜不透亻尔心 于 2019-3-21 09:42 编辑

最近在做一个项目,因为需要用到多个串口,硬件串口就显得不够用了,所以 就打起了IO口模拟串口的主意,然后通过将IO口设置为下降沿中断来捕获串口传送开始的信号于是做了入图的配置,之所以设置为下拉,是因为我发现,如果设置为上拉,如果是因为不小心触发的中断则会导致接收到 FF 的数据,而且这样也并不会影响到下降沿中断的触发。
然后也是最重要的就是IO口时序的模拟接收了,根据波特率定时查看IO口状态并进行记录程序如下(使用HAL库编写,CUBEMX 进行配置):这个时候问题就出来了,数据总是不能正确接收,delay_us的延时是通过定时器实现的,这个延时同时也在模拟I2C接口中有用到,系统时钟和定时器配置如下
时钟配置为内部MSI  2M频率,不分频,则外设时钟和系统定时器都应该同样是2M频率TIM6的TIME_OUT = (period+1)/(prescaler+1)/clock = 2 / 1 / 2 = 1us ;  这里的计算应该没有问题吧,然后定时器回调函数做了如下处理Nconter 是一个全局变量,下面是延时函数
搞了好几天还是没搞明白是哪里出了问题导致接收到的数据总是不准确,我用示波器看了传入到芯片  IO  的数据的波形没有任何问题,所以烦请哪位大神看到了帮忙解惑一下是哪里出了问题,或者我该怎么测试去找出问题所在。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。