OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3832|回复: 2

SPI AD7175-2通信异常

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2016-10-19
在线时间
1 小时
发表于 2016-10-19 10:43:02 | 显示全部楼层 |阅读模式
6金钱
使用STM32mini板配置AD7175-2时,读取AD7175-2的ID寄存器,读取到的值一直会变动,出现异常,请问是什么问题,时序和代码如下。
EX1W~VBO`G((B_]Y[4]JW1I.png

通信寄存器控制对ADC全部寄存器映射的访问。此寄存器

是一个8位只写寄存器。上电或复位后,数字接口默认处

  于期待对通信寄存器执行一个写操作的状态;要验证器

通信是否正常,建议读取ID寄存器。 ID寄存器

                  是一个只读寄存器,对于AD7175-2,其值为0x0CDX。


void SPI1_Init(void)
{      SPI_InitTypeDef  SPI_InitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;

        RCC_APB2PeriphClockCmd(        RCC_APB2Periph_GPIOA|RCC_APB2Periph_SPI1|RCC_APB2Periph_AFIO, ENABLE );

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 ;   
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ;//PA6配置成上拉输入  PA6  DOUT
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);               
        GPIO_SetBits(GPIOA,GPIO_Pin_8);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;//SPI         PA4          CS
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);               
        GPIO_SetBits(GPIOA,GPIO_Pin_4);
       
        GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_5| GPIO_Pin_7; /* PA5         CLK                PA7          DIN*/
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP ;  //复用推挽输出
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);

        SPI_Cmd(SPI1, DISABLE); //失能能SPI外设
        SPI_InitStructure.SPI_Mode = SPI_Mode_Master;  
        SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;  
        SPI_InitStructure.SPI_CRCPolynomial = 7;  
        SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;  
        SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;  
        SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;/**/  
        SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;  
        SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;/*此处根据AD7175-2数据手册进行配置*/  
        SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
        SPI_Init(SPI1, &SPI_InitStructure);  //根据SPI_InitStruct中指定的参数初始化外设SPIx寄存器

        SPI_Cmd(SPI1, ENABLE); //使能SPI外设

void Init_AD7175(void)
{   
          u16 ID = 0;
          u16 IDH = 0;
          u16 IDL = 0;
          u8 i;
       
       for(i=0;i<100;i++)/* 多于连续64个 DIN=1 使串口复位 */
       {
           CS_ADC_LOW();// 使能器件
            delay_us(200);
            AD7175_WriteByte(0xff);//持续DIN高电平写操作,恢复AD7175接口
           delay_us(200);
             CS_ADC_HIGH();//失能器件  
          }


          CS_ADC_LOW();//使能器件
        delay_us(2000);
        SPI1_ReadWriteByte(0x47);//持续DIN高电平写操作,恢复AD7705接口
         delay_us(100);
        IDH = SPI1_ReadWriteByte(0xff);
       IDL = SPI1_ReadWriteByte(0xff);
         delay_us(2000);
         CS_ADC_HIGH();//失能器件
        ID = (IDH << 8) | IDL;
        LCD_ShowxNum(60,130,ID,16,16,0);//显示ID寄存器       
            delay_ms(1000);

}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2016-10-20 22:01:20 | 显示全部楼层
回复

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2024-6-17
在线时间
9 小时
发表于 2025-2-7 15:32:52 | 显示全部楼层
帮顶,这个芯片配置好像比较麻烦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-22 16:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表