Xiao's Blog

Xiao's Blog

SPI理论基础
发表于2025-08-20
SPI 协议简介SPI(Serial Peripheral Interface)协议是一种主从式的通信协议,主设备可以同时控制多个从设备,但每个从设备只能被一个主设备控制。SPI 协议的主要特点是通信速度快,但通信线路较多,常用于短距离的板内通信。 SPI 通信必须由主机发起通信(无论是发送还是接收),从机被动接受。从机不能主动发送数据。 SPI 接口形式SPI 接口有如下几个引脚: SCLK(Serial Clock):时钟信号 MOSI(Master Output / Slave Input):主设备输出、从设备输入 MISO(Master Input / Slave Output):主设备输入、从设备输出 CS(Chip Select):片选信号,用于选择从设备 此处只讨论标准 SPI,不讨论 Dual SPI、Qual SPI 等扩展协议。 SPI 时序片选信号SPI 传输过程中,输出 CS 为低电平,选择从设备。从设备只有在 CS 为低电平时,才会响应主设备的时钟信号。 在多个从设备的情况下,可以使用多个 CS 引脚,每个 CS 引脚对应...
IIC理论基础
发表于2025-08-19
概要IIC 是两线串行通信协议(serial data line (SDA) serial clock line (SCL)),支持多设备于同一总线通信,每个设备拥有唯一地址来标识。 速度模式 标准模式:最慢的模式 快速模式:要求总线容值和设备兼容性能匹配 快速+模式:同上 下面两个稍微有些特殊: 高速模式:两者需协商后才能启用该模式 超快模式:该模式只能进行写操作,并且一些IIC功能也不可用 物理层两线连接 开漏连接SDA和SCL都要开漏连接,两者各自连接到一个NMOS,以便可以在需要的时候接地来拉低总线。开漏连接就是IIC能连接多个设备的原因。 协议开始和停止 开始:将 SDA 和 SCL 都拉低(先拉 SDA) 结束:将 SDA 和 SCL 都释放为高电平(先放 SCL) 逻辑1和0 SDA 释放高时为逻辑 1,下拉时为逻辑 0 SCL 上升沿和下降沿采样时 SDA 的状态必须相同,否则无效(因为会被识别为开始或结束信号) 通信帧一个帧9个bit,为了开始通信,需要发送开始信号后接设备地址(7bit or 10bit,10bit则要发两个bytes) 若...
WSL下编译rv110x系列芯片固件
发表于2024-11-20
介绍系统使用 Windows 11 WSL2 Ubuntu 24.04 遇到的问题一、没有 python 这个命令是因为安装了 python3 但没有 python 没有指向它 sudo apt install python-is-python3 安装该包来解决这个问题 二、PATH 包含空格WSL 把 windows 的 PATH 也一起弄到 Linux 内了 修改 WSL 配置文件 /etc/wsl.conf 添加 12[interop]appendWindowsPath=false 关闭 wsl 八秒以上再启动即可解决 三、找不到 cpio 模块安装一下 sudo apt install cpio
Nanopi neo core 作为下位机首次配置流程
发表于2023-05-03
原本的配置流程链接 准备工作硬件准备 NanoPi NEO Core 板子 4G 及以上的 TF 卡和读卡器 USB 转串口 水下机器人主板(提供网口和供电) 软件准备 安装 SSH 软件(较新的 Windows 系统一般自带,也可以去下载专门的 SSH 软件,如:putty 、finalshell、MobXterm等等) 串口终端(如 putty 、MobXterm 等等) 前往 官方 WiKi 下载系统镜像,注意要下载 带 eflasher 的 Ubuntu xenial 4.14 ,即文件名类似于 h3_ eflasher friendlycore-xenial_ 4.14_ armhf 20210618.img.zip 的镜像文件 开始烧录固件(全新的 Nano Pi 会内置该固件,可以直接跳到系统配置) 向 SD 卡写入镜像使用镜像写入工具(如 win32diskimager),选择指定镜像烧录(烧录前请确保 SD 卡只有一个分区) 使用串口连接 Nano Pi请将 USB 转串口连接到 Nano Pi 的 RX0 和 TX0 引脚,并且共地,引脚图如下: 电脑...
RockPi 5B Armbian 首次开机设置流程
发表于2023-04-03
镜像烧录下载 Armbian 最新镜像 Armbian_x.x.x_Rock-5b_jammy_legacy_x.x.x_gnome_desktop.img.xz 烧录到SD内(推荐使用 Raspberry Pi Imager) 安装后相关设置 首先启动3D加速 12345sudo add-apt-repository ppa:liujianfeng1994/panfork-mesasudo add-apt-repository ppa:liujianfeng1994/rockchip-multimediasudo apt updatesudo apt dist-upgradesudo apt install kodi 如果要使用Docker 12update-alternatives --set iptables /usr/sbin/iptables-legacyupdate-alternatives --set ip6tables /usr/sbin/ip6tables-legacy 安装中文字体(后把shell改为中文才不会乱码) 12sudo apt-get inst...
ESP32-IDF WIFI的使用(1) 初步入门
发表于2023-01-03
WiFi相关文档参阅 乐鑫IDF编程文档 具体启动流程如下: 12345678910111213141516171819ESP_ERROR_CHECK(esp_netif_init()); //创建一个 LwIP 核心任务,并初始化 LwIP 相关工作 ESP_ERROR_CHECK(esp_event_loop_create_default()); //创建一个系统事件任务,并初始化应用程序事件的回调函数。在此情况下,该回调函数唯一的动作就是将事件中继到应用程序任务中 ESP_ERROR_CHECK(esp_netif_create_default_wifi_sta()); //创建有 TCP/IP 堆栈的默认网络接口实例绑定 station wifi_init_config_t wifi_init_config = WIFI_INIT_CONFIG_DEFAULT; ESP_ERROR_CHECK(esp_wifi_init(&wifi_init_config)); ESP_ERROR_CHECK(esp_wifi_set_m...
ESP32-IDF 自定义分区表的编写
发表于2023-01-02
内容1234# Name, Type, SubType, Offset, Size, Flagsnvs, data, nvs, , 0x6000,phy_init, data, phy, , 0x1000,factory, app, factory, , 1M, 第一个为NVS分区,大小为24K多一点;第三个就是存放程序的地方,大小为1MByte 我们在底下多加一行NVS 1my_nvs, data, nvs, , 1M, 将这些内容保存为 partitions.csv 后放在项目根目录并修改 Manuconfig 里面使用的分区表. 使用这里以NVS为例: 1234nvs_handle_t testhandle;nvs_open_from_partition("my_nvs", "test_name", NVS_READWRITE, &testhandle);...
ESP32-IDF 非易失性存储 NVS (二) 相关工具
发表于2023-01-02
NVS迭代器相当于终端的 ls 命令,可以遍历 NVS 所有的 key 和 value 12345678910// Example of listing all the key-value pairs of any type under specified partition and namespace nvs_iterator_t it = NULL; esp_err_t res = nvs_entry_find(<nvs_partition_name>, <namespace>, NVS_TYPE_ANY, &it); while(res == ESP_OK) { nvs_entry_info_t info; nvs_entry_info(it, &info); // Can omit error check if parameters are guaranteed to be non-NULL printf("key '%s', type '%d' \...
ESP32-IDF 非易失性存储 NVS (一) 入门
发表于2022-12-19
介绍NVS格式就是一种flash的文件管理方式,因为他自身这种键值对的数据结构有较大的空间开销,所有不适合很长的数据(重复的key会浪费空间),而适合一对一对的这种短的数据(优势应该是方便查管理).在ESP32上NVS是基础,比如WIFI都会使用到NVS来存储配置文件。乐鑫官方文档 API 函数名 描述 nvs_flash_init() 挂载NVS nvs_flash_deinit() 卸载NVS nvs_open(const char* namespace_name, nvs_open_mode_t open_mode, nvs_handle_t *out_handle) 打开对应namespace的NVS nvs_close(nvs_handle_t *out_handle) 关闭NVS nvs_get_xx(nvs_handle_t c_handle, const char* key, xx* out_value) 获取数据(如果对应key数据不存在则out_value不会被修改) nvs_set_xx(nvs_handle_t handle,...
ESP32-IDF 自定义菜单 Menuconfig 入门
发表于2022-12-17
介绍 程序写好后,肯定会有很多变量需要设置,为了方便他人和未来的自己,我们可以把这些变量做到 Menuconfig 中。这样子,其他人或者未来的自己,就不需要打开代码,直接使用 Menuconfig 配置后,编译再上传即可。 乐鑫文档; https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/kconfig.html Kconfig 标准; https://www.kernel.org/doc/html/latest/kbuild/kconfig-language.html 实例例如下面这段点灯代码: 12345678910111213141516#define LEDPIN 2#define DELAY_MS_TIME 2000...void app_main(void){ int pin_status = 0; gpio_reset_pin(LEDPIN); gpio_set_direction(LEDPIN, GPIO_MODE_OUTPUT); ...
123…5
avatar
Fu Xiaofeng
文章
43
标签
27
分类
0
关注我
公告
Nothing here...
最新文章
奇异递归模板模式 CRTP2025-09-02
this auto&& self 详解2025-09-02
引用包装器2025-09-02
移动语义2025-09-02
左值和右值详解2025-09-02
标签
H3 IDF WiiU Linux RV110x NanoPi C Robot SPI Armbian Script WSL PlatformIO Game CAN RockPi Aroma ESP32 SBC Arduino C++ FreeRTOS Shell IIC UART Underwater Luckfox
归档
  • 九月 2025 6
  • 八月 2025 6
  • 十一月 2024 1
  • 五月 2023 1
  • 四月 2023 1
  • 一月 2023 3
  • 十二月 2022 2
  • 十一月 2022 6
网站信息
文章数目 :
43
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2025 By Fu Xiaofeng框架 Hexo 7.3.0|主题 Butterfly 5.4.3