视觉开发板—K210自学笔记(六)--串口通信

视觉开发板—K210

本期我们继续来遵循其他控制器的学习路线,在学习完GPIO的基本操作后,我们来学一个非常重要的UART串口通信。为什么说这个重要呢,通常来说我们在做一个稍微复杂的项目的时候K210作为主控的核心可能还有所欠缺,另外专业的事要给专业的人去干。也即是K210让它专心的去干它的视觉识别,系统的控制交给另外专业的控制器去完成。这两者之间可以通过串口通信来传递信息,作为一个主从的结构,K210可以作为从机不断把自己检测识别的结果传递给系统的主控即可。那么接下来我们来学习一下串口通信的操作。

  • 硬件电路

根据之前官方提供的assembly drawing资料我们能知道了实际上K210的 UART 模块主要用于驱动开发板上的异步串口。k210 总共有3个 UART,每个 UART可以进行自由的引脚映射。接下来我们使用IO4和IO5来映射一组uart。

        

  • 程序开发

在入门的简单的GPIO的编程之后,我们来按照官方提供的文档来开发这一节的内容。大家在学习的同时要注意整个的流程,需要什么资料去怎么查询怎么使用。

上一节我们提到了GPIO和IO的区别,注意要区分 GPIO  IO的区别, IO也可以叫Pin 也就是引脚,是芯片引出来的硬件引脚, GPIO是一种外设,可以控制这些Pin/IO 的外设。两者可以有一种方法映射,就像一道桥一样连接他们。因为有了这个强大的映射功能, 所以在使用引脚时,需要增加一步映射的步骤:

from fpioa_manager import fm    # 导入库类似C语言的头文件

fm.register(28, fm.fpioa.GPIO0)

这里我们将引脚 28 映射为了 GPIO0 的功能, 执行了这句命令后,引脚28和GPIO0就映射(绑定)好了,要取消映射(解绑),则需要调用fm.unregister函数,如fm.unregister(28)可取消引脚28的绑定。

这是之前讲过的内容,接下来结合官方文档总结一下如何将某 IO 注册为 GPIO 功能。

先引入头文件

from Maix import GPIO

from fpioa_manager import fm

上述的程序中,我能怎么知道引入什么库才能使用呢,也就是说唯一未知的头文件是如何引入的呢?看下图:

通过上述的官方文档截图可以看出,文档提供的API手册中提供了所有的库的名称和使用说明供给开发者使用。

然后将IO注册为GPIO,

fm.register(io_number,fm.fpioa.GPIO0)

设置 GPIO 为输入或输出模式,GPIO调参的用法可以参考上述提到的官方文档,有详细的说明和示例。

gpio=GPIO(GPIO.GPIO0,GPIO.OUT)

接下来就是如何使用了:和C语言的结构体类似的操作,读取或设置 GPIO 电平

gpio.value()  #直接在括号内赋值即可配置成输出

经过以上流程的总结,希望大家对整个的程序架构有一个基本的概念,学过STM32的同学可能会很好的接收以上的事实。新手的同学需要记住以上的步骤,基本上调用IO都是这个流程。

那么我们接下来完成今天的任务,完成串口uart的操作。

接下来引用以下官方的文档链接,大家保存以下:

machine.UART - Sipeed Wiki

其实官方文档做的是我认为最详细的一个了,所以大家按部就班读文档做起来,会更快一些的。

from fpioa_manager import fm

# maixduino board_info PIN10/PIN11/PIN12/PIN13 or other hardware IO 10/11/4/3
fm.register(board_info.PIN10, fm.fpioa.UART1_TX, force=True)
fm.register(board_info.PIN11, fm.fpioa.UART1_RX, force=True)
fm.register(board_info.PIN3, fm.fpioa.UART2_TX, force=True)
fm.register(board_info.PIN4, fm.fpioa.UART2_RX, force=True)

uart_A = UART(UART.UART1, 115200, 8, 0, 0, timeout=1000, read_buf_len=4096)
uart_B = UART(UART.UART2, 115200, 8, 0, 0, timeout=1000, read_buf_len=4096)

write_str = 'hello world'
for i in range(20):
    uart_A.write(write_str)

    read_data = uart_B.read()
    if read_data:
        read_str = read_data.decode('utf-8')
        print("string = ", read_str)
        if read_str == write_str:
            print("baudrate:115200 bits:8 parity:0 stop:0 ---check Successfully")


uart_A.deinit()
uart_B.deinit()
del uart_A
del uart_B

总结

以上就是uart的通信程,涵盖了GPIO的除IO输入输出的基本操作。任何控制器、单片机和CPU首先要掌握的就是输入输出的GPIO,然后学会了串口通信,我个人觉得就够用了,基本接下来学习视觉相关的知识,就可以融合之前的操作,进行和其他主控系统联机调试了。当然这之前,你也可以用K210自己作为主控独立开发一套系统,如果K210的IO足够的,有一说一,K210的可编程IO还是真的具备一定的可玩性的。

  • 45
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远都是新手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值