ESP8266硬件
1. ESP8266芯片管脚
2. 芯片引脚 vs 芯片功能框图
芯片引脚中无PWM引脚,即无硬件PWM(功能框图中的PWM应为软件PWM)
芯片有两个uart(uart0及uart1),对于串口需要注意的是硬件外接外部晶振时的通信波特率
一个ADC接口TOUT,可以用作芯片功放电源电压读取或者外部电压输入的采集
I2C接口也是软件I2C,没有硬件I2C
SDIO接口
SPI接口
具体细节可参考Espressif的0a-esp8266ex_datasheet
3. AiThinker ESP8266-12F模块
模块管脚
模块原理图(模块内部集成了26MHz晶振及4MB的Flash)
4. 试试模块启动时串口波特率
使用NONOS SDK V3.0.4,无需FOTA功能,重新配置Flash map
#define SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM SYSTEM_PARTITION_CUSTOMER_BEGIN
#define EAGLE_FLASH_BIN_ADDR (SYSTEM_PARTITION_CUSTOMER_BEGIN + 1)
#define EAGLE_IROM0TEXT_BIN_ADDR (SYSTEM_PARTITION_CUSTOMER_BEGIN + 2)
uint32 priv_param_start_sec;
static const partition_item_t partition_table[] = {
{ EAGLE_FLASH_BIN_ADDR, 0x00000, 0x10000},
{ EAGLE_IROM0TEXT_BIN_ADDR, 0x10000, 0x60000},
{ SYSTEM_PARTITION_RF_CAL, SYSTEM_PARTITION_RF_CAL_ADDR, 0x1000},
{ SYSTEM_PARTITION_PHY_DATA, SYSTEM_PARTITION_PHY_DATA_ADDR, 0x1000},
{ SYSTEM_PARTITION_SYSTEM_PARAMETER,SYSTEM_PARTITION_SYSTEM_PARAMETER_ADDR, 0x3000},
};
void ICACHE_FLASH_ATTR user_pre_init(void){
if(!system_partition_table_regist(partition_table, sizeof(partition_table)/sizeof(partition_table[0]),SPI_FLASH_SIZE_MAP)) {
os_printf("system_partition_table_regist fail\r\n");
while(1);
}
}编译完成后烧录两部分固件即可
复位之后,串口调试助手(设置波特率115200)查看会有乱码,因为模块外部晶振26MHz,启动时默认74880波特率,故出现乱码