视觉开发板—K210自学笔记(六)

视觉开发板—K210

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

  • 硬件电路

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

        视觉开发板—K210自学笔记(六)_第1张图片

  • 程序开发

在入门的简单的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

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

视觉开发板—K210自学笔记(六)_第2张图片

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

然后将IO注册为GPIO,

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

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

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

视觉开发板—K210自学笔记(六)_第3张图片

接下来就是如何使用了:和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还是真的具备一定的可玩性的。

你可能感兴趣的:(视觉开发板,嵌入式硬件,计算机视觉,视觉检测)