wo4fisher 发表于 2022-3-19 21:56

[平头哥RVB2601创意应用开发]体验分享二:多种方式点灯,组件学习

本帖最后由 wo4fisher 于 2022-3-19 22:07 编辑

<p>使用MCU点灯,经过了YOC层层包装之后,点灯便不再只有一种玩法。</p>

<p>1、使用YOC的AOS API之HAL硬件抽象层接口点灯&nbsp;&nbsp;<a href="https://yoc.docs.t-head.cn/yocbook/Chapter3-AliOS/HAL%E7%A1%AC%E4%BB%B6%E6%8A%BD%E8%B1%A1%E5%B1%82%E6%8E%A5%E5%8F%A3/GPIO.html#hal_gpio_finalize">GPIO &middot; GitBook (t-head.cn)</a></p>

<p>对于不同底层驱动的gpio操作实现,统一封装成本文所述hal接口。上层使用相关功能时,统一调用hal层接口,以保证app的通用性。 hal相关头文件位于目录:<a href="https://github.com/alibaba/AliOS-Things/tree/master/include/aos/hal" target="_blank">include/aos/hal</a>&nbsp;hal相关实现位于具体的mcu目录下</p>

<p>驱动接口如下:(使用时包含头文件:)</p>

<pre>
<code>#include "aos/hal/gpio.h"</code></pre>

<p>可以实现GPIO输出高电平、低电平、反转操作。</p>

<p>&nbsp; 2、使用YOC的AOS API之CSI2的GPIO_PIN设备&nbsp;<a href="https://yoc.docs.t-head.cn/yocbook/Chapter3-AliOS/CSI%E8%AE%BE%E5%A4%87%E9%A9%B1%E5%8A%A8%E6%8E%A5%E5%8F%A3/CSI2/GPIO_PIN.html">GPIO_PIN &middot; GitBook (t-head.cn)</a></p>

<p>GPIO(General-purpose input/output) 通用型之输入输出的简称。在嵌入式系统中,经常需要控制许多结构简单的外部设备或者电路,这些设备有的需要通过CPU控制,有的需要CPU提供输入信号。并且,许多设备或电路只要求有开/关两种状态就够了,比如LED的亮与灭。对这些设备的控制,使用传统的串口或者并口就显得比较复杂,所以,在嵌入式微处理器上通常提供了一种&ldquo;通用可编程I/O端口&rdquo;,也就是GPIO。</p>

<p>使用时包含头文件</p>

<pre>
<code>#include &lt;drv/gpio_pin.h&gt;</code></pre>

<p>可以实现GPIO输出高电平、低电平、反转操作。</p>

<p>3、使用YOC的AOS API之CSI2的GPIO设备<a href="https://yoc.docs.t-head.cn/yocbook/Chapter3-AliOS/CSI%E8%AE%BE%E5%A4%87%E9%A9%B1%E5%8A%A8%E6%8E%A5%E5%8F%A3/CSI2/GPIO.html">GPIO &middot; GitBook (t-head.cn)</a></p>

<p>GPIO(General-purpose input/output) 通用型之输入输出的简称。在嵌入式系统中,经常需要控制许多结构简单的外部设备或者电路,这些设备有的需要通过CPU控制,有的需要CPU提供输入信号。并且,许多设备或电路只要求有开/关两种状态就够了,比如LED的亮与灭。对这些设备的控制,使用传统的串口或者并口就显得比较复杂,所以,在嵌入式微处理器上通常提供了一种&ldquo;通用可编程I/O端口&rdquo;,也就是GPIO。</p>

<p><em>&nbsp;其实这里有个疑问,就是GPIO和上边的GPIO_PIN设备,官方文档解释内容是一样的,操作接口看上去也是基本一样的。</em></p>

<p>使用时包含头文件:</p>

<pre>
<code>#include &lt;drv/gpio.h&gt;</code></pre>

<p>可以实现GPIO输出高电平、低电平、反转操作。</p>

<p>此外,AOS API的csi还有csi1,官方的解释</p>

<p><em>CSI 是针对嵌入式系统,定义了CPU内核移植 接口、外围设备操作接口统一软件接口规范,消除不同芯片的差异,简化软件的使用及提高软件的移植性。通过CSI 接口规范,可以快速实现芯片对接到YoC 平台。</em></p>

<p><em>CSI 的具体内容包括:</em></p>

<ul>
        <li><em><strong>CSI-CORE</strong>:定义了CPU和相关紧耦合外设的接口规范</em></li>
        <li><em><strong>CSI-DRIVER</strong>:定义了常用的驱动的接口规范</em></li>
        <li><em><strong>CSI-KERNEL</strong>: 定义实时操作系统的接口规范</em></li>
</ul>

<p><em>注:CSI2驱动接口比CSI1在代码密度上有较大提升</em></p>

<p>&nbsp;<img src="https://yoc.docs.t-head.cn/yocbook/assets/zh-cn/csi/csi.png" /></p>

<p>4、 使用YOC的AOS API之PWM设备<a href="https://yoc.docs.t-head.cn/yocbook/Chapter3-AliOS/CSI%E8%AE%BE%E5%A4%87%E9%A9%B1%E5%8A%A8%E6%8E%A5%E5%8F%A3/CSI2/PWM.html">PWM &middot; GitBook (t-head.cn)</a></p>

<p>脉冲宽度调制(Pulse width modulation,简称PWM)是一种强大的模拟信号数字编码技术,它利用高分辨率计数器产生方波,并通过调制方波占空比对模拟信号进行编码。</p>

<p>使用时包含头文件:</p>

<pre>
<code>#include &lt;drv/pwm.h&gt;</code></pre>

<p></p>

<p>5、源码及使用方法</p>

<p>根据官方helloworld例程创建工程,然后再app下新建LED文件夹,将myled.c和myled.h文件放入LED文件夹。</p>

<p>根据main.c修改main.c文件。</p>

<p>打开myled.h,根据类型选择宏定义即可。</p>

<p> &nbsp;<br />
<br />
<br />
<br />
<br />
<br />
&nbsp;</p>

<p>下一篇:按键输入</p>

wo4fisher 发表于 2022-3-19 22:27

<p>使用下来的感受:</p>

<p>1、yoc云文档使用</p>

<p>1.1 RVB2601未加入YOC文档中</p>

<p>1.2 yoc云文档内有一些小错误,尤其是组件接口内附带的例程中,这个是不太友好的。</p>

<p>比如:csi2中gpio api的例程中,缺少EXAMPLE_TOGGLE_GPIO_IDX的定义。需要读者要翻代码才能搞定。</p>

<p>1.3 经过几天的使用体验,经1520认证的例程,package中的api有很多是重复的,各类package的依赖关系官方没有很好的说明文档(还是我没找到)。又比如,chip_ch2601包的driver中包含了各类外设的.c源文件,而在csi包中,对应的drv下包含了对应的.h头文件,这个也是挺疑惑的。</p>

<p>2、cdk使用体验</p>

<p>2.1 cdk安装后,默认拉取下来的工程,没有代码提示,安装了两台电脑,一台就有了,但是也会抽抽,另外一台大多数时间没有。</p>

<p>2.2 代码中鼠标右键 转到定义,经常性无法跳转。</p>

<p>2.3 代码中对于包含的头文件,右键打开文件的时候,极少数情况下能打开,大多数是无效的。</p>

<p>2.4 <strong>cdk太吃硬件了。vs2019、ad2022都没有这么卡过</strong></p>

lugl4313820 发表于 2022-3-19 23:09

<p>楼主,用心了,感觉真是用心在写这个贴子。得用心向您学习才行。</p>

<p>CDK的体验,真心感觉跟你一样,尤其是打开工程,致少10分钟才缓过来。</p>

梦溪开物 发表于 2022-3-19 23:40

<p>请问类似于csi_pwm_t的结构体内部情况怎么查看呢?右键parse all project还是点不进去耶</p>

梦溪开物 发表于 2022-3-20 10:26

wo4fisher 发表于 2022-3-19 22:27
使用下来的感受:

1、yoc云文档使用

1.1 RVB2601未加入YOC文档中

1.2 yoc云文档内有一些小错误, ...

<p>CSI的全称是什么呀</p>

wo4fisher 发表于 2022-3-20 13:25

梦溪开物 发表于 2022-3-19 23:40
请问类似于csi_pwm_t的结构体内部情况怎么查看呢?右键parse all project还是点不进去耶

<p>右键无法跳转的话就只能在左边工程目录树中一层一层打开看了。大概是在chip_2601那个包里,有对应的h头文件。另外在另一个包里有对应的c文件,比如pwm、gpio、gpio_pin等等</p>

wo4fisher 发表于 2022-3-20 13:28

梦溪开物 发表于 2022-3-20 10:26
CSI的全称是什么呀

<p>全称不清楚,没找到对应的英文全称<br/>大概作用就是定义riscv架构下mcu/soc内核、片上外设相关操作api接口规范,函数名称、输入参数、返回类型,然后针对特定的芯片,进行 api具体的实现。<br/>当然,在rvb2601里这些接口已经实现了。</p>

wo4fisher 发表于 2022-3-20 13:37

<p>上边的三个文件的使用步骤<br/>1 在app/src/下新建LED文件夹,然后把myled的两个文件放进去<br/>2 在工程目录树中,打开app--src,然后右键,选add source folder,在打开的窗口中添加 LED的目录<br/>3 打开main.c,复制main.c中的内容到工程的main.c中<br/>4 打开工程目录下的package那个配置文件,在 include和src中增加LED目录的引用,并包含所有的.c文件(这个可以参考已经有的内容写法),可能在cdk中有同等效果的操作。<br/>然后编译、下载、观察效果<br/>打开myled.h可以通过开始的宏定义去选择使用的接口类型以便进行测试。</p>
页: [1]
查看完整版本: [平头哥RVB2601创意应用开发]体验分享二:多种方式点灯,组件学习