02.ESP32教程-linux开发环境搭建
Linux下的软件开发和编译环境配置
Linux下的软件开发和编译环境配置在Linux操作系统中,配置适合软件开发和编译的环境是非常重要的。
正确地设置开发环境,可以提高开发效率,同时确保软件的质量和稳定性。
本文将介绍如何在Linux下配置软件开发和编译环境,以帮助开发人员顺利进行开发工作。
一、安装必要的开发工具在开始配置软件开发环境之前,您需要安装一些必要的开发工具。
在Linux中,常用的开发工具包括GCC编译器、Make工具、调试器(如GDB)、版本控制工具(如Git)等。
您可以通过包管理器(如APT、YUM等)来安装这些工具。
以下是安装这些工具的示例命令(以基于Debian的系统为例):```sudo apt-get updatesudo apt-get install build-essentialsudo apt-get install gdbsudo apt-get install git```通过执行这些命令,您可以安装所需的开发工具,以便后续的配置步骤。
二、配置开发环境要配置软件开发环境,您需要设置一些环境变量和配置文件。
以下是一些常见的配置步骤:1. 配置PATH环境变量在Linux中,PATH环境变量用于指定可执行程序的搜索路径。
为了方便地访问开发工具和编译器,您应该将它们所在的目录添加到PATH环境变量中。
您可以通过编辑`.bashrc`文件来实现这一点。
打开终端,输入以下命令编辑文件:```vi ~/.bashrc```在文件末尾添加以下行(假设开发工具的路径为`/usr/local/bin`):```export PATH=$PATH:/usr/local/bin```保存并退出文件。
然后,使用以下命令使更改生效:```source ~/.bashrc```现在,您可以在任何目录下直接运行开发工具和编译器。
2. 配置编辑器选择一个适合您的编辑器来编写代码是很重要的。
在Linux中有多种编辑器可供选择,如Vim、Emacs、Sublime Text等。
esp32 技术参考手册
ESP32技术参考手册版本4.7乐鑫信息科技版权©2022关于本手册《ESP32技术参考手册》的目标读者群体是使用ESP32芯片的应用开发工程师。
本手册提供了关于ESP32的具体信息,包括各个功能模块的内部架构、功能描述和寄存器配置等。
芯片的管脚描述、电气特性和封装信息等可以从《ESP32技术规格书》获取。
文档版本请至乐鑫官网https:///zh-hans/support/download/documents下载最新版本文档。
修订历史请至文档最后页查看修订历史。
文档变更通知用户可以通过乐鑫官网订阅页面/zh-hans/subscribe订阅技术文档变更的电子邮件通知。
证书下载用户可以通过乐鑫官网证书下载页面/zh-hans/certificates下载产品证书。
目录1系统和存储器24 1.1概述24 1.2主要特性24 1.3功能描述261.3.1地址映射261.3.2片上存储器261.3.2.1Internal ROM0271.3.2.2Internal ROM1271.3.2.3Internal SRAM0271.3.2.4Internal SRAM1281.3.2.5Internal SRAM2281.3.2.6DMA281.3.2.7RTC FAST Memory291.3.2.8RTC SLOW Memory291.3.3片外存储器291.3.4Cache291.3.5外设301.3.5.1不对称PID Controller外设321.3.5.2不连续外设地址范围321.3.5.3存储器速度32 2中断矩阵(INTERRUPT)332.1概述33 2.2主要特性33 2.3功能描述332.3.1外部中断源332.3.2CPU中断362.3.3分配外部中断源至CPU外部中断362.3.4屏蔽CPU的NMI类型中断372.3.5查询外部中断源当前的中断状态37 3复位和时钟38 3.1System复位383.1.1概述383.1.2复位源38 3.2系统时钟393.2.1概述393.2.2时钟源403.2.3CPU时钟403.2.4外设时钟413.2.4.1APB_CLK源413.2.4.2REF_TICK源413.2.4.3LEDC_SCLK源423.2.4.4APLL_SCLK源423.2.4.5PLL_D2_CLK源423.2.4.6时钟源注意事项423.2.5Wi-Fi BT时钟423.2.6RTC时钟423.2.7音频PLL43 4IO_MUX和GPIO交换矩阵(GPIO,IO_MUX)444.1概述44 4.2通过GPIO交换矩阵的外设输入454.2.1概述454.2.2功能描述454.2.3简单GPIO输入46 4.3通过GPIO交换矩阵的外设输出464.3.1概述464.3.2功能描述464.3.3简单GPIO输出47 4.4IO_MUX的直接I/O功能484.4.1概述484.4.2功能描述48 4.5RTC IO_MUX的低功耗和模拟I/O功能484.5.1概述484.5.2功能描述48 4.6Light-sleep模式管脚功能48 4.7Pad Hold特性49 4.8I/O Pad供电494.8.1VDD_SDIO电源域50 4.9外设信号列表50 4.10IO_MUX Pad列表55 4.11RTC_MUX管脚清单56 4.12寄存器列表574.12.1GPIO交换矩阵寄存器列表574.12.2IO MUX寄存器列表584.12.3RTC IO MUX寄存器列表59 4.13寄存器614.13.1GPIO交换矩阵寄存器614.13.2IO MUX寄存器694.13.3RTC IO MUX寄存器70 5DPort寄存器825.1概述82 5.2主要特性82 5.3功能描述825.3.1系统和存储器寄存器825.3.2复位和时钟寄存器825.3.3中断矩阵寄存器825.3.4DMA寄存器825.3.5MPU/MMU寄存器825.3.6APP_CPU控制器寄存器825.3.7外设时钟门控和复位83 5.4寄存器列表84 5.5寄存器916DMA控制器(DMA)107 6.1概述107 6.2特性107 6.3功能描述1076.3.1DMA引擎的架构1076.3.2链表108 6.4UART DMA(UDMA)控制器108 6.5SPI DMA控制器110 6.6I2S DMA控制器1117SPI控制器(SPI)112 7.1概述112 7.2SPI特征112 7.3GP-SPI接口1137.3.1GP-SPI四线全双工模式1137.3.2GP-SPI四线半双工模式1147.3.3GP-SPI三线半双工模式1147.3.4GP-SPI数据缓存115 7.4GP-SPI时钟控制1157.4.1GP-SPI时钟极性和时钟相位1157.4.2GP-SPI时序116 7.5并行QSPI接口1177.5.1并行QSPI接口通信格式117 7.6GP-SPI中断硬件1187.6.1SPI中断1187.6.2DMA中断118 7.7寄存器列表119 7.8寄存器1218SDIO从机控制器142 8.1概述142 8.2主要特性142 8.3功能描述1428.3.1SDIO Slave功能块图1428.3.2SDIO总线上的数据发送和接收1428.3.3寄存器访问1438.3.4DMA1438.3.5包的发送和接收流程1448.3.5.1Slave向Host发送包1448.3.5.2Slave从Host接收包1468.3.6SDIO总线时序1478.3.7中断1488.3.7.1Host侧中断1488.3.7.2Slave侧中断148 8.4寄存器列表149 8.5SLC寄存器150 8.6SLC Host寄存器159 8.7HINF寄存器1719SD/MMC主机控制器172 9.1概述172 9.2主要特性172 9.3SD/MMC外部接口信号172 9.4功能描述1739.4.1SD/MMC架构1739.4.1.1BIU模块1749.4.1.2CIU模块1749.4.2命令通路1749.4.3数据通路1759.4.3.1数据发送1759.4.3.2数据接收176 9.5CIU操作的软件限制176 9.6收发数据RAM1779.6.1发送RAM模块1779.6.2接收RAM模块177 9.7链表环结构177 9.8链表结构178 9.9初始化1809.9.1DMAC初始化1809.9.2DMAC数据发送初始化1809.9.3DMAC数据接收初始化181 9.10时钟相位选择181 9.11中断182 9.12寄存器列表182 9.13寄存器18310以太网(MAC)203 10.1概述203 10.2EMAC_CORE20510.2.1传输操作20510.2.1.1发送流量控制20510.2.1.2冲突期间的重新发送20610.2.2接收操作20610.2.2.1接收协议20610.2.2.2接收帧控制器20710.2.2.3接收流量控制20710.2.2.4接收多帧的操作处理20710.2.2.5错误处理20710.2.2.6接收状态字207 10.3MAC中断控制器208 10.4MAC地址的过滤20810.4.1单播目标地址过滤20810.4.2多播目标地址过滤20810.4.3广播地址过滤20810.4.4单播源地址过滤20810.4.5反向过滤操作20810.4.6好的发送帧与接收帧210 10.5EMAC_MTL(MAC传输层)210 10.6PHY接口21010.6.1MII(介质独立接口)21010.6.1.1MII与PHY间的接口信号21110.6.1.2MII时钟21210.6.2RMII(精简介质独立接口)21210.6.2.1RMII接口信号描述21310.6.2.2RMII时钟21310.6.3Station Management Agent(SMA)接口21410.6.4RMII接口时序要求214 10.7以太网DMA特性215 10.8链表描述符21510.8.1发送描述符21510.8.2接收描述符219 10.9寄存器列表224 10.10寄存器22511I2C控制器(I2C)260 11.1概述260 11.2主要特性260 11.3I2C功能描述26011.3.1I2C简介26011.3.2I2C架构26111.3.3I2C总线时序26211.3.4I2C cmd结构26211.3.5I2C主机写入从机26311.3.6I2C主机读取从机26711.3.7中断269 11.4寄存器列表269 11.5寄存器27112I2S控制器(I2S)281 12.1概述28112.2主要特性282 12.3I2S模块时钟283 12.4I2S模式28412.4.1支持的音频标准28412.4.1.1Philips标准28412.4.1.2MSB对齐标准28412.4.1.3PCM标准28512.4.2模块复位28512.4.3FIFO操作28512.4.4发送数据28512.4.5接收数据28712.4.6I2S主机/从机模式28812.4.7I2S PDM模式289 12.5Camera-LCD控制器29012.5.1LCD主机发送模式29112.5.2Camera从机接收模式29112.5.3ADC/DAC模式292 12.6I2S中断29312.6.1FIFO中断29312.6.2DMA中断294 12.7寄存器列表294 12.8寄存器29613UART控制器(UART)313 13.1概述313 13.2主要特性313 13.3功能描述31313.3.1UART简介31313.3.2UART架构31413.3.3UART RAM31513.3.4波特率检测31513.3.5UART数据帧31613.3.6流控31613.3.6.1硬件流控31713.3.6.2软件流控31713.3.7UDMA31813.3.8UART中断31813.3.9UHCI中断318 13.4寄存器列表31913.4.1UART寄存器31913.4.2UHCI寄存器320 13.5寄存器32214LED PWM控制器(LEDC)349 14.1概述349 14.2功能描述34914.2.1架构34914.2.2分频器35014.2.3通道35114.2.4中断352 14.3寄存器列表352 14.4寄存器35515红外遥控(RMT)364 15.1概述364 15.2功能描述36415.2.1RMT架构36415.2.2RMT RAM36515.2.3时钟36515.2.4发射器36515.2.5接收器36615.2.6中断366 15.3寄存器列表366 15.4寄存器36716电机控制脉宽调制器(PWM)372 16.1概述372 16.2主要特性372 16.3模块37416.3.1模块概述37416.3.1.1预分频器模块37416.3.1.2定时器模块37416.3.1.3操作器模块37516.3.1.4故障检测模块37716.3.1.5捕获模块37716.3.2PWM定时器模块37716.3.2.1PWM定时器模块的配置37716.3.2.2PWM定时器工作模式和定时事件生成37816.3.2.3PWM定时器影子寄存器38216.3.2.4PWM定时器同步和锁相38216.3.3PWM操作器模块38216.3.3.1PWM生成器模块38316.3.3.2死区生成器模块39316.3.3.3PWM载波模块39716.3.3.4故障处理器模块40016.3.4捕获模块40116.3.4.1介绍40116.3.4.2捕获定时器40116.3.4.3捕获通道402 16.4寄存器列表402 16.5寄存器40417脉冲计数器(PCNT)448 17.1概述448 17.2功能描述44817.2.1架构图44817.2.2计数器通道输入信号44917.2.3观察点44917.2.4举例44917.2.5溢出中断450 17.3寄存器列表450 17.4寄存器45218定时器组(TIMG)457 18.1概述457 18.2功能描述45718.2.116-bit预分频器45718.2.264-bit时基计数器45718.2.3报警产生45818.2.4MWDT45818.2.5中断458 18.3寄存器列表458 18.4寄存器46019看门狗定时器(WDT)467 19.1概述467 19.2主要特性467 19.3功能描述46719.3.1时钟46719.3.2运行过程46719.3.3写保护46819.3.4Flash启动保护46819.3.5寄存器46820eFuse控制器(eFuse)469 20.1概述469 20.2主要特性469 20.3功能描述46920.3.1结构46920.3.1.1系统参数efuse_wr_disable47020.3.1.2系统参数efuse_rd_disable47020.3.1.3系统参数coding_scheme47120.3.1.4系统参数BLK3_part_reserve47220.3.2烧写系统参数47220.3.3软件读取系统参数47520.3.4硬件模块使用系统参数47620.3.5中断476 20.4寄存器列表47720.5寄存器479 21双线汽车接口(TWAI)490 21.1概述490 21.2主要特性490 21.3功能性协议49021.3.1TWAI性能49021.3.2TWAI报文49121.3.2.1数据帧和远程帧49221.3.2.2错误帧和过载帧49421.3.2.3帧间距49521.3.3TWAI错误49621.3.3.1错误类型49621.3.3.2错误状态49621.3.3.3错误计数49621.3.4TWAI位时序49721.3.4.1名义位49721.3.4.2硬同步与再同步498 21.4结构概述49921.4.1寄存器模块49921.4.2位流处理器50021.4.3错误管理逻辑50021.4.4位时序逻辑50021.4.5接收滤波器50021.4.6接收FIFO500 21.5功能描述50021.5.1模式50021.5.1.1复位模式50121.5.1.2操作模式50121.5.2位时序50121.5.3中断管理50221.5.3.1接收中断(RXI)50221.5.3.2发送中断(TXI)50221.5.3.3错误报警中断(EWI)50221.5.3.4数据溢出中断(DOI)50321.5.3.5被动错误中断(TXI)50321.5.3.6仲裁丢失中断(ALI)50321.5.3.7总线错误中断(BEI)50321.5.4发送缓冲器与接收缓冲器50321.5.4.1缓冲器概述50321.5.4.2帧信息50421.5.4.3帧标识符50421.5.4.4帧数据50521.5.5接收FIFO和数据溢出50521.5.6接收滤波器50621.5.6.1单滤波模式50621.5.6.2双滤波模式50721.5.7错误管理50721.5.7.1错误报警限制50921.5.7.2被动错误50921.5.7.3离线状态与离线恢复50921.5.8错误捕捉50921.5.9仲裁丢失捕捉510 21.6寄存器列表511 21.7寄存器51222AES加速器(AES)524 22.1概述524 22.2主要特性524 22.3功能描述52422.3.1运算模式52422.3.2密钥、明文、密文52422.3.3字节序52422.3.4加密与解密运算52722.3.5运行效率527 22.4寄存器列表527 22.5寄存器52823SHA加速器(SHA)530 23.1概述530 23.2主要特性530 23.3功能描述53023.3.1填充解析信息53023.3.2信息摘要53023.3.3哈希运算53023.3.4运行效率531 23.4寄存器列表531 23.5寄存器53324RSA加速器(RSA)538 24.1概述538 24.2主要特性538 24.3功能描述53824.3.1初始化53824.3.2大数模幂运算53824.3.3大数模乘运算53924.3.4大数乘法运算540 24.4寄存器列表541 24.5寄存器54225随机数发生器(RNG)544 25.1概述54425.2主要特性544 25.3功能描述544 25.4编程指南544 25.5寄存器列表545 25.6寄存器54526片外存储器加密与解密(FLASH)546 26.1概述546 26.2主要特性546 26.3功能描述54626.3.1Key Generator模块54726.3.2Flash Encryption模块54726.3.3Flash Decryption模块548 26.4寄存器列表548 26.5寄存器54827存储器管理和保护单元(MMU,MPU)550 27.1概述550 27.2主要特性550 27.3功能描述55027.3.1PID控制器55027.3.2MPU/MMU55027.3.2.1嵌入式存储器55027.3.2.2片外存储器55727.3.2.3外设56228PID控制器(PID)564 28.1概述564 28.2主要特性564 28.3功能描述56428.3.1中断识别56428.3.2信息记录56528.3.3进程主动切换进程567 28.4寄存器列表568 28.5寄存器57029片上传感器与模拟信号处理574 29.1概述574 29.2电容式触摸传感器57429.2.1简介57429.2.2主要特性57429.2.3可用通用输入输出接口57529.2.4功能描述57529.2.5触发传感器的状态机575 29.3SAR ADC57729.3.1简介57729.3.2主要特性57829.3.3功能概况57829.3.4RTC SAR ADC控制器58029.3.5DIG SAR ADC控制器580 29.4霍尔传感器58229.4.1简介58229.4.2主要特性58229.4.3功能描述582 29.5数字模拟转换器58329.5.1简介58329.5.2主要特性58329.5.3结构58329.5.4余弦波形生成器58429.5.5支持DMA584 29.6寄存器列表58529.6.1传感器58529.6.2外围总线58629.6.3RTC I/O586 29.7寄存器58729.7.1传感器58729.7.2高级外围总线59629.7.3RTC I/O600 30超低功耗协处理器(ULP)601 30.1概述601 30.2主要特性601 30.3功能描述602 30.4指令集60230.4.1ALU-算数与逻辑运算60230.4.1.1对寄存器数值的运算60330.4.1.2对指令立即值的运算60330.4.1.3对阶段计数器寄存器数值的运算60430.4.2ST–存储数据至内存60530.4.3LD–从内存加载数据60530.4.4JUMP–跳转至绝对地址60630.4.5JUMPR–跳转至相对地址(基于R0寄存器判断)60630.4.6JUMPS–跳转至相对地址(基于阶段计数器寄存器判断)60730.4.7HALT–结束程序60730.4.8WAKE–唤醒芯片60730.4.9SLEEP–设置硬件计时器的唤醒周期60830.4.10WAIT–等待若干个周期60830.4.11ADC–对ADC进行测量60830.4.12I2C_RD/I2C_WR–读/写I²C60930.4.13REG_RD–从外围寄存器读取60930.4.14REG_WR–写入外围寄存器610 30.5ULP协处理器程序的执行61030.6RTC_I2C控制器61230.6.1配置RTC_I2C61230.6.2使用RTC_I2C61330.6.2.1I2C_RD-读取单个字节61330.6.2.2I2C_WR-写入单个字节61330.6.2.3检测错误条件61430.6.2.4连接I²C信号614 30.7寄存器列表61430.7.1SENS_ULP地址空间61430.7.2RTC_I2C地址空间615 30.8寄存器61530.8.1SENS_ULP地址空间61530.8.2RTC_I2C地址空间61831低功耗管理(RTC_CNTL)624 31.1概述624 31.2主要特性624 31.3功能描述62431.3.1简介62531.3.2数字内核调压器62531.3.3低功耗调压器62531.3.4Flash调压器62631.3.5欠压检测器62731.3.6RTC模块62731.3.7低功耗时钟62831.3.8电源门控的实现63031.3.9预设功耗模式63131.3.10唤醒源63331.3.11RTC计时器63331.3.12RTC Boot633 31.4寄存器列表635 31.5寄存器637词汇列表661外设相关词汇661寄存器相关词汇661修订历史662表格1-1地址映射26 1-2片上寄存器地址映射27 1-3具有DMA功能的模块29 1-4片外存储器地址映射29 1-5Cache memory模式30 1-6外设地址映射31 2-1PRO_CPU、APP_CPU外部中断配置寄存器、外部中断源中断状态寄存器、外部中断源34 2-2CPU中断36 3-1PRO_CPU和APP_CPU复位源38 3-2CPU_CLK源40 3-3CPU_CLK源40 3-4外设时钟用法41 3-5APB_CLK源41 3-6REF_TICK源41 3-7LEDC_SCLK源42 4-1IO_MUX Light-sleep管脚功能寄存器48 4-2GPIO交换矩阵外设信号50 4-3IO_MUX Pad列表55 4-4RTC_MUX管脚清单56 7-1管脚功能信号与总线信号映射关系112 7-2从机命令描述114 7-3主机模式时钟极性和相位控制寄存器值116 7-4从机模式时钟极性和相位控制寄存器值116 9-1SD/MMC管脚描述173 9-2DES0链表描述178 9-3DES1179 9-4DES2180 9-5DES3180 10-1目标地址过滤209 10-2源地址过滤209 10-3接收数据时序要求214 10-4发送数据时序要求215 10-5发送描述符0(TDES0)216 10-6发送描述符1(TDES1)218 10-7发送描述符2(TDES2)219 10-8发送描述符3(TDES3)219 10-9发送描述符6(TDES6)219 10-10发送描述符7(TDES7)219 10-11接收描述符0(RDES0)220 10-12接收描述符1(RDES1)221 10-13接收描述符2(RDES2)222 10-14接收描述符3(RDES3)222 10-15接收描述符4(RDES4)22210-16接收描述符6(RDES6)223 10-17接收描述符7(RDES7)224 11-1SCL频率配置262 12-1I2S信号总线描述282 12-2寄存器配置286 12-3发送通道模式286 12-4接收数据写入FIFO模式和对应寄存器配置287 12-54种模式对应寄存器配置288 12-6过采样率配置289 12-7下采样配置290 14-1常用配置频率及精度350 16-1操作器模块的配置参数376 16-2PWM生成器中的所有定时事件384 16-3PWM定时器递增计数时,定时事件的优先级384 16-4PWM定时器递减计数时,定时事件的优先级385 16-5控制死区时间生成器开关的寄存器394 16-6死区生成器的典型操作模式395 20-1系统参数469 20-2BLOCK1/2/3编码471 20-3烧写寄存器472 20-4时序配置474 20-5软件读取寄存器475 21-1SFF和EFF中的数据帧和远程帧493 21-2错误帧494 21-3过载帧495 21-4帧间距495 21-5名义位时序中包含的段498 21-6TWAI_CLOCK_DIVIDER_REG的bit信息;TWAI地址0x18501 21-7TWAI_BUS_TIMING_1_REG的bit信息;TWAI地址0x1c501 21-8SFF与EFF的缓冲器布局503 21-9TX/RX帧信息(SFF/EFF);TWAI地址0x40504 21-10TX/RX标识符1(SFF);TWAI地址0x44505 21-11TX/RX标识符2(SFF);TWAI地址0x48505 21-12TX/RX标识符1(EFF);TWAI地址0x44505 21-13TX/RX标识符2(EFF);TWAI地址0x48505 21-14TX/RX标识符3(EFF);TWAI地址0x4c505 21-15TX/RX标识符4(EFF);TWAI地址0x50505 21-16TWAI_ERR_CODE_CAP_REG的bit信息;TWAI地址0x30509 21-17SEG.4-SEG.0的位信息510 21-18TWAI_ARB LOST CAP_REG中的位信息;TWAI地址0x2c511 22-1运算模式524 22-2AES文本字节序525 22-3AES-128密钥字节序526 22-4AES-192密钥字节序526 22-5AES-256密钥字节序526 27-1片上存储器的MPU和MMU结构55127-2管理RTC FAST Memory的MPU551 27-3管理RTC SLOW Memory的MPU551 27-4管理片上SRAM0和SRAM2剩余128KB的MMU页模式552 27-5SRAM0MMU页边界地址553 27-6SRAM2MMU页边界地址554 27-7DPORT_DMMU_TABLE n_REG和DPORT_IMMU_TABLE n_REG555 27-8针对DMA的MPU设置556 27-9片外存储器的虚地址557 27-10PRO_CPU的MMU配置项号558 27-11APP_CPU的MMU配置项号558 27-12PRO_CPU的MMU配置项号(特殊模式)558 27-13APP_CPU的MMU配置项号(特殊模式)559 27-14片外SRAM的虚拟地址模式560 27-15片外SRAM的虚地址(正常模式)560 27-16片外SRAM的虚地址(低-高模式)560 27-17片外SRAM的虚地址(偶-奇模式)561 27-18片外RAM的MMU配置项号561 27-19管理外设的MPU562 27-20DPORT_AHBLITE_MPU_TABLE_X_REG563 28-1中断向量入口地址565 28-2PIDCTRL_LEVEL_REG565 28-3PIDCTRL_FROM_n_REG566 29-1ESP32电容式触摸传感器的管脚575 29-2SAR ADC的信号输入579 29-3ESP32的SAR ADC控制器579 29-4样式表寄存器的字段信息581 29-5I型DMA数据格式582 29-6II型DMA数据格式582 30-1对寄存器数值的ALU运算603 30-2对指令立即值的ALU运算604 30-3对阶段计数器寄存器的ALU运算604 30-4ADC指令的输入信号608 31-1RTC电源域630 31-2唤醒源633插图1-1系统结构25 1-2地址映射结构25 1-3Cache系统框图30 2-1中断矩阵结构图33 3-1系统复位38 3-2系统时钟39 4-1IO_MUX、RTC IO_MUX和GPIO交换矩阵结构框图44 4-2通过IO_MUX、GPIO交换矩阵的外设输入45 4-3通过GPIO交换矩阵输出信号47 4-4ESP32I/O Pad供电源(QFN6*6,顶视图)49 4-5ESP32I/O Pad供电源(QFN5*5,顶视图)50 6-1DMA引擎的架构107 6-2链表结构图108 6-3UDMA模式数据传输109 6-4SPI DMA110 7-1SPI系统框图112 7-2SPI四线全双工/半双工通信113 7-3SPI数据缓存115 7-4GP-SPI从机数据输出117 7-5并行QSPI接口118 7-6并行QSPI接口的通信模式118 8-1SDIO Slave功能块图142 8-2SDIO总线上数据传输143 8-3CMD53内容143 8-4SDIO Slave DMA链表结构143 8-5链表串144 8-6Slave向Host发送包的流程145 8-7Slave从Host接收包的流程146 8-8Slave CPU挂载buffer的流程147 8-9采样时序图147 8-10输出时序图148 9-1SD/MMC外设连接的拓扑结构172 9-2SD/MMC外部接口信号173 9-3SD/MMC基本架构173 9-4命令通路状态机175 9-5数据传输状态机175 9-6数据接收状态机176 9-7链表环结构178 9-8链表结构178 9-9时钟相位选择181 10-1Ethernet MAC功能概述203 10-2Ethernet功能框图205 10-3MII接口21110-4MII时钟212 10-5RMII接口213 10-6RMII时钟214 10-7接收数据时序图214 10-8发送数据时序图215 10-9发送描述符215 10-10接收链表结构219 11-1I2C Master基本架构261 11-2I2C Slave基本架构261 11-3I2C时序图262 11-4I2C命令寄存器结构263 11-5I2C Master写7-bit地址Slave264 11-6I2C Master写10-bit地址Slave265 11-7I2C Master写7-bit地址Slave的M地址RAM265 11-8I2C Master分段写7-bit地址Slave266 11-9I2C Master读7-bit地址Slave267 11-10I2C Master读10-bit地址Slave267 11-11I2C Master从7-bit地址Slave的M地址读取N个数据268 11-12I2C Master分段读7-bit地址Slave269 12-1I2S系统框图281 12-2I2S时钟283 12-3Philips标准284 12-4MSB对齐标准284 12-5PCM标准285 12-6发送FIFO数据模式286 12-7第一阶段接收数据287 12-8接收数据写入FIFO模式288 12-9PDM发送模块289 12-10PDM发送信号290 12-11PDM接收信号290 12-12PDM接收模块290 12-13LCD主机发送模式291 12-14LCD主机发送数据帧格式1291 12-15LCD主机发送数据帧格式2291 12-16Camera从机接收模式292 12-17I2S的ADC接口292 12-18I2S的DAC接口293 12-19I2S DAC接口数据输入293 13-1UART基本架构图314 13-2UART共享RAM图315 13-3UART数据帧结构316 13-4AT_CMD字符格式316 13-5硬件流控图317 14-1LED_PWM架构349 14-2LED_PWM高速通道框图349 14-3LED_PWM分频器35014-4LED_PWM输出信号图351 14-5渐变占空比输出信号图351 15-1RMT架构364 15-2数据结构365 16-1MCPWM外设概览372 16-2预分频器模块374 16-3定时器模块374 16-4操作器模块375 16-5故障检测模块377 16-6捕获模块377 16-7递增计数模式波形378 16-8递减计数模式波形379 16-9递增递减循环模式波形,同步事件后递减379 16-10递增递减循环模式波形,同步事件后递增379 16-11递增模式中生成的UTEP和UTEZ380 16-12递减模式中生成的UTEP和UTEZ381 16-13递增递减模式中生成的UTEP和UTEZ382 16-14PWM操作器的子模块383 16-15递增递减模式下的对称波形386 16-16递增计数模式,单边不对称波形,PWM x A和PWM x B独立调制–高电平387 16-17递增计数模式,脉冲位置不对称波形,PWM x A独立调制388 16-18递增递减循环计数模式,双沿对称波形,在PWM x A和PWM x B上独立调制–高电平有效389 16-19递增递减循环计数模式,双沿对称波形,在PWM x A和PWM x B上独立调制–互补390 16-20NCI在PWM x A输出上软件强制事件示例391 16-21CNTU在PWM x B输出上软件强制事件示例392 16-22死区模块的开关拓扑394 16-23高电平有效互补(AHC)死区波形395 16-24低电平有效互补(ALC)死区波形395 16-25高电平有效(AH)死区波形396 16-26低电平有效(AL)死区波形396 16-27PWM载波操作的波形示例398 16-28载波模块的第一个脉冲和之后持续的脉冲示例399 16-29PWM载波模块中持续脉冲的7种占空比设置400 17-1PULSE_CNT单元基本架构图448 17-2PULSE_CNT递增计数图450 17-3PULSE_CNT递减计数图450 21-1数据帧和远程帧中的位域492 21-2错误帧中的位域494 21-3过载帧中的位域494 21-4帧间距中的域495 21-5位时序构成498 21-6TWAI概略图499 21-7接收滤波器506 21-8单滤波模式507 21-9双滤波模式508 21-10错误状态变化508乐鑫信息科技21ESP32技术参考手册(版本4.7)21-11丢失仲裁的bit位置511 25-1噪声源544 26-1Flash加解密模块架构546 27-1MMU访问示例552 28-1中断嵌套567 29-1触摸传感器574 29-2触摸传感器的内部结构575 29-3触摸传感器的工作流程576 29-4FSM的内部结构577 29-5SAR ADC的概况577 29-6SAR ADC的功能概况578 29-7RTC SAR ADC的功能概况580 29-8DIG SAR ADC控制器的概况581 29-9霍尔传感器的结构583 29-10DAC的功能概况584 29-11余弦波形生成器的工作流程585 30-1ULP协处理器基本架构601 30-2ULP协处理器的指令格式602 30-3指令类型-对寄存器数值的ALU运算603 30-4指令类型-对指令立即值的ALU运算603 30-5指令类型-对阶段计数器寄存器的ALU运算604 30-6指令类型-ST605 30-7指令类型-LD605 30-8指令类型-JUMP606 30-9指令类型-JUMPR606 30-10指令类型-JUMPS607 30-11指令类型-HALT607 30-12指令类型-WAKE607 30-13指令类型-SLEEP608 30-14指令类型-WAIT608 30-15指令类型-ADC608 30-16指令类型-I²C609 30-17指令类型-REG_RD609 30-18指令类型-REG_WR610 30-19ULP协处理器程序框图611 30-20ULP协处理器程序流控图612 30-21I2C读操作613 30-22I²C写操作614 31-1ESP32功耗控制示意图624 31-2数字内核调压器625 31-3低功耗调压器626 31-4Flash调压器627 31-5欠压检测器627 31-6RTC结构图628 31-7RTC低功耗时钟629 31-8数字低功耗时钟62931-9RTC状态630 31-10功耗模式632 31-11ESP32启动流程图6341系统和存储器1.1概述ESP32采用两个哈佛结构Xtensa LX6CPU构成双核系统。
esp32-cam开发环境搭建
esp32-cam开发环境搭建esp32-cam模组是安信可推出的⼀个很⼩的 wifi-摄像头模块开发⽅式可以选择arduinoIDE开发的⽅式也可以使⽤官⽅sdk IDF开发的⽅式,下⾯是使⽤虚拟机+ubuntu+IDF的开发环境搭建:下载虚拟机软件并安装,需要在最后安装的时候写上密钥密钥:5A02H-AU243-TZJ49-GTC7K-3C61N需要注意的是使⽤github下载的项⽬⼯程⽂件⼀直报错,最后我换了⼀个资源好使了,资源我已经放到下⾯链接了。
虚拟机软件链接:https:///s/1b2mHB1hVeJ870-EwFSTiRA提取码:nnkh下载安信可官⽅的ubuntu镜像完成后在虚拟机界⾯添加新的虚拟机ubuntu镜像链接:https:///s/1x5MxoNQHYeNnxccrJHUHXg提取码:siw8下载官⽅sdk下esp_demo⼯程,复制到主⽂件夹下官⽅下载链接:https:///donny681/ESP32_CAMERA_QR⽹盘链接:链接:https:///s/1IAbHOX8sLS5Fe9h0GO8-5Q提取码:e52e下载完成后在项⽬⽬录下打开终端,输⼊make menuconfig 开始配置1.将serialport配置为ttyUSB0,2.ESP32 Camera Demo Configuration菜单下配置WiFi信息配置完成后输⼊make all开始编译编译成功后输出以下信息,To flash all build output, run 'make flash' or:python /home/ai-thinker/esp/esp-idf/components/esptool_py/esptool/esptool.py--chip esp32--port /dev/ttyUSB0--baud 115200--before default_reset--after hard_reset write_flash -z--flash_mode dio --flash_freq 40m--flash_size detect0x1000 /home/ai-thinker/esp_demo/ESP32_CAMERA_QR-master/build/bootloader/bootloader.bin0x10000 /home/ai-thinker/esp_demo/ESP32_CAMERA_QR-master/build/esp32-cam-demo.bin0x8000 /home/ai-thinker/esp_demo/ESP32_CAMERA_QR-master/build/partitions_singleapp.bin烧录可以使⽤安信可esp32烧录⼯具,烧录⼯具配置就选择和上⾯打印⼀样的配置⽅案。
000-ESP32学习开发-ESP32烧录板使用说明
000-ESP32学习开发-ESP32烧录板使⽤说明
<p><iframe name="ifd" src="https:///resource/cnblogs/LearnESP32" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
原理图
实物图(模组可拆卸)
烧录固件程序
1.开发板使⽤的串⼝芯⽚为 CH340C,如果没有安装过CH340驱动,需要安装驱动
2.安装步骤
3.使⽤USB线(Micro)连接开发板,短接跳线帽
注:按照下图短接跳线帽是电脑串⼝和模组的串⼝0通讯
4.如果电脑提⽰安装硬件驱动 ,等待安装完成,然后右击 "我的电脑" 选择管理
5.点击设备管理器,点击端⼝查看当前电脑和开发板通信的端⼝号我的为 COM4 (不同的电脑端⼝号不⼀样,只要有端⼝号就可以)
6.打开烧录软件
7.选择固件
注:此固件为模组⾃⾝默认的AT指令固件
8.按照下图选择,然后点击 START
注:波特率根据⾃⼰电脑的⽀持调整,波特率越⾼下载速度越快.
测试AT指令
注:如果刚烧写完程序,记得先复位下.
1.跳线帽短接如下
2.打开串⼝调试助⼿,发送AT。
关于esp32的系统初始化启动过程及设计学习方法
关于esp32的系统初始化启动过程及设计学习⽅法对于esp32,其开发程序中有且只能有⼀个app_main函数,该函数是⽤户程序的⼊⼝,这在没有调⽤FreeRTOS的系统中相当于函数main,但其实在app_main之前,系统还有⼀段初始化的过程,其⼤致可以分为以下三个过程:ROM中的第⼀级引导加载程序将闪存偏移0x1000的第⼆级引导加载程序映像加载到RAM(IRAM和DRAM)。
第⼆级引导程序从闪存加载分区表和主应⽤程序映像。
主应⽤程序包含RAM段和通过闪存缓存映射的只读段。
主应⽤程序图像执⾏。
此时可以启动第⼆个CPU和RTOS调度程序。
以下将详细介绍这三个过程STEP1:第⼀阶段引导程序 系统first-stage bootload启动,对于系统的first-stage bootloader,其主要任务是负责从Flash的地址0X1000开始加载bootloader镜像到RAM中(此⼯程的bootloader⽂件由esp-idf中的component ⽬录下的bootloader\subproject\main\bootloader_start.c可以查看源码),在SoC复位后,PRO CPU将⽴即开始运⾏,执⾏复位向量代码,⽽APP CPU将保持复位。
在启动过程中,PRO CPU执⾏所有初始化。
call_start_cpu0应⽤程序启动代码功能中的APP CPU复位被取消置位。
复位向量代码位于ESP32芯⽚掩码ROM中的地址0x40000400,不能修改。
从复位向量调⽤的启动代码通过检查GPIO_STRAP_REG(gpio_reg.h定义的)引导引脚状态的寄存器来确定引导模式。
根据复位原因,发⽣以下情况:从深度睡眠复位:如果值为RTC_CNTL_STORE6_REG⾮零,并且RTC存储器的CRC值RTC_CNTL_STORE7_REG有效,RTC_CNTL_STORE6_REG则将其⽤作⼊⼝点地址并⽴即跳转到其中。
LINUX安装32位运行库【LINUX配置YUM源的几种办法】
很多时候我们需要用linux运行或测试程序,然而我们发现64位linux系统在检测32位程序的动态链接库文件时(也就是ldd一个so文件)会报错:不是动态可执行文件【或英文提示:not a dynamic executable file】这是因为系统没有安装32位兼容库的缘故,我们分两大方法解决这个问题→有网络/无网络一、当前使用linux系统已连接网络情况下,可进行在线安装yum在线安装:sudo yum install xulrunner.i686或:sudo yum install ia32-libs.i686Ubuntu系统:sudo apt-get install ia32-libs但是在这里要附带说明一下,RedHat系统默认是需要注册才能使用yum的在线安装功能的,如果没有注册系统会提示:This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.如果您不想花钱注册,请参考B计划:【使用CentOS的网络资源配置yum源】备份原repo文件:mv /etc/yum.repos.d/rhel-debuginfo.repo/etc/yum.repos.d/rhel-debuginfo.repo.repo.bak编辑repo文件:vi /etc/yum.repos.d/rhel-debuginfo.repo内容为:[base]name=CentOS-$releasever - Basebaseurl=/centos/6.0/os/$basearch/gpgcheck=1gpgkey=/centos/RPM-GPG-KEY-CentOS-6#released updates[updates]name=CentOS-$releasever - Updatesbaseurl=/centos/6.0/updates/$basearch/gpgcheck=1gpgkey=/centos/RPM-GPG-KEY-CentOS-6#packages used/produced in the build but not released#[addons] #name=CentOS-$releasever - Addons#baseurl=/centos/$releasever/addons/$basearch/#gpgcheck=1#gpgkey=/centos/RPM-GPG-KEY-CentOS-6#additional packages that may be useful[extras]name=CentOS-$releasever - Extrasbaseurl=/centos/6.0/extras/$basearch/gpgcheck=1gpgkey=/centos/RPM-GPG-KEY-CentOS-6#additional packages that extend functionality of existing packages [centosplus]name=CentOS-$releasever - Plusbaseurl=/centos/6.0/centosplus/$basearch/gpgcheck=1enabled=0编辑完成后使用:yum clean all清理yum包使用yum install vim或yum install xulrunner.i686 命令安装32位运行库二、所使用的linux系统为封闭式网路,无法连接外网这种情况下我们需要有安装光盘,也就是安装当前linux系统所使用的安装光盘,也可以分为两种情况1): 使用iso镜像文件挂载1.创建iso存放目录和挂载目录mkdir /mnt/iso mkdir/mnt/cdrom2. 将iso镜像文件复制到/mnt/iso文件夹下3. 将/mnt/iso/下的iso文件挂载到/mnt/cdrom目录 mount -o loop /mnt/iso/XXXXX.iso /mnt/cdrom <注:挂载完之后对其操作会提示设备繁忙,此时需要umount解开挂载才行> 查看是否挂载成功:df -h <用来查看系统中所有挂载的,mount也可以>4. cd /etc/yum.repos.d/==> 创建自己的.repo文件touch myself.repo ==> vi myself.repo[base]name=RedHatbaseurl=file:///mnt/cdrom #注:这里的baseurl就是你挂载的目录,在这里是/mnt/cdromenabled=1gpgckeck=0gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release #注:此参数可以cd /mnt/cdrom/看到,此参数仅供参考5. 测试:yum clean all ==> yum install vim*如果无效则使用 yum install xulrunner.i6862:)使用已挂载的镜像文件配置yum源【光盘已经挂载在media文件中,显示的是已经解压的iso镜像文件】1. 挂载光盘mount /dev/cdrom /media 通常会提示:mount: block device /dev/sr0 is write-protected, mountingread-only意思是当前光盘是以只读方式挂载的,可以忽略,你也可以添加参数挂载:mount -ro -loop /dev/cdrom /media #以只读方式挂载,就不会报错了2. 建立yum配置文件vi /etc/yum.repos.d/local.repo 内容如下:[base]name=linux6baseurl=file:///mediagpgcheck=0enable=1gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release3. 修改YUM源地址vi/usr/lib/python2.6/site-packages/yum/yumRepo.py在末行模式下(也就是输入状态下按了ESC的状态),输入/remote可以查找remote单词找到 remote = url +'/' + relative 修改为:remote = '/yum' + relative4. 测试:yum clean all 安装: yum install vim*或者使用yum install xulrunner.i686如果系统在安装一大堆的i686包就代表完成了附录:yum说明[yum常用命令]Yum(全称为Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。
Linux服务器搭建步骤详解
Linux服务器搭建步骤详解Linux服务器是互联网技术领域中广泛应用的服务器操作系统。
本文将详细介绍Linux服务器搭建的步骤,以帮助读者快速、准确地搭建自己的服务器。
第一步:选择Linux发行版在搭建Linux服务器之前,需要根据自己的需求选择合适的Linux发行版。
常见的Linux发行版有Ubuntu、CentOS、Debian等。
每个发行版都有其特点和适用场景,因此根据服务器用途选择合适的Linux发行版非常重要。
第二步:准备服务器硬件环境在搭建Linux服务器之前,确保服务器的硬件环境符合要求。
需要留意的硬件包括服务器的处理器、内存、硬盘空间以及网络接口等。
确保硬件环境能够满足服务器的运行需求,以免影响服务器性能。
第三步:安装Linux发行版在准备好硬件环境后,接下来是安装所选择的Linux发行版。
这通常通过光盘、USB安装介质或者通过网络进行安装。
根据所选发行版的提供的安装方法进行操作,按照提示完成安装过程。
第四步:安全设置安装完成后,要进行一些基本的安全设置,以保护服务器的安全性。
首先是更新系统内核和软件包到最新版本,这能够修复已知的安全漏洞。
其次,设置防火墙规则以限制对服务器的访问。
还可以配置SSH登录限制和安装入侵检测工具等,以增加服务器的安全性。
第五步:安装服务器软件接下来,根据服务器的用途安装相应的软件。
例如,如果服务器用于网站托管,可以安装Web服务器软件如Apache或Nginx,数据库软件如MySQL或PostgreSQL;如果服务器用于邮件服务,可以安装邮件服务器软件如Postfix或Sendmail。
根据需求选择并安装合适的服务器软件。
第六步:配置服务器软件安装完成后,需要对所安装的服务器软件进行配置。
服务器软件的配置文件通常位于/etc目录下,通过编辑配置文件来配置服务器的参数和选项。
例如,对于Web服务器软件,可以设置虚拟主机、目录索引、缓存机制等。
根据需要,对服务器软件进行个性化配置以满足自己的需求。
Arduino配置ESP32开发环境
Arduino配置ESP32开发环境⼊⼿ESP32板⼦⼀块,准备使⽤Arduino IDE作为开发⼯具。
1、安装Arduino IDE下载后,⼀直点击下⼀步完成安装,安装过程中会弹出“驱动安装”的选项,点击安装即可。
⼆、安装ESP32开发⼯具包下载完整⼯程,如果下载较慢,可⽤“码云”把仓库拉⼀下。
找到Arduino IDE的安装路径,我安装的路径是D:\program\Arduino,找到hardware⽂件夹,进⼊新建⽂件夹espressif,再进⼊espressif⽂件夹,再新建⽂件夹esp32。
进⼊esp32⽂件夹,将github下载的压缩包解压,内容复制到esp32⽂件夹中。
进⼊tools⽂件夹,在电脑安装python的前提下,点击get.exe下载依赖库。
下载速度⾮常缓慢,为解决这个问题,我们打开esp32⽬录下的package⽂件夹,⾥⾯有⼀个叫做package_esp32_index.template.json的⽂件,打开找到以下三处:复制链接在迅雷中下载,⼏秒钟下载完成,我们得到三个压缩⽂件,esptool-3.0.0.2-windows.zip、mkspiffs-0.2.3-arduino-esp32-win32.zip、xtensa-esp32-elf-win32-1.22.0-97-gc752ad5-5.2.0.zip然后进⼊esp32⽬录下的tools⽂件夹,将三个压缩包解压放在tools⽬录下,如图:打开Arduino IDE,选择⼯具->开发板,找到ESP32 Dev Module即可开发ESP32程序。
下载zip解压覆盖到Arduino\hardware\espressif\esp32\libraries\AzureIoT⽬录下即可。
esp32教程
esp32教程中杏的ESP32教程ESP32是一款低功耗的WiFi和蓝牙双模模块,具备强大的处理能力和丰富的外设接口。
本教程将介绍ESP32的基本使用方法,适用于初学者入门以及对ESP32感兴趣的人群。
一、ESP32的基本介绍ESP32是由乐鑫科技开发的一款双核心微控制器,主频高达240MHz,内置WiFi和蓝牙模块,支持多种外设接口和传感器,广泛应用于物联网、智能家居等领域。
二、ESP32的开发环境搭建1. 安装Arduino IDE在官网下载Arduino IDE最新版本并安装,在“工具”菜单中选择“开发板”,然后选择“ESP32 Dev Module”。
2. 安装ESP32驱动程序在Windows设备管理器中找到ESP32开发板对应的端口号,然后在Arduino IDE中选择该端口号。
三、ESP32的GPIO控制1. 引脚模式设置使用pinMode(pin, mode)函数可以将指定引脚设置为输入或输出模式。
2. 数字信号输出使用digitalWrite(pin, value)函数可以向指定引脚输出低电平(0)或高电平(1)信号。
3. 数字信号输入使用digitalRead(pin)函数可以读取指定引脚的输入信号,返回值为LOW(低电平)或HIGH(高电平)。
四、ESP32的WiFi连接1. 设置WiFi参数使用WiFi.begin(ssid, password)函数可以连接到指定的WiFi网络,其中ssid是网络名称,password是密码。
2. 检查WiFi连接状态使用WiFi.status()函数可以获取当前WiFi连接的状态,返回值为WL_CONNECTED表示已连接。
五、ESP32的蓝牙控制1. 蓝牙初始化使用BluetoothSerial.begin()函数可以初始化蓝牙模块。
2. 发送数据使用BluetoothSerial.write()函数可以向蓝牙设备发送数据。
六、ESP32的传感器应用1. 温湿度传感器使用DHT库可以读取温湿度传感器的数据,并在串口上进行显示。
esp32的开发流程
esp32的开发流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!ESP32 是一款低成本、低功耗的微控制器,具有 Wi-Fi 和蓝牙功能,适用于物联网(IoT)应用。
ESP32学习笔记(一)环境搭建与下载
ESP32学习笔记(⼀)环境搭建与下载ESP32学习笔记(⼀)环境搭建与下载作者:Nevel 博客: 转载请保留出处前⼏天刚⼊⼿了ESP32模块,趁着放假有时间,我们先把ESP32的编译环境搭建好⼀.官⽅固件包的安装与配置.⾸先,我们把ESP32模块连接上电脑,如果没有ESP32底板的话,则需连接⼀个usb转ttl模块,接下来我们下载好两个压缩包:Msys32为ESP32的下载⼯具链和仿真环境,可以从如下⽹址下载esp32_idf为官⽅的固件包可从git上同步我们将msys32解压后放在c盘根⽬录,运⾏msys32 ⽬录下的 msys2_shell.cmd我们进⼊了⼀个类似命令⾏的页⾯,其实官⽅提供的这个下载和仿真⼯具其实是MSYS 因为之后的开发需要在Shell中执⾏⼀些linux下的命令所以使⽤这样⼀个⼯具模拟⼀个unix的模拟环境。
注: MSYS 是⽤于辅助 Windows 版 MinGW 进⾏命令⾏开发的配套软件包接下来我们正式进⼊命令⾏操作:1.创建⽂件夹,同步固件包(已经下载好固件包的可直接解压到c盘根⽬录,并跳过此步)输⼊ mkdir esp32_idf,在c盘根⽬录创建 esp32_idf ⽂件夹,输⼊ cd /c/esp32_idf/ ,将⽬录换到该⽂件夹2.克隆 idf 固件库之后输⼊ git clone --recursive https:///espressif/esp-idf.git这个需要⼀定时间,中途可能会报错,但是并没有什么影响。
添加编译所需的环境变量打开 C:\msys32\etc\profile.d\esp32_toolchain.sh(使⽤记事本打开),添加export IDF_PATH="C:/esp32_idf/esp-idf"⼀⾏,保存并退出。
3.配置MENU CONFIG该步骤中我们将进⾏⼀些编译有关的参数配置,ESP32官⽅提供了⼀个图形化配置界⾯,我们将使⽤他我们先输⼊cd /c/esp32_idf/esp-idf/examples/01_hello_world以为01_hello_world为根⽬录,对官⽅提供的hello world这个项⽬进⾏编译配置。
ArduinoESP32开发环境搭建
ArduinoESP32开发环境搭建⼀:添加ESP32开发板数据包(两种⽅式)1. 利⽤官⽅途径进⾏下载安装①⾸先在Arduino中添加 esp32 开发板地址:打开Arduino后选择:⽂件 > ⾸选项 > 附加开发板管理器⽹址中加⼊Arduino for esp32包的地址:(https:///dl/package_esp32_index.json)②然后利⽤Arduino⾃⾝下载数据包:⼯具 > 开发板 > 开发板管理器搜索"esp32"便可以看到数据包进⾏下载。
下载esp32数据包的压缩包,⼿动解压并添加:ESP32数据包百度云下载链接:https:///s/1mC-DGFKhKsS4kjKz50mung2. 提取码:86le①解压后,将压缩⽂件⾥的内容复制到如下路径(需要新建⼀个espressif⽂件夹):Arduino > hardware > espressif > esp32 ,最后放到esp32⽂件夹下。
在这⾥插⼊图⽚描述②有的⼩伙伴可能没有安装python,在打开“get.exe”之前需要先安装python环境。
③在如下路径中找到“get.exe”,以管理员⾝份运⾏。
Arduino > hardware > espressif > esp32 > tool④运⾏后会弹出⿊框,随即消失。
如果Arduino安装⽬录中存在中⽂可能会导致运⾏get.exe⿊框页⾯卡住⽆反应。
⑤此时再打开Arduino IDE 编译器,⼯具 > 开发板已经可以找到ESP32相关开发板原⽂链接:https:///qq_42771439/article/details/105326095。
ubuntu系统搭建ESP32开发环境
ubuntu系统搭建ESP32开发环境前⾔ESP32 可以说是物联⽹市场⼀款⽐较精悍的芯⽚了。
集成了BLE和802.11b Wi-Fi。
低功耗、同时处理速度还挺强的。
⽬前⾃⼰也是刚⼊⼿ESP32。
可是在装环境的时候,踩了不少坑。
当然ESP32 ⽀持的开发⽅式挺多的。
例如在 arduino开发,windows下的msys32加esp-idf的开发环境(因为msys32 是虚拟⼀个linux环境,所以这种⽅式编译程序会⽐较慢),也可以⽤Eclipse IDE+CMake+esp-idf开发,还有可以使⽤linux 系统下的GNU Make + esp-idf 开发。
本⼈使⽤的是linux系统下的开发环境。
这⾥就不扯了,下⾯开始填坑之路。
环境的安装主要参考。
(注意:因为在安装环境的过程中需要下载⽐较多的库和⼯具,所以要保证⽹络通畅)⼀、安装准备这⾥使⽤linux发⾏版本是ubuntu 16.04 LTS需要的基本环境还有python2和git⼯具(没有这些的⼯具的可以百度安装)mkdir -p ~/esp32/source ~/esp32/crossTool ~/esp32/demos使⽤这个命令创建好这些⽬录1、更新ubuntu的源1. 为了后⾯能正常安装⼯具,最好更新⼀下源。
同时最好将源切换为国内的源。
ubuntu 系统的是如下命令更新源,其他的Linux 发⾏版本可以百度更新:sudo apt-get install update2. 因为安装esp32环境的过程中需要安装python的库,所以这⾥也最好将 pip ⼯具更新到最新版本。
⽬前最新的版本是19.3.1,使⽤下⾯命令更新,如果不是最新版本⼀般都能正常更新。
sudo python -m pip install --default-timeout=100 --upgrade pip2、出错处理:pip⼯具更新到最新版本之后,使⽤pip install 安装包有可能会出现下⾯的错误:# 错误的原因是新版本的库找不到 main 模块了Traceback (most recent call last):File "/usr/bin/pip", line 9, in <module>from pip import mainImportError: cannot import name 'main'解决的⽅法是修改/usr/bin/pip源程序⽤sudo vi /usr/bin/pip命令打开源程序然后按照下⾯的⽅式修改,修改完之后应该就不会报错了################修改前程序####################import sysfrom pip import mainif __name__ == '__main__':sys.exit(main())################修改前程序####################################修改后程序####################import sysfrom pip import __main__ # 这⾏修改if __name__ == '__main__':sys.exit(__main__._main()) #这⾏修改################修改后程序####################3、按装依赖包在中的提到ununtu系统(其他系统或发⾏版本可以去官⽹查看)需要安装下⾯的依赖包。
ESP32教程-Windows开发环境搭建
第一篇基本的Linux仿真环境和交叉编译工具链的配置0、电脑环境:Win10x641、下载工具链和仿真环境https:///dl/esp32_win32_msys2_environment_and_toolchain-20160816.zip2、解压到c盘根目录,将会出现一个msys32的文件夹。
3、运行msys32目录下的msys2_shell.cmd,输入命令”cd c:/”进入c盘根目录4、输入mkdir esp32_idf,创建esp32_idf文件夹,输入cd esp32_idf/,进入esp32_idf文件夹5、克隆idf固件库输入git clone --recursive https:///espressif/esp-idf.git这个会持续一段时间,除了下载此git代码外还要下载其依赖的其他几个,慢慢等待即可7、输入export IDF_PATH="C:/esp32_idf/esp-idf"添加编译需要的环境变量,如果你不想每次都输入,可以打开C:\msys32\etc\profile.d\esp32_toolchain.sh(使用notepad打开或者记事本),添加export IDF_PATH="C:/esp32_idf/esp-idf"一行,保存并退出。
8、输入cd example进入工程目录example目录,下面有很多例程我们一01hello_world为例,输入cd 01_hello_world 进入第一个工程目录。
9、输入make menuconfig选择“Serial flasher config”按回车配置串口号,光标停留在在Default Serial Prot的时候继续按回车,输入/COM4(我电脑上的串口是COM4)。
其他的不用修改,使用向右方向键,回车,向右方向键,回车即可退出。
最后一次回车保存设置参数。
10、输入make clean删除了builds目录下的文件11、确保你的模块已经上电,GPIO0/DL引脚为低电平,按下复位键,使模块进入串口boot 并等待上位机链接,下载程序。
Esp32cam开发环境搭建
Esp32cam开发环境搭建1. 下载 Arduino 并安装, 下载esp32 离线安装包2. 下载 Esp32 库git clone https:///han_gx/arduino-espressif-esp32-win103. 在 Arduino安装⽬录下1. 找见 Arduino 安装⽬录C:\Program Files (x86)\Arduino\hardware2. 新建espressif3. 然后将第⼆步克隆下来的⽂件arduino-espressif-esp32-win10移动到espressif⽬录下4. 然后将arduino-espressif-esp32-win10重命名为 esp324. 然后启动 Arduino, 选择开发板5. 选择⽰例项⽬6. 修改代码和wifi密码7. 点击上传, 然后IO0接地并复位8. vscode 配置 Arduino 开发1. 在⾃⼰所编写的项⽬的根⽬录⾥⾯创建.vscode⽂件夹, 然后在创建c_cpp_properties.json⽂件输⼊以下⽂件的位置{"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}/**","C:\\Program Files (x86)\\Arduino\\libraries/**",//"C:\\Program Files (x86)\\Arduino\\hardware\\espressif\\esp32\\libraries/**", //实例程序的函数库"C:\\Program Files (x86)\\Arduino\\hardware\\espressif\\esp32\\cores\\esp32/**","C:\\Program Files (x86)\\Arduino\\hardware\\espressif\\esp32\\tools\\sdk\\include/**"],"defines": ["_DEBUG","UNICODE","_UNICODE"],"windowsSdkVersion": "10.0.19041.0","compilerPath": "C:/Program Files/Microsoft Visual Studio/2022/Professional/VC/Tools/MSVC/14.30.30705/bin/Hostx64/x64/cl.exe", "cStandard": "c17","cppStandard": "c++17","intelliSenseMode": "windows-msvc-x64"}],"version": 4}2. 然后开始编写代码即可, esp32 貌似不⽀持编译9. CameraWebServer 实现⽅式# 创建web服务, 通过短时间获取多张图⽚组成流响应到http的 multipart 上,实现视频流的传输# 不符合当前需求, 我需要的是将视频流直接通过 wifi 推送到媒体服务器, ⽤于监听。
机器人技术等级考试五级ESP32 开发环境搭建(arduino)
机器人技术等级考试五级ESP32 开发环境搭建(arduino)1.硬件介绍这是一款用于物联网的新型开发套件板。
由Espressif开发的这款主板应该是NodeMCU的继承者,因为它价格低廉,功能强大。
该板具有双处理微处理器,可以提供很多帮助,例如,当一个处理器处理通信时,另一个处理器负责I / O控制。
此功能将防止ESP8266发生的一些问题,其中唯一的CPU需要在使用Comm处理时停止控制I / O. 此外,ESP32还集成了WIFI,BLUETOOTH,DAC,几个ADC (不仅仅是一个作为ESP8266),电容式触摸传感器等(请看上面的框图)。
好消息是功耗几乎与ESP8266相同。
主要特征:∙240 MHz双核Tensilica LX6微控制器,600 DMIPS∙集成520 KB SRAM∙集成802.11 b / g / n HT40 Wi-Fi收发器,基带,堆栈和LwIP∙集成双模蓝牙(经典和BLE)∙16 MB闪存,内存映射到CPU代码空间∙工作电压2.3V至3.6V∙-40°C至+ 125°C的工作温度∙用于外部天线的板载PCB天线/ IPEX连接器内置传感器:∙超低噪声模拟放大器∙霍尔传感器∙10倍电容式触摸界面∙32 kHz晶体振荡器GPIO引脚:∙3个UART,包括硬件流控制∙ 3 x SPI∙ 2 x I2S∙18个ADC输入通道∙2个DAC∙2个I2C∙每个GPIO引脚都有PWM /定时器输入/输出∙OpenOCD调试接口,带有32 kB TRAX缓冲区∙SDIO主/从50 MHz∙支持高达16 MB的外部SPI闪存∙SD卡接口支持性能:∙支持嗅探器,Station,SoftAP和Wi-Fi直连模式∙最大数据速率为150 Mbps @ 11n HT4072 Mbps @ 11n HT2054 Mbps @ 11g和11 Mbps @ 11b∙最大发射功率为19.5 dBm @ 11b,16.5 dBm @ 11g,15.5 dBm @ 11n∙最小接收灵敏度为-97 dBm∙135 Mbps UDP持续吞吐量∙深度睡眠时功耗为5μA2.ESP32 Arduino IDE开发环境安装1安装串口驱动在计算机上安装更新的CP210x USB转UART驱动程序,首先下载驱动然后安装适合自己电脑的驱动接下来在设备管理器查看驱动是否安装成功2安装ESP32的库首先下载相关的文件也可以参照把下载好的压缩包文件解压,安装步骤如图所示:以上步骤完成,打开arduino IDE你可以试着编译一下达到以上的效果,就证明ESP32 的开发环境你已经完成了。
野路子学习esp32(一)开发环境搭建@a.宏万
野路⼦学习esp32(⼀)开发环境搭建@a.宏万⼊坑已经有⼀段时间了,从头开始学习esp32开发。
在这⾥记录下学习过程,请⼤家多多指点。
本⽂可能是⽬前最新最简单的安装⽅案。
idf版本更新到2.1,适合纯新⼿使⽤esp-idf 是esp32⼚家乐鑫提供的开发sdk,最新版本是2.1开源地址:---------------------------------------------------------------------------------Win10系统下开发环境的搭建开发主要使⽤的是安信可的⼀体化开发环境安信可 ESP 系列⼀体化开发环境是安信可科技为⽅便⼴⼤⽤户⽽推出的基于 Windows + Cygwin + Eclipse + GCC 的综合 IDE 环境简介安信可⼀体化开发环境有以下特点:⽀持ESP8266 NONOS和FreeRTOS环境开发⽀持ESP31B/ESP32 FreeRTOS环境开发下载即⽤,⽆需另外配置环境可直接编译所有乐鑫官⽅推出的SDK开发包下载已更新⽀持 XP ⽀持ESP32 ⽀持OpenOCD ⽀持GCC 5.2版本⽂件使⽤7z⾃解压程序打包,后缀名为exe,下载后双击即可解压安装下载⽂件如下:双击AiThinkerIDE_V0.5_Setup.exe 解压到D:\⽬录下:位置可以⾃定义,但请注意:路径不要有中⽂或者空格,建议直接放在盘符的根⽬录下解压后⽬录如下:配置右键以管理员⾝份运⾏ ConfigTool.exe点击 Dafault 会⾃动加载默认设置其中Eclipse⽂件夹的位置为 eclipse.exe 所在的⽬录Cygwin⽂件夹的位置为 bin ⽂件夹所在的⽬录IDF_PATH 所在的⽬录路径错误时,均会有提⽰错误如果确认配置正确,点击Save保存即可,下次应⽤将会⾃动根据指定的位置初始化环境并启动EclipseConfigTool.exe 同⽬录下config⽂件夹内含有配置⽂件 cfg.xml ,可以使⽤记事本编辑注意: 当配置格式读取出错时,应⽤会删除配置,并在下次启动时新建配置⾸次使⽤ Eclipse 时会提⽰选择⼀个⽬录作为⼯作空间之后即可使⽤Eclipse 进⾏ SDK 的开发默认打开界⾯如下所⽰:关于 Problems 报错注意:Eclipse 只是⼀个代码编写⼯具,它并不能读取 makefile ⾥⾯的⼀些配置,甚⾄它会读取到 cygwin 下同名称的头⽂件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作系统:Ubuntu32
1、打开shell,输入mkdir esp创建esp目录;输入mkdir download,创建download文件夹,输入ls检查是否创建成功
2、输入cd download/进入download目录;
输入wget https:///dl/xtensa-esp32-elf-linux32-1.22.0-59.tar.gz下载linux32为系统下的工具链
3、输入tar -xzf xtensa-esp32-elf-linux32-1.22.0-59.tar.gz解压工具链,会在download目录下产生一个xtensa-esp32-elf文件夹,然后输入mv xtensa-esp32-elf ~/esp/将此文件夹移动到~/esp/目录下
4、输入
export PATH=$PATH:$HOME/esp/xtensa-esp32-elf/bin添加环境变量。
alias get_esp32="export PATH=$PATH:$HOME/esp/xtensa-esp32-elf/bin" 使环境变量永久生效
添加环境变量。
输入nano ~/.bashrc,编辑bashrc文件,粘贴
export PATH=$PATH:$HOME/esp/xtensa-esp32-elf/bin到bashrc文件的最后一行,这样就可以将工具链bin目录添加到环境变量中,按ctr+x,退出编辑输入y确认。
这样电脑重启后环境变量依然有效
5、输入cd ~/esp/进入esp目录,输入git clone --recursive https:///espressif/esp-idf.git 克隆esp_idf固件库
6、输入cd ~/esp/esp-idf 进入esp_idf目录,输入git submodule update –init 初始化sdk。
7、输入cd examples/01_hello_world/进入历程中得hello_world工程。
输入
export IDF_PATH=~/esp/esp-idf,添加环境变量。
添加环境变量。
输入nano ~/.bashrc,编辑bashrc文件,粘贴
export IDF_PATH=~/esp/esp-idf到bashrc文件的最后一行,这样就可以将工具链bin目录添加到环境变量中,按ctr+x,退出编辑输入y确认。
这样电脑重启后环境变量依然有效
输入
8、请将你的USB转串口工具插入电脑,然后选择虚拟工具栏的设备->USB->CP2102的设备(此处因芯片不同而不同,选择正确的工具即可),千万不要选错了,最开始可能只有一个错误的选项,我多插拔几次,重启了几次虚拟机正确的选项才出来,而且不可选,重启虚拟机
如果是出现上图的情况,是无法正常工作的。
正确的串口识别。
9、输入ls /dev/ttyU*,查看USB转串口设备的名称,查询到的设备名称为/dev/ttyUSB0
10、输入make menuconfig,编辑配置文件,使用向下的方向键选择Serial flasher config,按下回车键,检测串口设备名称是否和刚刚查询到的串口设备名称是否一致,如果一致,直接按向右方向键、回车、向右方向键、回车。
退出config。
如果不一致请直接按回车修改设备名称为查询得到的设备名称。
然后退出config。
11、确保你的模块已经上电,GPIO0/DL引脚为低电平,按下复位键,使模块进入串口boot 并等待上位机链接,下载程序。
12、就差最后一步了。
输入make flash,等着编译完成后会自动的调用python脚本进行下载了。
下载完成后把GPIO0/DL引脚设为高电平,按复位键就可以了。