261_S32K144_串口驱动

64 篇文章 163 订阅

完整的S32K144的学习汇总如下:

https://github.com/GreyZhang/g_s32k144

    继续学习S32K144,前面分析过一次机遇UART的printf。今天从驱动以及原理层面了解一下这背后的机理。

    首先值得一说的是,虽然我们在电脑上通过串口工具查看到了串口的信号,但是本质上来说这是串口转成了USB的信号。在之前接触Arduino的时候,有一个完成相关功能的小芯片CH340。但是,我们这个开发板实现这样的功能直接是走了一个MICRO USB的接口。这个功能是如何实现的呢?

    关于这个功能,顺着原理图做一个逆向的寻找。

    这是MICRO USB的部分,这部分在这个开发板上最重要的功能或许应该是OpenSDA调试器功能而不是打印功能。不过,既然串口信息走的这个数据口那么这个串口来源应该往前找。从上面的信息看,其实这部分是通过USB的模式进入了后面的芯片。

    后面的这个芯片是一个MCU,也是32位的ARM处理器,性能还不错。MCU相应的资料我在文章连接中整理放上了。看上去,这个MCU比较好的一点恰好是能够提供串口自己USB的接口两种方式,通过这个做了一个转换。同时,这个MCU负责实现SDA的功能。看起来,这很大程度上是一个独立的工作单元。而后期有时间的话,也可以研究下这个芯片以及相应的调试技术。在这个芯片中,固化的软件应该实现了一个串口到USB的透传功能。

    不看细节,看大的方向的话,再往后这个串口信号就直接进了S32K144 MCU的UART端口了。

    接下来,直接做个串口驱动的测试。

    这是串口用到的MCU的资源。

    进行管脚的属性配置。

    做一下驱动属性的配置。之后,生成代码,然后增加相应的初始化以及测试代码如下:

    首先,对MCU UART的管脚进行了初始化配置。接着,初始化了串口驱动。之后,修改了串口收发的中断优先级,这是为了避免与FreeRTOS有冲突。

    这个是测试代码,软件编译成功烧写后运行,在串口监控工具中可以看到如下的效果:

    其实,这里的时间戳在一定程度上能够看得出来任务调度的一个准确性。其实,这就是pritnf的一个雏形了,如果是用到了printf,增加的应该也只是一个数据格式转换的过程。后续,或许我还会尝试实现一个printf的函数。

完整的S32K144的学习汇总如下:

https://github.com/GreyZhang/g_s32k144

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值