jinyi7016

  • 2025-06-30
  • 回复了主题帖: 【回帖赢50元京东卡】无线技术盛宴第三趴(6月新活动)

    蓝牙低能耗气象站 - 一般 - DigiKey 技术论坛 - 电子物料和组件方案的专业技术论坛  

  • 2025-06-18
  • 回复了主题帖: 【Raspberry Pi Pico 2W】板载资源-wifi测试

    Jacktang 发表于 2025-6-18 07:42 蓝牙功能还无法使用是为何 不好意思,DS说不支持,没有考证;应该是可以使用的,已修正。找到官网的手册上有例程

  • 发表了主题帖: 【Raspberry Pi Pico 2W】扩展板 外挂模块 测试

    焊接使用了扩展板,使用Grove接口,连接几个对应接口的模块进行功能 性测试。   一、外挂数码管测试 这里的IIC连接使用了引脚12、13     #include "TM1650.h" //导入TM1650的库文件 #include <Wire.h> const int ledPin = LED_BUILTIN; // 定义LED连接的引脚 int item = 0; //要显示的值 TM1650 d; int count=0; void setup() { Wire.setSDA(12); // Pico 的 I2C0 SDA Wire.setSCL(13); // Pico 的 I2C0 SCL Wire.begin(); d.init(); pinMode(ledPin, OUTPUT); // 将引脚设置为输出模式 } void loop() { char line[4] ={0};// "1234"; sprintf(line, "%4d", count); d.displayOff(); d.displayString(line); d.setBrightness(TM1650_MIN_BRIGHT); d.displayOn(); digitalWrite(ledPin, HIGH); // 点亮LED delay(100); // 等待1秒 digitalWrite(ledPin, LOW); // 熄灭LED delay(100); count++; // 再等待1秒 }   二、RGB灯测试 使用36个灯的圆环。   #include "FastLED.h" #include <Wire.h> int item = 0; //要显示的值 #define NUM_LEDS 36 // LED数量 #define DATA_PIN 22 // 数据引脚 #define BRIGHTNESS 64 // 亮度(0-255) uint8_t gHue = 0; // 全局色调值 uint8_t gPattern = 0; // 当前模式 CRGB leds[NUM_LEDS]; int LED= 3; int sensorPin = A1; // 定义模拟输入引脚A0 int sensorValue = 0; // 存储读取的模拟值 void setup() { Wire.begin(); FastLED.addLeds<WS2812, DATA_PIN, GRB>(leds, NUM_LEDS); FastLED.setBrightness(BRIGHTNESS); Serial.begin(9600); // 初始化串口通信 } // 彩虹+流水组合效果 void comboEffect() { // 彩虹背景 fill_rainbow(leds, NUM_LEDS, gHue, 7); // 在彩虹背景上添加流水效果 static uint8_t runnerPos = 0; leds[runnerPos] = CRGB::White; // 白色光点 runnerPos = (runnerPos + 1) % NUM_LEDS; gHue++; } // 另一种流水效果 - 彩色跑马灯 void colorRunningLights() { fadeToBlackBy(leds, NUM_LEDS, 20); static uint8_t startPos = 0; for(int i = 0; i < 3; i++) { // 3个连续的光点 leds[(startPos + i) % NUM_LEDS] = CHSV(gHue + (i * 85), 255, 255); } startPos = (startPos + 1) % NUM_LEDS; gHue += 3; } void loop() { colorRunningLights(); FastLED.show(); delay(50); }   三、雨水传感器测试 在没有水时,ADC的输出为0,当滴上水后,ADC开始有值 。 ADC值由串口输出到电脑上。   #include "FastLED.h" #include "TM1650.h" //导入TM1650的库文件 #include <Wire.h> const int ledPin = LED_BUILTIN; // 定义LED连接的引脚 int sensorPin = 26; // 定义模拟输入引脚A0 int sensorValue = 0; // 存储读取的模拟值 void setup() { pinMode(ledPin, OUTPUT); // 将引脚设置为输出模式 Serial.begin(9600); // 初始化串口通信 } void loop() { sensorValue = analogRead(sensorPin); // 读取A0引脚的模拟值(0-1023) Serial.println(sensorValue); digitalWrite(ledPin, HIGH); // 点亮LED delay(100); // 等待1秒 digitalWrite(ledPin, LOW); // 熄灭LED delay(100); }                          

  • 2025-06-17
  • 发表了主题帖: 【Raspberry Pi Pico 2W】板载资源-wifi测试

    本帖最后由 jinyi7016 于 2025-6-18 15:15 编辑 板载LED的测试在第一次开发环境篇已经测试过了,剩下的还有Flash与Wifi了。 那么,就还剩下wifi这个外设了。 开发板上的wifi模块是使用的CYW43439KUBG,这是一个高度集成的 ​​2.4GHz WiFi + Bluetooth 5.0​​ 双模无线芯片,集成PCB天线。   其与rp2350的连接如下图所示       使用arduino进行wifi测试的代码: 这里的wifi名称与密码,填写自己的。 #include <WiFi.h> const char* ssid = "YOUR_SSID"; const char* password = "YOUR_PASSWORD"; const int ledPin = LED_BUILTIN; // 定义LED连接的引脚 void setup() { Serial.begin(115200); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); delay(500); } Serial.println(""); Serial.print("Pico W is connected to WiFi network "); Serial.println(WiFi.SSID()); // Print IP Address Serial.print("Assigned IP Address: "); Serial.println(WiFi.localIP()); pinMode(ledPin, OUTPUT); // 将引脚设置为输出模式 } void loop() { delay(1000); // Print IP Address Serial.print("Assigned IP Address: "); Serial.println(WiFi.localIP()); digitalWrite(ledPin, HIGH); // 点亮LED delay(100); // 等待1秒 digitalWrite(ledPin, LOW); // 熄灭LED delay(100); // 再等待1秒 }     烧写程序后,需要等一段时间,由路由器来分析IP地址: 连接后如下,获取了IP地址:        

  • 发表了主题帖: 【Raspberry Pi Pico 2W】扩展板设计与开源

    由于手头上有很多小的模块,大多都是Grove接口的,于是设计一个Grove接口标准的扩展板,方便连接各个模块。省去每次都要对引脚连接杜邦线了。 正面串口与IIC接口,与IO接口。 并增加了复位按键,方便更新程序后的复位操作,避免重复上电。   背面引出所有IO,SPI接口,通过开发板底部的贴片焊盘,把USB引出到下方的typec接口上。 为天线位置开窗,避免信号质量不佳。 通过开发板底板焊盘引出SWD接口,方便底层调试设计。 预留有电池接口,增加电池充放电转换芯片电路。     还没有实物,开源无法审核,以下是打样文件,可以先打样试试。 等验证通过了,立创那边就通过开源审核了。   打板文件如下:  

  • 发表了主题帖: 【Raspberry Pi Pico 2W】三种开发方式

    本帖最后由 jinyi7016 于 2025-6-17 17:43 编辑 一、Raspberry Pi Pico 2W基本概述 定位:Raspberry Pi基金会推出的低成本、高性能微控制器开发板,是原版Pico的升级型号(2023年发布)。 核心芯片:搭载 RP2040 双核ARM Cortex-M0+ 处理器(主频133MHz),与Pico相同。 最大升级:内置 2.4GHz WiFi(基于Infineon CYW43439芯片),支持无线连接(但无蓝牙)。 价格:约6美元(性价比极高)。     二、开发方式 使用vscode 安装Raspberry Pi Pico 扩展。   通过扩展来新建C语言与python的工程。   1、C、C++ 通过扩展来新建C语言与python的工程。 C语言开发方式的LED闪烁程序: #include "pico/stdlib.h" #include "pico/cyw43_arch.h" int main() { stdio_init_all(); if (cyw43_arch_init()) { printf("Wi-Fi init failed"); return -1; } while (true) { cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, 1); sleep_ms(250); cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, 0); sleep_ms(250); } } 2、python 首先,按下boot按键烧写python固件。 烧写固件后,电脑会识别出一个串口,这个串口是连接开发板用的。   插件会自动连接开发板,只要点Run(Stop的位置)就可以运行python代码了。 from machine import Pin from utime import sleep pin = Pin("LED", Pin.OUT) print("LED starts flashing...") while True: try: pin.toggle() sleep(1) # sleep 1sec except KeyboardInterrupt: break pin.off() print("Finished.")   3、arduino 打开arduino IDE 中文件下的首选项,填写上开发板地址:https://github.com/earlephilhower/arduino-pico/releases/download/4.5.2/package_rp2040_index.json   在开发板管理器中搜索“pico”,并进行安装。   第一次连接开发板时,要先按boot,再插上开发板,并在端口上选择 UF2 Board 如下图所示 写入代码   const int ledPin = LED_BUILTIN; // 定义LED连接的引脚 void setup() { pinMode(ledPin, OUTPUT); // 将引脚设置为输出模式 } void loop() { digitalWrite(ledPin, HIGH); // 点亮LED delay(100); // 等待1秒 digitalWrite(ledPin, LOW); // 熄灭LED delay(100); // 再等待1秒 } 注意,2W的开发板的板载的LED与非W版本的是不同的,非W版本的GPIO连接的是25引脚,而W版本,连接到的是WL_GPIO0     所以,LED引脚的设置,要设置成LED_BUILTIN。   至此,Raspberry Pi Pico 2W的三种开发方式都已经测试完成。都是可以工作,看自己习惯哪种了,三种方式都有相应的例程可以参考的。   [localvideo]8b2e38311237e32355070f4e9cf55d9a[/localvideo]     python固件:              

  • 2025-06-04
  • 回复了主题帖: 测评入围名单: Raspberry Pi Pico 2W(RP2350无线版本)

    已查看我的测评计划,可在活动期间内完成并发帖分享

  • 2025-05-27
  • 回复了主题帖: 【行空板k10评测】测评行空板K10板载传感器与执行器

    这个IIC的引脚网络,号P19、P20,原理图中,连接到了IO47、IO48,具体到底连接的是哪个引脚啊,楼主能用万用表测下不,感谢。

  • 2025-04-27
  • 回复了主题帖: 【回帖赢50元京东卡】电源解决方案和技术第二趴(4月新活动)

    如何确定元件是否具有极性 - 常见问答 - DigiKey 技术论坛 - 电子物料和组件方案的专业技术论坛

  • 回复了主题帖: 【回帖赢50元京东卡】电源解决方案和技术第二趴(4月新活动)

    本帖最后由 jinyi7016 于 2025-4-27 16:05 编辑 高手支招:教你利用裸露焊盘为芯片散热 - 工程小贴士 - DigiKey 技术论坛 - 电子物料和组件方案的专业技术论坛

  • 回复了主题帖: 【获奖名单】回帖赢好礼 | 电源解决方案和技术

    已提交  

  • 2025-04-22
  • 回复了主题帖: 【行空板K10评测】01简介

    用的是哪个ESP32的模块 啊,有个清楚点的照片吗

  • 2025-04-14
  • 回复了主题帖: 【FireBeetle 2 ESP32 C6】下载 micropython 固件的几种方法

    刷了micropython固件后,再想刷回arduino的固件,可以吗?提供arduino的固件吗?

  • 2025-03-28
  • 发表了主题帖: 【树莓派Pico 2 RP2350开发板】双核通讯FIFO分析与测试

    关于fifo的函数,在C语言的SDK中有如下几个: SIO模块包含两个FIFO(先进先出队列),用于在两个核心之间传递数据、消息或有序事件。每个FIFO的位宽为32位,深度为4个条目。其中一个FIFO只能由核心0写入、核心1读取,另一个FIFO则只能由核心1写入、核心0读取。   在例程中使用的是: multicore_fifo_push_blocking,入栈操作 multicore_fifo_pop_blocking,出栈操作   1、multicore_fifo_push_blocking内部调用的是multicore_fifo_push_blocking_inline,实际是把数据,写入sio_hw->fifo_wr寄存器、   该函数会阻塞当前核心,直到目标 FIFO 有空间可写入数据。若 FIFO 已满,调用线程会暂停执行,直到另一个核心通过 multicore_fifo_pop_blocking 读取数据腾出空间 这是一个32位的寄存器   类似的,multicore_fifo_pop_blocking读取 寄存器sio_hw->fifo_rd中的数值。 阻塞读取:该函数会阻塞当前核心,直到目标 FIFO 中有数据可读取。若 FIFO 为空,调用线程会暂停执行,直到另一个核心通过 multicore_fifo_push_blocking 写入数据 若需避免阻塞,可先用 multicore_fifo_rvalid() 检查 FIFO 是否有数据 if (multicore_fifo_rvalid()) { uint32_t data = multicore_fifo_pop_blocking(); } 这样一入一出,就可以让数据在两个核心之间传输,传输一些标志,设计一些信号量,实现互锁机制就没有问题。 需要注意,这个函数是阻塞的,就是在运行这两个函数后,其下面的代码是无法运行的。 当然,这种检查FIFO的方式还是效率低一些,芯片还支持了FIFO 的中断方式、门铃方式,都是可以比较快速的进行核间的通讯,可以两种方式进行配置使用,增加实时性。   整个测试代码如下: #include <stdio.h> #include "pico/stdlib.h" #include "hardware/pio.h" #include "hardware/timer.h" #include "hardware/clocks.h" #include "hardware/pll.h" #include "pico/multicore.h" void pico_set_led(bool led_on) { gpio_put(PICO_DEFAULT_LED_PIN, led_on); } #ifndef LED_DELAY_MS #define LED_DELAY_MS 250 #endif #define LED_FLAG 1 #define FLAG_VALUE 123 int pico_led_init(void) { gpio_init(PICO_DEFAULT_LED_PIN); gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT); return PICO_OK; } void core1_entry() { multicore_fifo_push_blocking(FLAG_VALUE); uint32_t g = multicore_fifo_pop_blocking(); while (1) { pico_set_led(true); sleep_ms(LED_DELAY_MS); pico_set_led(false); sleep_ms(LED_DELAY_MS); } } int main() { int flag1,flag2; flag1=0; flag2=0; stdio_init_all(); pico_led_init(); multicore_launch_core1(core1_entry); uint32_t g = multicore_fifo_pop_blocking(); if (g != FLAG_VALUE){ printf("Hmm, that's not right on core 0!\n"); flag1=1; } else { multicore_fifo_push_blocking(FLAG_VALUE); printf("It's all gone well on core 0!"); flag2=1; } while (true) { printf("flag1=%d, flag2=%d!\n",flag1,flag2); sleep_ms(1500); } }   主main函数的串口输出 : 如果把multicore_fifo_push_blocking注释一个,那么整个程序就会卡在multicore_fifo_pop_blocking()上了。                                  

  • 回复了主题帖: 【树莓派Pico 2 RP2350开发板】双核程序运行

    秦天qintian0303 发表于 2025-3-28 12:21 双核需要分别下载吗?模式有什么不同?   不需要分别下载,RISC的主程序相当于一个函数而已。只烧写一次就行

  • 发表了主题帖: 【树莓派Pico 2 RP2350开发板】双核程序运行

    与TI的多核处理器芯片的开发方式不同,RP2350的多核开发,并不是为每个内核新建独立的一个工程,而是在一个工程中包含所有代码 ,通过SDK中的API来启动并支行另一个内核的程序。   tight_loop_contents 是一个在树莓派 Pico 的 SDK 中常用的宏,通常用于在程序中创建一个空的循环体,以防止程序直接退出,同时允许调试器暂停程序。 启动第二个核心的函数为multicore_launch_core1 (); 修改CMakeLists.txt文件,添加pico_multicore支持 如下所示:       源文件中,增加头文件:#include "pico/multicore.h"   先写一个在risc-v内核中运行的一个主函数。 这个函数类似于main函数,只是运行于另一个内核中。 例如,在另一个内核 中去翻转LED灯   void core1_entry() { pico_led_init(); while (1) { pico_set_led(true); sleep_ms(LED_DELAY_MS); pico_set_led(false); sleep_ms(LED_DELAY_MS); } } 而真正的main函数中,用于周期输出 Hello int main() { stdio_init_all(); multicore_launch_core1(core1_entry); while (true) { printf("Hello, world!\n"); sleep_ms(1000); } }   可以看到,外设的初始化工作,都是在core1_entry函数中进行配置的, main中进行串口输出,risc中进行LED闪烁。 这种方式与很多多核异构芯片的运行方式是差不多的,一个主核在启动后,动态加载另一个或多个内核的程序再分别单独进行。     内核控制的函数比较少,有4个,分别是: void multicore_reset_core1 (void) void multicore_launch_core1 (void(*entry)(void)) void multicore_launch_core1_with_stack (void(*entry)(void), uint32_t *stack_bottom, size_t stack_size_bytes) void multicore_launch_core1_raw (void(*entry)(void), uint32_t *sp, uint32_t vector_table) 在没有核间通讯时,两个核心是单各自运行。两个内核之间的通讯,可以通过fifo、queue、中断等方式。 这里开发时,如果没有通讯与互锁机制,会出现外设的竞争,导致程序错乱。

  • 2025-03-13
  • 回复了主题帖: 【回帖赢50元京东卡】电源解决方案和技术

     

  • 回复了主题帖: 【回帖赢50元京东卡】电源解决方案和技术

    本帖最后由 jinyi7016 于 2025-3-13 11:29 编辑    

  • 回复了主题帖: 【回帖赢50元京东卡】电源解决方案和技术

     

  • 2025-03-06
  • 发表了主题帖: 【树莓派Pico 2 RP2350开发板】功耗测试

    经过查看C SDK的文档,发现并没有相应进入低功耗模式的函数。只能是通过降低芯片的主频来达到降功耗的目的。 这里测试时,把LED关了,也把定时器、串口等外设关了,只是在while中有一个sleep的延时函数。 于是测试了50、100、150MHz下,在关闭定时器、IO情况下的电流。 如下图所示:     修改主频的代码如下:   #define PLL_SYS_KHZ (150 * 1000) set_sys_clock_khz(PLL_SYS_KHZ, true); clock_configure( clk_peri, 0, // No glitchless mux CLOCKS_CLK_PERI_CTRL_AUXSRC_VALUE_CLKSRC_PLL_SYS, // System PLL on AUX mux PLL_SYS_KHZ * 1000, // Input frequency PLL_SYS_KHZ * 1000 // Output (must be same as no divider) ); 需要另外注意的是,在使用VS code的扩展进行开发时,每次烧写程序,并不需要单独按下BOOT后上电,可以直接点VS Code的 RUN直接进行代码 的下载。   但如果把主频设置的过低的话,这里使用Run也可能无法烧写程序,这时,需要按下BOOT来操作烧写了。 RP2350看来是以高性能为特点的,低功耗并不是她的赛道。

最近访客

< 1/3 >

统计信息

已有94人来访过

  • 芯积分:1455
  • 好友:1
  • 主题:24
  • 回复:169

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言