1、芯片基本介绍
2、开发环境说明
我使用的开发环境是 esp32 idf 芯片是 s3系列。里面的一些底层SPI都是以这个为基础作为参照的。
3、主要功能的驱动编写
因为芯片有许多功能,在此我只对基本的读取数据和读写寄存器进行介绍。
3.1SPI的配置
void ADS8661_SPI_Init()
{
esp_err_t ret;
spi_device_handle_t spi;
spi_bus_config_t buscfg = {
.miso_io_num = PIN_NUM_MISO,
.mosi_io_num = PIN_NUM_MOSI,
.sclk_io_num = PIN_NUM_CLK,
.quadwp_io_num = -1,
.quadhd_io_num = -1,
.flags = SPICOMMON_BUSFLAG_MASTER,
};
spi_device_interface_config_t devcfg = {
.clock_speed_hz = 10 * 1000 * 1000, // Clock out at 10 MHz
.address_bits = 0,
.command_bits = 0,
// interface_cfg.input_delay_ns = 0; //配置输入延时的允许范围
// 时钟发出信号到miso进行输入直接会有延迟,这个参数就是配置这个允许的最大延迟时间。
// 如果主机接收到从机时钟,但是超过这个时间没有收到miso发来的输入信号,就会返回通讯失败。
// 这个时间即使设置为0,也能正常工作,但是最好通过手册或逻辑分析仪进行估算。能够实现更好的通讯。
// 超过8M的通讯都应该认真设置这个数字
.duty_cycle_pos = 0, // 配置占空比
.flags = SPI_DEVICE_NO_DUMMY,
// 设置时钟的占空比,比例是 pos*1/256,默认为0,也就是50%占空比
.mode = 0, // SPI mode 0
.spics_io_num = PIN_NUM_CS, // CS pin -1代表使用软件控制使能cs
.queue_size = 7, // We want to be able to queue 7 transactions at a time
};
// Initialize the SPI bus
ret = spi_bus_initialize(ADS8661_HOS