功率检测和语音功能
INA226
INA226 High-Side or Low-Side Measurement, Bi-Directional Current and Power Monitor with I2C Compatible Interface datasheet (Rev. A)
INA226功率监测模块原理
7.5 编程 INA226 器件的一个重要方面是它不一定测量电流或功率。该器件可测量施加在 IN+ 和 IN- 输入引脚之间的差分电压以及施加于 VBUS 引脚的电压。为了使器件同时报告电流和功率值,用户必须对电流寄存器 (04h) 的分辨率和应用中存在的分流电阻器的值进行编程,以产生施加在输入引脚之间的差分电压。功率寄存器 (03h) 在内部设置为编程Current_LSB的 25 倍。Current_LSB 电阻和分流电阻器值均用于计算校准寄存器值,该器件用于根据测得的分流器和总线电压计算相应的电流和功率值。校准寄存器根据公式 1 计算。该公式包括项 Current_LSB,它是电流寄存器 (04h) 的 LSB 的编程值。用户使用该值将 Current Register (04h) 中的值转换为以安培为单位的实际电流。电流寄存器 (04h) 的最高分辨率可以通过使用基于最大预期电流的最小允许Current_LSB获得,如公式 2 所示。虽然此值产生最高分辨率,但通常为Current_LSB选择一个值,以简化电流寄存器 (04h) 和功率寄存器 (03h) 分别转换为安培和瓦特的过程。RSHUNT 项是用于在输入引脚上产生差分电压的外部分流器的值。
对校准寄存器进行编程后,电流寄存器 (04h) 和功率寄存器 (03h) 会根据相应的分流电压和总线电压测量值进行相应更新。在校准寄存器编程之前,电流寄存器 (04h) 和功率寄存器 (03h) 保持为零。7.5.1 对校准寄存器进行编程图 27 显示了一个标称 10 A 负载,该负载在 2 mΩ 分流电阻器上产生 20 mV 的差分电压。INA226 的总线电压在外部 VBUS 输入引脚处测量,在本例中,该引脚连接到 IN– 引脚以测量输送到负载的电压电平。在本例中,VBUS 引脚的测量值小于 12 V,因为 IN– 引脚上的电压为 11.98 V,这是分流电阻器两端压降的结果。在本例中,假设最大预期电流为 15 A,则使用公式 2 计算出Current_LSB为 457.7 μA/bit。使用 500 μA/Bit 或 1 mA/Bit 的Current_LSB值将显著简化从电流寄存器 (04h) 和功率寄存器 (03h) 到安培和瓦特的转换。在本例中,Current_LSB选择了 1 mA/bit 的值。将此值用于 Current_LSB 确实会以少量分辨率为代价,从而在用户端获得更简单的转换过程。在本例中,使用公式 1 将 Current_LSB 值为 1 mA/bit,分流电阻器设置为 2 mΩ,则校准寄存器值为 2560,即 A00h。然后通过将并联电压寄存器 (01h) 内容的十进制值乘以校准寄存器的十进制值,然后除以 2048 来计算电流寄存器 (04h),如公式 3 所示。在本例中,并联电压寄存器包含一个值 8,000(代表 20 mV),该值乘以校准寄存器值 2560,然后除以 2048,得到电流寄存器 (04h) 的十进制值 10000,即 2710h。将此值乘以 1 mA/位,得到示例中所示的原始 10 A 电平。
编程(续)总线电压寄存器 (02h) 的 LSB 是固定的 1.25 mV/bit,这意味着 VBUS 引脚上的 11.98 V 导致寄存器值为 2570h,或相当于 9584 的十进制值。请注意,总线电压寄存器 (02h) 的 MSB 始终为零,因为 VBUS 引脚只能测量正电压。然后,将电流寄存器的十进制值 10000 乘以总线电压寄存器 (02h) 的十进制值 9584,然后除以 20,000,如公式 4 中所定义,从而计算功率寄存器 (03h)。在本例中,Power Register (03h) 的结果是 12B8h,即 4792 的十进制等效值。将此结果乘以功率 LSB([1 × 10–3 Current_LSB] 的 25 倍),得到功率计算为 (4792 × 25 mW/bit),即 119.82 W。功率 LSB 与 25 的Current_LSB具有固定比率。在本例中,编程的 1 mA/位Current_LSB产生的功率 LSB 为 25 mW/bit。此比率在内部编程,以确保功率计算的缩放比例在可接受的范围内。手动计算输送到负载的功率时,将使用 11.98 V 的总线电压(12 VCM – 20 mV 分流压降)乘以 10 A 的负载电流,得出 119.8 W 的结果。
INA226模块原理图如下图所示。
官方手册的参考电路如下图所示。
INA226是具有I2C™或SMBUS兼容接口的电流分流器和功率监控器。该设备同时监视并联电压降和总线电源电压。可编程的校准值,转换时间和平均值与内部乘法器结合使用,可以直接读取以安培为单位的电流和以瓦特为单位的功率。
INA226感应共模总线电压上的电流,该电压可在0 V至36 V之间变化,与电源电压无关。该器件采用2.7V至5.5V单电源供电,典型功耗为330 µA。该器件的额定工作温度范围为–40°C至125 \ xC2°C,并且在I 2 C兼容接口上具有多达16个可编程地址。
接线方式为:INPUT接电源正极,GND接电源负极,OUTPUT接用电器件(我没接)的电源正极输入口
相关寄存器和设备地址
首先,为了使用I2C读取模块数据,需要先通过传感器数据手册来确定从机地址和所需寄存器地址。
INA226模块一共有10个寄存器(0x0~0x7 还有两个设备ID不管)
根据原理图可知从机地址A1 A0 = 00,再参考官方技术文档可知模块设备地址为:0x40
这是个7位的地址 stm32用i2c的时候地址填写的是1个byte,
然后我们了解到i2c指定从机通信的时候7位地址后面还有1个读写位
所以0x40左移一位等于0x80 (0x40<<1 == 0x80)
所以stm32用i2c通信的时候,从机地址要写0x80
#define INA226_ADDRESS 0x80 /*INA226的地址*/
重点关注的寄存器0x0 0x2 0x3 0x4 0x5
0x0
用于配置芯片的采样速度,采样模式,采样滤波周期等,默认值是0x4127
0x5
校准寄存器 看手册↓ 直接搜索找到计算方式
理解不了的可以看看下面示例代码中arduino是如何控制INA226模块的↓↓↓↓↓↓
// Calibrate INA226. Rshunt = 0.01 ohm, Max excepted current = 4A
//我买的ina226模块采样电阻型号r010是0.01欧姆 假如我们的电路预期最大电流是4安培
//计算公式:
//Current_LSB = 预期最大电流4A / 2^15 = 0.0001220703125
//CAL = 0.00512/(Current_LSBR)=0.00512/0.0001220703125=42=0x2A
//当然如果你想让单片机自己算直接移植下面的函数到你的工程里就行
bool INA226::calibrate(float rShuntValue, float iMaxExpected)
{uint16_t calibrationValue;rShunt = rShuntValue;float iMaxPossible, minimumLSB;iMaxPossible = vShuntMax / rShunt;minimumLSB = iMaxExpected / 32767;currentLSB = (uint16_t)(minimumLSB * 100000000);currentLSB /= 100000000;currentLSB /= 0.0001;currentLSB = ceil(currentLSB);currentLSB *= 0.0001;powerLSB = currentLSB * 25;calibrationValue = (uint16_t)((0.00512) / (currentLSB * rShunt));writeRegister16(INA226_REG_CALIBRATION, calibrationValue);return true;
}
c驱动源文件
#include "i2c.h"uint8_t INA226_SetConfig(uint16_t ConfigWord);
uint8_t INA226_SetCalibrationReg(uint16_t ConfigWord);uint16_t INA226_GetBusVReg(void);
uint16_t INA226_GetPowerReg(void);
uint16_t INA226_GetCurrentReg(void);#define INA226_COM_PORT hi2c1 /*通讯使用的IIC接口*/#define INA226_ADDRESS 0x80 /*INA226的地址*/
#define INA226_I2C_TIMEOUT 10 /*IIC通讯超时*/#define INA226_CALIB_VAL 1024
#define INA226_CURRENTLSB 0.5F // mA/bit
#define INA226_CURRENTLSB_INV 1/INA226_CURRENTLSB // bit/mA
#define INA226_POWERLSB_INV 1/(INA226_CURRENTLSB*25) // bit/mW#define INA226_CONFIG 0x00 // Configuration Register (R/W)初始值4127
#define INA226_SHUNTV 0x01 // Shunt Voltage (R)初始值0,分流电压测量值
#define INA226_BUSV 0x02 // Bus Voltage (R)初始值0,总线电压测量值
#define INA226_POWER 0x03 // Power (R)初始值0,输出功率测量值
#define INA226_CURRENT 0x04 // Current (R)初始值0,分流电阻电流计算值
#define INA226_CALIB 0x05 // Calibration (R/W),设置全量程和电流LSB
#define INA226_MASK 0x06 // Mask/Enable (R/W),报警设置和转换准备标志
#define INA226_ALERTL 0x07 // Alert Limit (R/W),报警阈值
#define INA226_MANUF_ID 0xFE // Manufacturer ID (R),0x5449
#define INA226_DIE_ID 0xFF // Die ID (R),0x2260#define INA226_MODE_POWER_DOWN (0<<0) // Power-Down
#define INA226_MODE_TRIG_SHUNT_VOLTAGE (1<<0) // Shunt Voltage, Triggered
#define INA226_MODE_TRIG_BUS_VOLTAGE (2<<0) // Bus Voltage, Triggered
#define INA226_MODE_TRIG_SHUNT_AND_BUS (3<<0) // Shunt and Bus, Triggered
#define INA226_MODE_POWER_DOWN2 (4<<0) // Power-Down
#define INA226_MODE_CONT_SHUNT_VOLTAGE (5<<0) // Shunt Voltage, Continuous
#define INA226_MODE_CONT_BUS_VOLTAGE (6<<0) // Bus Voltage, Continuous
#define INA226_MODE_CONT_SHUNT_AND_BUS (7<<0) // Shunt and Bus, Continuous// Shunt Voltage Conversion Time
#define INA226_VSH_140uS (0<<3)
#define INA226_VSH_204uS (1<<3)
#define INA226_VSH_332uS (2<<3)
#define INA226_VSH_588uS (3<<3)
#define INA226_VSH_1100uS (4<<3)
#define INA226_VSH_2116uS (5<<3)
#define INA226_VSH_4156uS (6<<3)
#define INA226_VSH_8244uS (7<<3)// Bus Voltage Conversion Time (VBUS CT Bit Settings[6-8])
#define INA226_VBUS_140uS (0<<6)
#define INA226_VBUS_204uS (1<<6)
#define INA226_VBUS_332uS (2<<6)
#define INA226_VBUS_588uS (3<<6)
#define INA226_VBUS_1100uS (4<<6)
#define INA226_VBUS_2116uS (5<<6)
#define INA226_VBUS_4156uS (6<<6)
#define INA226_VBUS_8244uS (7<<6)// Averaging Mode (AVG Bit Settings[9-11])
#define INA226_AVG_1 (0<<9)
#define INA226_AVG_4 (1<<9)
#define INA226_AVG_16 (2<<9)
#define INA226_AVG_64 (3<<9)
#define INA226_AVG_128 (4<<9)
#define INA226_AVG_256 (5<<9)
#define INA226_AVG_512 (6<<9)
#define INA226_AVG_1024 (7<<9)// Reset Bit (RST bit [15])
#define INA226_RESET_ACTIVE (1<<15)
#define INA226_RESET_INACTIVE (0<<15)// Mask/Enable Register
#define INA226_MER_SOL (1<<15) // Shunt Voltage Over-Voltage
#define INA226_MER_SUL (1<<14) // Shunt Voltage Under-Voltage
#define INA226_MER_BOL (1<<13) // Bus Voltagee Over-Voltage
#define INA226_MER_BUL (1<<12) // Bus Voltage Under-Voltage
#define INA226_MER_POL (1<<11) // Power Over-Limit
#define INA226_MER_CNVR (1<<10) // Conversion Ready
#define INA226_MER_AFF (1<<4) // Alert Function Flag
#define INA226_MER_CVRF (1<<3) // Conversion Ready Flag
#define INA226_MER_OVF (1<<2) // Math Overflow Flag
#define INA226_MER_APOL (1<<1) // Alert Polarity Bit
#define INA226_MER_LEN (1<<0) // Alert Latch Enable#define INA226_MANUF_ID_DEFAULT 0x5449
#define INA226_DIE_ID_DEFAULT 0x2260void INA226_init(void)
{/** 设置转换时间8.244ms,求平均值次数16,设置模式为分流和总线连续模式* 总数据转换时间 = 8.244*16 = 131.9ms*/INA226_SetConfig(0x45FF);/** 分流电阻最大电压 = 32768 * 0.0000025V = 0.08192V* 设置分流电压转电流转换参数:电阻0.01R,分辨率0.2mA* 公式1* Current_LSB = 预期最大电流 / 2^15* Current_LSB = 5 / 32768 = 0.000152A ,选0.2ma* 公式2* CAL = 0.00512/(Current_LSB*R)* CAL = 0.00512/(0.0002*0.01)=2560 = 0x0a00*/INA226_SetCalibrationReg(0x0a00);}
/*
**************************************************
* 说明:读取BUS电压,并转换为浮点数据
**************************************************
*/
float INA226_GetBusV(void)
{uint16_t regData;float fVoltage;regData = INA226_GetBusVReg();fVoltage = regData * 0.00125f;/*电压的LSB = 1.25mV*/return fVoltage;
}
/*
**************************************************
* 说明:读取电流,并转换为浮点数据
**************************************************
*/
float INA226_GetCurrent()
{uint16_t regData;float fCurrent;regData = INA226_GetCurrentReg();if(regData >= 0x8000) regData = 0;fCurrent = regData * 0.0002f;/*电流的LSB = 0.2mA,由用户配置*/return fCurrent;
}
/*
**************************************************
* 说明:读取功率,并转换为浮点数据
**************************************************
*/
float INA226_GetPower()
{uint16_t regData;float fPower;regData = INA226_GetPowerReg();fPower = regData * 0.005f;/*功率的LSB = 电流的LSB*25*/return fPower;
}uint8_t INA226_SetConfig(uint16_t ConfigWord)
{uint8_t SentTable[3];SentTable[0] = INA226_CONFIG;SentTable[1] = (ConfigWord & 0xFF00) >> 8;SentTable[2] = (ConfigWord & 0x00FF);return HAL_I2C_Master_Transmit(&INA226_COM_PORT, INA226_ADDRESS, SentTable, 3, INA226_I2C_TIMEOUT);
}// uint16_t INA226_GetConfig()
// {
// uint8_t SentTable[1] = {INA226_CONFIG};
// uint8_t ReceivedTable[2];
// HAL_I2C_Master_Transmit(&INA226_COM_PORT,INA226_ADDRESS, SentTable, 1, INA226_I2C_TIMEOUT);
// if (HAL_I2C_Master_Receive(&INA226_COM_PORT,INA226_ADDRESS, ReceivedTable, 2, INA226_I2C_TIMEOUT) != HAL_OK) return 0xFF;
// else return ((uint16_t)ReceivedTable[0]<<8 | ReceivedTable[1]);
// }// uint16_t INA226_GetShuntV()
// {
// uint8_t SentTable[1] = {INA226_SHUNTV};
// uint8_t ReceivedTable[2];
// HAL_I2C_Master_Transmit(&INA226_COM_PORT,INA226_ADDRESS, SentTable, 1, INA226_I2C_TIMEOUT);
// if (HAL_I2C_Master_Receive(&INA226_COM_PORT,INA226_ADDRESS, ReceivedTable, 2, INA226_I2C_TIMEOUT) != HAL_OK) return 0xFF;
// else return ((uint16_t)ReceivedTable[0]<<8 | ReceivedTable[1]);
// }uint16_t INA226_GetBusVReg()
{uint8_t SentTable[1] = {INA226_BUSV};uint8_t ReceivedTable[2];HAL_I2C_Master_Transmit(&INA226_COM_PORT,INA226_ADDRESS, SentTable, 1, INA226_I2C_TIMEOUT);if (HAL_I2C_Master_Receive(&INA226_COM_PORT,INA226_ADDRESS, ReceivedTable, 2, INA226_I2C_TIMEOUT) != HAL_OK) return 0xFF;else return ((uint16_t)ReceivedTable[0]<<8 | ReceivedTable[1]);
}uint8_t INA226_SetCalibrationReg(uint16_t ConfigWord)
{uint8_t SentTable[3];SentTable[0] = INA226_CALIB;SentTable[1] = (ConfigWord & 0xFF00) >> 8;SentTable[2] = (ConfigWord & 0x00FF);return HAL_I2C_Master_Transmit(&INA226_COM_PORT, INA226_ADDRESS, SentTable, 3, INA226_I2C_TIMEOUT);
}// uint16_t INA226_GetCalibrationReg()
// {
// uint8_t SentTable[1] = {INA226_CALIB};
// uint8_t ReceivedTable[2];
// HAL_I2C_Master_Transmit(&INA226_COM_PORT,INA226_ADDRESS, SentTable, 1, INA226_I2C_TIMEOUT);
// if (HAL_I2C_Master_Receive(&INA226_COM_PORT,INA226_ADDRESS, ReceivedTable, 2, INA226_I2C_TIMEOUT) != HAL_OK) return 0xFF;
// else return ((uint16_t)ReceivedTable[0]<<8 | ReceivedTable[1]);
// }uint16_t INA226_GetPowerReg()
{uint8_t SentTable[1] = {INA226_POWER};uint8_t ReceivedTable[2];HAL_I2C_Master_Transmit(&INA226_COM_PORT,INA226_ADDRESS, SentTable, 1, INA226_I2C_TIMEOUT);if (HAL_I2C_Master_Receive(&INA226_COM_PORT,INA226_ADDRESS, ReceivedTable, 2, INA226_I2C_TIMEOUT) != HAL_OK) return 0xFF;else return ((uint16_t)ReceivedTable[0]<<8 | ReceivedTable[1]);
}uint16_t INA226_GetCurrentReg()
{uint8_t SentTable[1] = {INA226_CURRENT};uint8_t ReceivedTable[2];HAL_I2C_Master_Transmit(&INA226_COM_PORT,INA226_ADDRESS, SentTable, 1, INA226_I2C_TIMEOUT);if (HAL_I2C_Master_Receive(&INA226_COM_PORT,INA226_ADDRESS, ReceivedTable, 2, INA226_I2C_TIMEOUT) != HAL_OK) return 0xFF;else return ((uint16_t)ReceivedTable[0]<<8 | ReceivedTable[1]);
}// uint16_t INA226_GetManufID()
// {
// uint8_t SentTable[1] = {INA226_MANUF_ID};
// uint8_t ReceivedTable[2];// HAL_I2C_Master_Transmit(&INA226_COM_PORT,INA226_ADDRESS, SentTable, 1, INA226_I2C_TIMEOUT);
// if (HAL_I2C_Master_Receive(&INA226_COM_PORT,INA226_ADDRESS, ReceivedTable, 2, INA226_I2C_TIMEOUT) != HAL_OK) return 0xFF;
// else return ((uint16_t)ReceivedTable[0]<<8 | ReceivedTable[1]);
// }// uint16_t INA226_GetDieID()
// {
// uint8_t SentTable[1] = {INA226_DIE_ID};
// uint8_t ReceivedTable[2];
// HAL_I2C_Master_Transmit(&INA226_COM_PORT,INA226_ADDRESS, SentTable, 1, INA226_I2C_TIMEOUT);
// if (HAL_I2C_Master_Receive(&INA226_COM_PORT,INA226_ADDRESS, ReceivedTable, 2, INA226_I2C_TIMEOUT) != HAL_OK) return 0xFF;
// else return ((uint16_t)ReceivedTable[0]<<8 | ReceivedTable[1]);
// }// uint8_t INA226_SetMaskEnable(uint16_t ConfigWord)
// {
// uint8_t SentTable[3];
// SentTable[0] = INA226_MASK;
// SentTable[1] = (ConfigWord & 0xFF00) >> 8;
// SentTable[2] = (ConfigWord & 0x00FF);
// return HAL_I2C_Master_Transmit(&INA226_COM_PORT, INA226_ADDRESS, SentTable, 3, INA226_I2C_TIMEOUT);
// }// uint16_t INA226_GetMaskEnable()
// {
// uint8_t SentTable[1] = {INA226_MASK};
// uint8_t ReceivedTable[2];
// HAL_I2C_Master_Transmit(&INA226_COM_PORT,INA226_ADDRESS, SentTable, 1, INA226_I2C_TIMEOUT);
// if (HAL_I2C_Master_Receive(&INA226_COM_PORT,INA226_ADDRESS, ReceivedTable, 2, INA226_I2C_TIMEOUT) != HAL_OK) return 0xFF;
// else return ((uint16_t)ReceivedTable[0]<<8 | ReceivedTable[1]);
// }// uint8_t INA226_SetAlertLimit(uint16_t ConfigWord)
// {
// uint8_t SentTable[3];
// SentTable[0] = INA226_ALERTL;
// SentTable[1] = (ConfigWord & 0xFF00) >> 8;
// SentTable[2] = (ConfigWord & 0x00FF);
// return HAL_I2C_Master_Transmit(&INA226_COM_PORT, INA226_ADDRESS, SentTable, 3, INA226_I2C_TIMEOUT);
// }// uint16_t INA226_GetAlertLimit()
// {
// uint8_t SentTable[1] = {INA226_ALERTL};
// uint8_t ReceivedTable[2];
// HAL_I2C_Master_Transmit(&INA226_COM_PORT,INA226_ADDRESS, SentTable, 1, INA226_I2C_TIMEOUT);
// if (HAL_I2C_Master_Receive(&INA226_COM_PORT,INA226_ADDRESS, ReceivedTable, 2, INA226_I2C_TIMEOUT) != HAL_OK) return 0xFF;
// else return ((uint16_t)ReceivedTable[0]<<8 | ReceivedTable[1]);
// }
5 上主函数伪代码
main.c伪代码
int main(void)
{while (1){batteryVolt = INA226_GetBusV();//锂电池电压//单节18650电池if(batteryVolt>4.15) //电压值对比{BatCap = 0.99;}//容量else if(batteryVolt<3.4){BatCap =0;}else{BatCap = (batteryVolt-3.4)/(4.15-3.4);}//正常情况下计算比例 if(BatCap<0.45){}//没电啦printf("B:%3.1fv Q:%02d%% ",batteryVolt,(int)(BatCap*100)); //打印}
}
我看到一款MP3芯片,N9200芯片 ,是N-EC的,flash自带盘符功能,直接拷贝MP3进flash,同时支持TF卡,U盘,可以同时支持UART,ADKEY,IO口控制,音质的话也好很多,成本差不多,
以下是完整原理图
WT588D
搬运自:教你一步步使用语音芯片WT588D - 立创社区 (szlcsc.com)
一 芯片概述
WT588D是一款高品质语音控制芯片,通过外挂存储器(SPI Flash、SD卡、U盘),将编译好的语音工程烧写到存储器中,即可控制语音的播放。
具有控制灵活、开发简单等特点,广泛应用于各种有语音播放和人机交互的工业场合。如发卡器、自动售货机、加油机等……
商城有售:http://www.szlcsc.com/product/details_88676.html
- 工作电压 DC2.8V~5.5V,静态休眠电流小于 10uA;
- 根据外挂SPI-Flash 的不同,播放时长也不同,支持 2M~32Mbit的SPI-Flash 存储器;
- 内置 13Bit/DA 转换器,以及 12Bit/PWM 输出,音质好;
- 支持 DAC/PWM 两种输出方式,PWM 输出可直接推动 0.5W/8Ω扬声器,推挽电流充沛;
- 支持加载 WAV 音频格式,支持加载 6K~22KHz 采样率音频;
- 可通过专业上位机操作软件,随意组合语音,可插入静音(插入的静音不占用内存的容量);
- 220 段可控制地址位,单个地址位最多可加载 128 段语音,地址位内的语音组合播放;
二 系统应用图
1、WT588D语音电路图,推荐使用3线或1线制串口。
小喇叭0.5W 8R的,可以直接用这个:
WT588D 语音芯片及模块应用电路-CSDN博客
大喇叭请使用运放或者三极管放大:
2、功放电路推荐使用SC8002B,便宜又大碗。所需外围元件少且在 2.0V~5.0V输入电压下即可工作,商城有售。当然也可使用LM386、TDA2822、PAM8403等常用功放IC。
三 语音文件制作
1、人工录音,自己用麦克风录制或找专业人员帮忙录制;
2、使用语音合成软件,输入文本自动生成wav语音文件。
推荐使用科大讯飞语音合成系统5.0
3、语音文件编辑,例如要添加背景音乐,或将MP3格式文件转化为wav格式等
推荐使用GoldWave (音频编辑工具) 5.70 绿色版
四 语音工程编译与下载
1、语音工程创建与编译,详细步骤与说明WT588D VoiceChip 使用说明书。
2、 语音工程下载,将编译好的bin文件烧写到存储器中。
(1)使用官方推荐使用的WT550U2烧写器
(2)使用SPI FLASH烧录器,某宝上一搜一大把,类似以下图片:
五、程序设计
1、三线串口制控制程序
2、 一线串口制控制程序
INA226使用之程序与模块测试-CSDN博客
原文链接:https://blog.csdn.net/weixin_50257954/article/details/133635534