Open IcyFeather233 opened 1 year ago
先测SPI I2C
把测试代码也放到文章里
I2C, SPI, PIN, PWM, WATCHDOG. RTC, UART, ADC,DAC,UART 都测一下
目前的想法: i2c spi UART pin都能做到板间通信 用两块板子互测
目前的想法: i2c spi UART pin都能做到板间通信 用两块板子互测
尽量不要用两块板子, 用一块板子尽量搞定,两块板子的测试先不考虑。
你先测pin吧。 把pin所有接口都测一遍。
使用外设测试:
对于I2C接口,可以使用一个I2C的EEPROM芯片或者一个I2C的温湿度传感器来测试读写数据的功能。 对于SPI接口,可以使用一个SPI的Flash芯片或者一个SPI的OLED显示屏来测试数据传输的功能。 对于PIN接口,可以使用一个LED灯或者一个按键来测试高低电平的控制和检测功能。 对于PWM接口,可以使用一个蜂鸣器或者一个舵机来测试占空比和频率的调节功能。 对于WATCHDOG接口,可以使用一个定时器或者一个中断来测试看门狗的复位功能。 对于RTC接口,可以使用一个DS1307芯片或者一个LCD显示屏来测试实时时钟的设置和读取功能。 对于UART接口,可以使用一个USB转串口模块或者一个蓝牙模块来测试串口通信的功能。 对于ADC接口,可以使用一个电位器或者一个光敏电阻来测试模拟信号的采样功能。 对于DAC接口,可以使用一个音频放大器或者一个示波器来测试模拟信号的输出功能。
测试 pin 接口的初步想法:
#include <rtthread.h>
#include <rtdevice.h>
#define LED_PIN 0 // LED灯连接的引脚编号
#define KEY_PIN 1 // 按键连接的引脚编号
// 按键中断回调函数
void key_isr(void *args)
{
rt_uint32_t pin = (rt_uint32_t)args; // 获取引脚编号
rt_kprintf("key pin %d is pressed\n", pin); // 打印按键状态
}
int main(void)
{
// 设置LED灯引脚为输出模式
rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT);
// 设置按键引脚为输入模式,并开启上拉电阻
rt_pin_mode(KEY_PIN, PIN_MODE_INPUT_PULLUP);
// 绑定按键引脚的下降沿中断,并设置回调函数和参数
rt_pin_attach_irq(KEY_PIN, PIN_IRQ_MODE_FALLING, key_isr, (void *)KEY_PIN);
// 使能按键引脚的中断
rt_pin_irq_enable(KEY_PIN, PIN_IRQ_ENABLE);
while (1)
{
// 设置LED灯引脚为高电平,点亮LED灯
rt_pin_write(LED_PIN, PIN_HIGH);
// 延时500毫秒
rt_thread_mdelay(500);
// 设置LED灯引脚为低电平,熄灭LED灯
rt_pin_write(LED_PIN, PIN_LOW);
// 延时500毫秒
rt_thread_mdelay(500);
// 读取按键引脚的电平,并打印结果
rt_kprintf("key pin %d level is %d\n", KEY_PIN, rt_pin_read(KEY_PIN));
}
return 0;
}
然后在main函数中加入一行代码:
// 在while循环之前,调用rt_pin_detach_irq(),脱离按键引脚的中断回调函数
rt_pin_detach_irq(KEY_PIN);
然后重新编译和下载程序,你会发现按键被按下时不会再打印信息了。
至此,我们完成了所有这些 pin 接口的测试:
rt_pin_get() | 获取引脚编号 -- | -- rt_pin_mode() | 设置引脚模式 rt_pin_write() | 设置引脚电平 rt_pin_read() | 读取引脚电平 rt_pin_attach_irq() | 绑定引脚中断回调函数 rt_pin_irq_enable() | 使能引脚中断 rt_pin_detach_irq() | 脱离引脚中断回调函数尝试把input PIN和output PIN 用导线连起来,写个测试用例。检测几个接口。
ARTPI 引脚分布:
目前I2C准备使用MPU6050来测 参考资料: 【RT-Thread&ART-PI】使用软件I2C读取mpu6050 关于art-pi的i2c和SPi的几个问题 如何用GPIO模拟软件I2C和软件SPI: https://github.com/RT-Thread/rt-thread/blob/master/bsp/stm32/libraries/HAL_Drivers/drv_soft_i2c.c https://github.com/RT-Thread/rt-thread/blob/master/bsp/stm32/libraries/HAL_Drivers/drv_soft_spi.c 设备驱动代码: \components\drivers\spi\spi-bit-ops.c \components\drivers\i2c\i2c-bit-ops.c
至于spi,似乎ARTPI上有一个外部SPI Flash可以用来测 参考资料: RT-Thread ART-Pi 外部SPI Flash 使用FATFS文件系统 【RT-Thread&ART-PI】文件系统在SPI Flash上的使用
i2c使用mpu6050测试,借用了mpu6xxx的包,有关帖子在这:
https://club.rt-thread.org/ask/article/ea544d70431d6554.html
RT-Thread ART-Pi 外部SPI Flash 使用FATFS文件系统 参考资料: https://blog.csdn.net/tcjy1000/article/details/123887126 https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/fal/fal?id=fal-%e7%bb%84%e4%bb%b6
ART-Pi 外部SPI Flash 使用 elmfatfs 文件系统 已经完成: https://club.rt-thread.org/ask/article/95ba2c4f40533553.html
RC522 SPI 测试成功,已发布帖子:https://club.rt-thread.org/ask/article/e912436e983807b3.html
pwm准备找舵机or蜂鸣器测试 UART准备用USB转串口模块测试
pwm准备找舵机or蜂鸣器测试 UART准备用USB转串口模块测试
UART 试下用ESP32吧,AT 模块,你应该有吧?
pwm准备找舵机or蜂鸣器测试 UART准备用USB转串口模块测试
UART 试下用ESP32吧,AT 模块,你应该有吧?
我之前没有用过 我去了解一下这个
写一篇文章 如何测试ARTPI的接口是不是好的