0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ADA4350如何实现串口读写

CHANBAEK 来源:放大器笔记 作者:郭剑 2023-10-31 16:35 次阅读

问:ADA4350可写不可读是怎么回事,如何实现串口读写?

1ADA4350简介

ADA4350集成TIA、开关及差分放大器在一个封装内,非常适合对光电器件输出的电流进行信号调理。芯片内部的六组开尔文式开关有两种用法,既可以六组都给TIA用,这样外部可配置六个不同电阻实现六种增益,覆盖不同的输入电流范围;也可以TIA用三组开关,剩下的三组给后面的运放使用,共实现3x3
= 9种的增益。输出运放可配置为差分输出直接驱动差分输入ADC

芯片内部的六组开关,可以通过IO口并行控制,也可以用SPI串行控制,SPI时序图和寄存器Map定义见芯片资料

图片

图|ADA4350内部框图

2SPI测试硬件环境

STM32F103C8Tx的SPI口(PA4~PA7)控制ADA4350EVB.

ADA4350EVB配置如下:

DVDD短路到VCC, DGND短路到GND,E3631A提供+/-5V电源给VCC和VEE;

MODE接低(串行模式),ENABLE接高,LATCH接低;

并口模式下控制P0 ~ P4的开关切换到高电平(否则ADA4350的20~23脚接地,MCU无法进行控制);

将MCU控制板的CS/SCK/SDI/SDO共5根线连接到ADA4350EVB的20~23脚(SPI管脚)进行控制,两板的地短接。用示波器抓取

CS/SCK/SDI/SDO时序。

3测试时序图

测试时序图见下,

先写0x000820到ADA4350,即控制S11和S5导通;

再读,先写0x800000告诉芯片要读寄存器,然后SDO线上会出现0x800820,最高位无效,最低12位为0x820,即刚写进去的值;

需要注意的是在读写过程中,SCK下降沿有效。

图片

图|ADA4350 SPI时序图

4参考代码

代码无他,需要注意灵活配置MCU的SPI,使之与ADA4350时序需求匹配即可。

参考代码

代码无他,需要注意灵活配置MCU的SPI,使之与ADA4350时序需求匹配即可。

int main(void)

{

while (1)

{

//Write 0x000820(enable S5 and S11 of ADA4350)

SPI_write_ADA4350(3,0x000820);

//Read the register value

SPI_read_ADA4350(3,0x800000);

//Print the reading value by UART

HAL_UART_Transmit(&huart1,Read_dvalue,3,0xFFFF);

//LED Blink

Led_blink();

Delay_ms(200); }

}

/***** SPI1 Initialization Function /

static void MX_SPI1_Init(void)

{

hspi1.Instance = SPI1;

hspi1.Init.Mode = SPI_MODE_MASTER;

hspi1.Init.Direction = SPI_DIRECTION_2LINES;

hspi1.Init.DataSize = SPI_DATASIZE_8BIT;

hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;

hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;

hspi1.Init.NSS = SPI_NSS_SOFT;

hspi1.Init.BaudRatePrescaler =

SPI_BAUDRATEPRESCALER_64;

hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;

hspi1.Init.TIMode = SPI_TIMODE_DISABLE;

hspi1.Init.CRCCalculation =

SPI_CRCCALCULATION_DISABLE;

hspi1.Init.CRCPolynomial = 10;

if(HAL_SPI_Init(&hspi1) != HAL_OK)

{

Error_Handler();

}

}

/ SPI WriteADA4350 /

void SPI_write_ADA4350(uint8_tsize,uint32_t data_value)

{

SPI_CS_HIGH //CS HIGH

SPI_CS_LOW //CS LOW

//SPI write 0x000820

SPI_write_buffer[0]=(uint8_t)((data_value&0x00ff0000)>>16);

SPI_write_buffer[1]=(uint8_t)((data_value&0x0000ff00)>>8);

SPI_write_buffer[2]=(uint8_t)(data_value&0x000000ff);

//write 3 bytes

HAL_SPI_Transmit(&hspi1, SPI_write_buffer, size, 0x2000);

SPI_CS_HIGH //CS HIGH

Delay_us(5);

}

/ SPI ReadADA4350 **/

uint8_t SPI_read_ADA4350(uint8_tsize,uint32_t data_value)

{

SPI_CS_HIGH //CS HIGH

SPI_CS_LOW //CS LOW

//SPI write 0x800000

SPI_write_buffer[0]=(uint8_t)((data_value&0x00ff0000)>>16);

SPI_write_buffer[1]=(uint8_t)((data_value&0x0000ff00)>>8);

SPI_write_buffer[2]=(uint8_t)(data_value&0x000000ff);

//write 3 bytes

HAL_SPI_Transmit(&hspi1, SPI_write_buffer, size, 0x2000);

SPI_CS_HIGH //CS HIGH

Delay_us(2);

//SPI RX

SPI_CS_LOW //CS LOW

//Read data into the Read_dvalue array

HAL_SPI_Receive(&hspi1,Read_dvalue,size,0x2000);

SPI_CS_HIGH //CS HIGH

Delay_us(5);

return 1;

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 放大器
    +关注

    关注

    142

    文章

    12416

    浏览量

    210018
  • adc
    adc
    +关注

    关注

    95

    文章

    5651

    浏览量

    539474
  • 串口
    +关注

    关注

    14

    文章

    1483

    浏览量

    74512
  • IO口
    +关注

    关注

    3

    文章

    164

    浏览量

    23756
收藏 人收藏

    评论

    相关推荐

    请问ADA4350数字供电,LDO提供是3.3V.可是实测电压为4.35V是什么原因?

    技术支持:你好!我对ADA4350的24脚提供3.3V电压时出现一个问题,我的LDO提供是3.3V.可是实测电压为4.35V,一开始怀疑LDO部分有问题,最后发现只要断开ADA4350的24脚
    发表于 08-01 08:33

    ADA4350第一级输出有200mV左右的直流偏移请问是什么原因?

    我想将ADA4350的第一级用作可控增益放大器,第二级的两个放大器仿照ADA4941的例子,变成单端转差分的ADC缓冲器。利用LTSPICE实际仿真时,发现 1、V(SWA_OUT)管脚大约有
    发表于 08-14 07:37

    ADA4350双电源供电的输出端OUT0有一相同周期的尖脉冲噪声

    本人非线性电路设计人员,以前没有这方面的经验,由于工作需要设计一个光电放大电路。芯片采用的是ADA4350,原理图如下: 其中AVDD-5V由电压转换芯片LMC7660将AVDD+5V转换而来。此
    发表于 09-20 14:23

    请问为ADA4350供电DVDD提供3.3V +VS提供 +5.0V ,而-VS接地有问题吗

    技术支持:你好!请问一下为ADA4350供电 DVDD提供3.3V+VS提供 +5.0V ,而-VS 接地,这样的供电有没有问题.
    发表于 01-23 08:42

    ADA4350发热的原因?怎么解决?

    最近使用ADA4350搭了一个放大电路,上电以后几秒中内芯片就会非常烫。芯片更换,断开输入输出问题依旧。请高手帮忙指点,多谢! 电源部分设计如下:数字供电采用+3.3v,模拟供电采用+-5v,查看手册也没有说这样设计有问题,后来把数字3.3v断开,采用+5v给数字部分供电,依然不可以,头痛中……
    发表于 11-15 06:22

    ADA4350第一级输出有200mV左右的直流偏移是为什么呢?

    我想将ADA4350的第一级用作可控增益放大器,第二级的两个放大器仿照ADA4941的例子,变成单端转差分的ADC缓冲器。利用LTSPICE实际仿真时,发现 1、V(SWA_OUT)管脚大约有
    发表于 11-17 09:01

    关于ADA4350双电源供电噪声的问题求助

    本人非线性电路设计人员,以前没有这方面的经验,由于工作需要设计一个光电放大电路。芯片采用的是ADA4350,原理图如下: 其中AVDD-5V由电压转换芯片LMC7660将AVDD+5V转换而来
    发表于 11-22 07:30

    ADI推出模拟前端ADA4350,在单个封装中集成FET输入放大器

    Analog Devices, Inc. (ADI)推出集成ADC驱动器的FET输入AFE(模拟前端)ADA4350,用于与电流模式传感器(如光电二极管)和高输出阻抗电压传感器直接
    发表于 09-11 16:34 2224次阅读

    ADA4350 带有ADC驱动器的FET输入模拟前端

    电子发烧友网为你提供ADI(ti)ADA4350相关产品参数、数据手册,更有ADA4350的引脚图、接线图、封装手册、中文资料、英文资料,ADA4350真值表,ADA4350管脚等资料
    发表于 02-22 16:15
    <b class='flag-5'>ADA4350</b> 带有ADC驱动器的FET输入模拟前端

    ADA4350集成ADC驱动器的FET输入模拟前端的数据手册免费下载

    ADA4350是用于光电检测器或其它传感器的模拟前端,其输出电流与检测的参数或电压输入成比例,系统要求用户在极精密增益水平之间做出选择,从而使其动态范围达到最大。
    发表于 04-30 08:00 10次下载
    <b class='flag-5'>ADA4350</b>集成ADC驱动器的FET输入模拟前端的数据手册免费下载

    ADA4350 Evaluation Board Software

    ADA4350 Evaluation Board Software
    发表于 02-01 11:47 0次下载
    <b class='flag-5'>ADA4350</b> Evaluation Board Software

    ADA4350评估板软件

    ADA4350评估板软件
    发表于 03-23 13:09 5次下载
    <b class='flag-5'>ADA4350</b>评估板软件

    UG-655:评估ADA4350,这是一款FET输入模拟前端,采用28引线9.8 mm×6.4 mm TSSOP提供ADC驱动器

    UG-655:评估ADA4350,这是一款FET输入模拟前端,采用28引线9.8 mm×6.4 mm TSSOP提供ADC驱动器
    发表于 05-13 08:06 0次下载
    UG-655:评估<b class='flag-5'>ADA4350</b>,这是一款FET输入模拟前端,采用28引线9.8 mm×6.4 mm TSSOP提供ADC驱动器

    ADA4350 SPICE宏模型

    ADA4350 SPICE宏模型
    发表于 06-03 19:59 0次下载
    <b class='flag-5'>ADA4350</b> SPICE宏模型

    EVAL-ADA4350 EVAL-ADA4350评估板

    电子发烧友网为你提供ADI(ti)EVAL-ADA4350相关产品参数、数据手册,更有EVAL-ADA4350的引脚图、接线图、封装手册、中文资料、英文资料,EVAL-ADA4350真值表,EVAL-
    发表于 08-19 01:00