北方 发表于 2023-1-5 14:23

【微雪RP2040双核开发板】MicroPython在RP2040上的指令集和使用

<div class='showpostmsg'><p><span style="font-size:16px;">MicroPython在RP2040上的指令集和使用</span></p>

<p><span style="font-size:16px;">1、对应于thonny的MicroPython支持,是REPL模式,也就是大家非常熟悉的会话模式。在固件中,缺省设置是通过USB口交互。也可以自定义用UART交互,使用的UART参数为115200-9-1-N,引脚为0,1,4,5</span></p>

<p>&nbsp; 具体编译的方法也很简单,就是要把源代码目录下的ports/rp2/mpconfigport.h文件,其中 MICROPY_HW_ENABLE_UART_REPL 的数值从0改为1。编译成功后如上帖,进入boot模式复制到新增的驱动器后就自动更新了。</p>

<p>&nbsp;</p>

<p><span style="font-size:16px;">2、RP2040的microPython功能</span></p>

<p>RP2040使用的是标准库,可以从标准官网上找到,https://docs.micropython.org/en/latest/library/machine.html ,可用的标准库如下</p>

<p>&nbsp; 对应于基于machine 的主要是以下类,这些是基于microPython的通用类<br role="presentation" />
◦ machine.Pin class.<br role="presentation" />
◦ machine.Timer class.<br role="presentation" />
◦ machine.ADC class.<br role="presentation" />
◦ machine.I2C and machine.SoftI2C classes.<br role="presentation" />
◦ machine.SPI and machine.SoftSPI classes.<br role="presentation" />
◦ machine.WDT class.<br role="presentation" />
◦ machine.PWM class.<br role="presentation" />
◦ machine.UART class</p>

<p>对应于RP2040的转有的是PIO库<br role="presentation" />
◦ PIO hardware access library ,PIO硬件访问<br role="presentation" />
◦ PIO program assembler,PIO程序汇编,<br role="presentation" />
◦ Raw flash read/write access,PIO直接访问Flash内存</p>

<p>因为RP2040是双核的,在MicroPython还可以通过thread来进行双核开发。所以,基于RP2040的micro Python编程还是比较强大的。</p>

<p>以下面简单的点灯代码为例,是如下实现的。</p>

<pre>
<code class="language-python">from machine import Pin
led = Pin(25, Pin.OUT)
led.value(1)
led.value(0)</code></pre>

<p>把LED.value()的赋值放在loop循环中就可以实现最基础的电灯,使用machine.PWM(),就可以实现呼吸灯。</p>

<p><span style="font-size:16px;">3、RP2040的外部设备访问</span></p>

<p><span style="font-size:16px;">&nbsp;&nbsp;&nbsp; RP2040的外部设备,如LCD,运动传感器等,都是通过SPI和I2C的访问实现的。在上一帖中,对于LCD的写入和控制,就是用SPI地址的读写实现的,按照LCD的控制流程,进行LCD寄存器额SPI写入。对于6轴姿态传感器是用I2C的访问实现的。</span></p>

<p><span style="font-size:16px;">&nbsp;&nbsp; 在其他RP2040定制版本,如连接WIFI,BLE等无线连接的,其实是通过UART等模块,用AT指令进行读写,实现了无线连接,若RP2040-W,就是这样一款wifi无线RP2040.</span></p>

<p><span style="font-size:16px;">4、从microPython的代码分析,其实是用最少的指令集实现对嵌入式MCU的控制。这个是RP2040的一个开放的开发策略,这些功能和代码,感觉和arduino似曾相识,如用DigitalWrite(),adc.Read()等,逻辑上非常相似。都是在底层的内核上再wrap了一层通用的解释型代码,实现开发的快速上手。而且整个开发环境简单明了,不需要很复杂的工具,就能安装驱动,构建开发环境。</span></p>

<p><span style="font-size:16px;">基本逻辑是出厂配置一个可以用USB直接连接访问的bootloader,在boot模式的时候作为一个外置U-disk,提供拖拽的方式写入分别适用于microPython和C++的驱动,随后在编程的代码在这个驱动之上实现第二层的代码执行。</span></p>

<p><span style="font-size:16px;">前面已经描述了如何安装microPython驱动支持,然后用thonny快速编程的过程。后面,还要用arduino演示如何用arduino的驱动实现对于arduino的支持。arduino的开发,也是对于c++的支持和应用。</span></p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

Jacktang 发表于 2023-1-8 09:01

<p>使用的RP2040使用的是标准库,在标准官网上找到这个还是挺方便的</p>
页: [1]
查看完整版本: 【微雪RP2040双核开发板】MicroPython在RP2040上的指令集和使用