本帖最后由 xu_xupt 于 2024-11-19 10:36 编辑

【联盛德 W800 Arduino开发板】基于Arduino的PWM测试

1、           开发板简介和W800特性

W800具有非常好的性能,集成32位XT804处理器,工作频率240MHz,内置DSP、浮点运算单元和安全引擎,配备2MBFlash和288KBRAM,集成5路UART高速接口、2路12位SD-ADC(最高采样率1KHz)、1个I2C控制器、最多18个GPIO和5路PWM接口,以及1路DuplexI2S控制器。

另外支持Tee安全引擎等等,支持GB15629.11-2006、IEEE802.11b/g/n、多种Wi-Fi安全协议(WPA/WPA2/WPS等)和信道接入方式,支持BT/BLE双模工作模式以及BT/BLE4.2协议等等,另外支持待机功耗。

2、           开发环境搭建

在 Arduino IDE 中安装

1、文件 -> 偏好设置

2、在附加开发板管理器URL中输入以下URL:

https://raw.githubusercontent.com/board707/w80x_arduino/hal-v0.6.0/package_w80x_index.json

如果Error: 13 INTERNAL: can not installw80x_duino:csky@2021.04.23 tool使用替代方案:

https://raw.githubusercontent.com/board707/w80x_arduino/hal-v0.6.0/package_w80x_test_index.json

如果此方法不起作用,请尝试以下任一链接地址:

http://dl.isme.fun/w80x_arduino/package_w80x_index.json

https://raw.githubusercontent.com/board707/w80x_arduino/hal-v0.6.0/package_w80x_isme_proxy_index.json

clip_image001.png

file:///C:/Users/xujiwei/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg

Arduino支持的开发板较多,包括:

·        W800

·        W801(引脚排列

·        W802

·        W806(引脚排列

·        Air_101(W800 克隆)(引脚排列

·        Air_103(W806 克隆)(引脚排列


3、           PWM测试

clip_image004.jpg

file:///C:/Users/xujiwei/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg

#include <Arduino.h> // 引入 Arduino 核心库  

// 定义最大和最小占空比  

#define DUTY_MAX 240   //最大占空比  

#define DUTY_MIN 50    //最小占空比  

// 定义数组 m 和d

// m 数组用于存储每个通道的状态:0表示增加亮度,1表示减小亮度  

// d 数组用于存储每个通道的当前占空比  

int m[3] = { 0 }, d[3] = { DUTY_MIN,
(DUTY_MIN + DUTY_MAX) / 2, DUTY_MAX - 1 };

// 定义用于 PWM 输出的引脚

int pwm_pin[3] = { LED_BUILTIN_1,
LED_BUILTIN_2, LED_BUILTIN_3 };  

// 初始化设置  

void setup() {  

  //为每个 PWM 引脚设置为输出模式  

  for
(int i = 0; i < 3; i++) {  

   pinMode(pwm_pin, PWM_OUT); //设置引脚模式为 PWM 输出

}  

}  

// 主循环  

void loop() {  

  //对每个 LED 执行亮度变化  

  for
(int i = 0; i < 3; i++) {  

   if (m == 0)  //如果状态为 0 则增加亮度  

   {  

     analogWrite(pwm_pin, d++); //将当前占空比写入 PWM 引脚,并自增

     //如果当前占空比达到最大值,则切换状态为减少亮度  

     if (d == DUTY_MAX) m = 1;  

    }
else  //否则 (状态为 1),则减少亮度  

   {  

     analogWrite(pwm_pin, d--); //将当前占空比写入 PWM 引脚,并自减

     //如果当前占空比达到最小值,则切换状态为增加亮度  

     if (d == DUTY_MIN) m = 0;  

   }  

}  

   //等待 5 毫秒,以调整更新频率  

delay(5);  

}


4、           结果

clip_image012.jpg clip_image008.jpg clip_image010.jpg clip_image006.jpg




file:///C:/Users/xujiwei/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg

file:///C:/Users/xujiwei/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg

file:///C:/Users/xujiwei/AppData/Local/Temp/msohtmlclip1/01/clip_image010.jpg

file:///C:/Users/xujiwei/AppData/Local/Temp/msohtmlclip1/01/clip_image012.jpg


Q1:资料过少,原理图有点莫名,例如下图

clip_image013.png

file:///C:/Users/xujiwei/AppData/Local/Temp/msohtmlclip1/01/clip_image014.jpg

Q2;存在错误。W800只有2个ADC,但是图例有6个,有点莫名

clip_image016.jpg clip_image017.png

file:///C:/Users/xujiwei/AppData/Local/Temp/msohtmlclip1/01/clip_image016.jpg

file:///C:/Users/xujiwei/AppData/Local/Temp/msohtmlclip1/01/clip_image018.jpg

Q3:对Arduino支持不够