OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 395|回复: 0

《DNK210使用指南 -CanMV版 V1.0》第十章 板卡信息实验

[复制链接]

1118

主题

1129

帖子

2

精华

超级版主

Rank: 8Rank: 8

积分
4671
金钱
4671
注册时间
2019-5-8
在线时间
1224 小时
发表于 2024-7-8 16:06:44 | 显示全部楼层 |阅读模式
本帖最后由 正点原子运营 于 2024-7-8 16:06 编辑

第十章 板卡信息实验
1)实验平台:正点原子DNK210开发板

2) 章节摘自【正点原子】DNK210使用指南 - CanMV版 V1.0


4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/ATK-DNK210.html

5)正点原子官方B站:https://space.bilibili.com/394620890

6)正点原子K210技术交流企鹅群:605557868

155537c2odj87vz1z9vj6l.jpg

155537nfqovl2gg9faaol9.png

本章实验将介绍如何使用CanMV内置的board脚本来获取板卡信息,方便后续实验使用。通过本章的学习,读者将学习到CanMV内置board脚本的使用。
本章分为如下几个小节:
10.1 board脚本介绍
10.2 硬件设计
10.3 程序设计
10.4 运行验证

10.1 board脚本介绍
在使用CanMV的过程中,经常需要控制一些Kendryte K210的片上外设,以实现某一具体的功能,例如操作GPIO控制LED的亮灭、操作I2S控制数字功放芯片通过扬声器播放音频等,那么在初始化GPIO、I2S等外设的时候,就需要确定这些外设需要通过哪些IO引脚与外部的LED、数字功放芯片等外设通讯,通常情况下,这需要查看板卡的原理图来确定使用的IO引脚,但查看原理图的效率较低,且会在脚本文件中固定下程序中使用的IO引脚,不利于脚本程序的移植。
综合以上IO引脚使用的需求和查看原理图的不便利性,CanMV内置提供了board脚本,board脚本中提供了board_info类,board_info类中又提供了all()和get()这两个方法,通过这两个方法便可快速获取板卡上的IO分配信息。
all()方法用于获取board_info类中的所有属性和方法列表,all()方法如下所示:
  1. board_info<b>.</b><b>all</b><b>()</b>
复制代码
all()方法可以获取到board_info类中的所有属性和方法列表,列表中的前8个元素是board_info类的方法,其余的是board_info类中的属性,因为与板卡上IO分配相关的信息是保存在board_info类的属性中的,因此在调用all()方法时,可以只获取board_info类中的所有属性列表,而不获取board_info中的方法列表,具体如下所示:
  1. <div align="left"><font face="Tahoma"><font size="3"><b>from</b> board <b>import</b> board_info</font></font></div><div align="left"><font face="Tahoma"><font size="3"> </font></font></div><div align="left"><font face="Tahoma"><font size="3">info <b>=</b> board_info<b>.</b><b>all</b><b>()[</b>8<b>:]</b></font></font></div>
复制代码
get()方法用于获取board_info类中属性的值,get()方法如下所示:
  1. board_info<b>.</b>get<b>()</b>
复制代码
需要注意的是,get()方法并不能直接调用,get()方法会在获取类属性时被自动调用,例如board_info类中有一个BOOT_KEY的属性,该属性的值就是Kendryte K210 BOOT引脚对应的IO编号,要获取board_info类中的BOOT_KEY属性值,可通过以下方式获取:
  1. <div align="left"><font face="Tahoma"><font size="3"><b>from</b> board <b>import</b> board_info</font></font></div><div align="left"><font face="Tahoma"><font size="3"> </font></font></div><div align="left"><font face="Tahoma"><font size="3">boot_pin <b>=</b> board_info<b>.</b>BOOT_KEY</font></font></div>
复制代码

10.2 硬件设计
10.2.1 例程功能
1. 使用board_info类中的all()方法,获取board_info类中的所有属性,并打印输出
2. 利用board_info类中的get()方法,获取板卡上KEY0按键连接的IO编号,并打印输出
10.2.2 硬件资源
本章实验内容,主要讲解CanMV内置board脚本的使用,无需关注硬件资源。
10.2.3 原理图
本章实验内容,需要通过CanMV内置的board脚本获取板卡上KEY0按键对应的IO编号,为了验证,正点原子DNK210开发板上KEY0按键的连接原理图,如下图所示:                                 
image001.png
图10.2.3.1 KEY0按键连接原理图
通过以上原理图可以看出,KEY0按键对应的IO编号为IO18。

10.3 程序设计
10.3.1 board脚本
有关board脚本的介绍,请见第10.1小节《board脚本介绍》。
10.3.2 程序流程图
image004.png
图10.3.2.1 板卡信息实验流程图
10.3.3 main.py代码
main.py中的脚本代码如下所示:
  1. <div align="left"><font face="Tahoma"><font size="3"><b>from</b> board <b>import</b> board_info</font></font></div><div align="left"><font face="Tahoma"><font size="3"> </font></font></div><div align="left"><font face="Tahoma"><font size="3"># 列出所有板卡信息</font></font></div><div align="left"><font face="Tahoma"><font size="3">info <b>=</b> board_info<b>.</b><b>all</b><b>()[</b>8<b>:]</b></font></font></div><div align="left"><font face="Tahoma"><font size="3"><b>print</b><b>(*</b>info<b>,</b> sep<b>=</b>'\n'<b>,</b> end<b>=</b>'\n\n'<b>)</b></font></font></div><div align="left"><font face="Tahoma"><font size="3"> </font></font></div><div align="left"><font face="Tahoma"><font size="3"># 打印输出KEY0按键连接的IO</font></font></div><div align="left"><font face="Tahoma"><font size="3">key0_pin <b>=</b> board_info<b>.</b>KEY0</font></font></div><div align="left"><font face="Tahoma"><font size="3"><b>print</b><b>(</b>"The KEY0button is connected to IO{:d}"<b>.</b><b>format</b><b>(</b>key0_pin<b>))</b></font></font></div>
复制代码
可以看到,首先通过board_info.all()方法获取一个板卡的信息列表,然后通过上一章节介绍了print()函数,将该信息列表中的每一个元素通过系统标准输出打印输出,那么便能够在CanMVIDE软件的“串行终端”窗口中进行查看。
接着是获取KEY0按键连接的IO编号,通过board_info.{key}便可以获取board_info类中key属性的值value,最后同样通过print()函数进行打印输出。

10.4 运行验证
将DNK210开发板连接CanMV IDE,并点击CanMV IDE上的“开始(运行脚本)”按钮后,可以看到“串行终端”窗口中输出了一系列信息,如下图所示:     
image005.png
图10.4.1 “串行终端”窗口打印输出
可以看到,“串行终端”串口中显示打印了板卡的所有属性信息,例如LEDR、BEEP等,只需要通过board_info.{key}便可以获取board_info类中key属性的值value,这个value就是对应的IO编号,例如上图“串行终端”窗口的最后一行显示KEY0按键连接到了IO18,通过对比第10.2.3小节《原理图》中的原理图,可以验证是一致的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 13:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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