完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
自己画的板子,ad7175 读取ID也正常,写入和读取其他寄存器正常,但是读取数据一直不正确,不知道是软件的问题还是硬件的问题,不是芯片问题,换了好几片了,想问一下数据寄存器里面读出的数据具体是什么,如何转换成电压,数据手册上没有找到
iint16_t AD7175_ID; u16 reg=0; void AD7175_INIT(void)//应变信号采集初始化函数 { AD7175_RESET();//写入至少64个时钟复位AD7175-2 AD7175_ID=Get_AD7175_ID();//读取AD7175 ID:0X0CDX; printf("AD7175_ID :0x0%xrn",AD7175_ID); ad7175_cs_l; SPI2_ReadWriteByte(0x06);//GPIO 配置寄存器 spi2_ readwritebyte( 0x00); // SPI2_ReadWriteByte(0x0f);//写入0x0c时,D3、D5灭 //写入0x0F时,D3、D5亮 //写入0x0e时,D3灭、D5亮 //写入0x0d时,D3亮、D5灭 ad7175_cs_h; reg = AD7175_Read_Reg(0x06); printf("0x06 reg : 0x%xrn",reg); ad7175_cs_l; SPI2_ReadWriteByte(0x01);//写ADC模式寄存器 SPI2_ReadWriteByte(0xa0);//使能内部基准输出 SPI2_ReadWriteByte(0x0c);//连续转换模式、外部晶振*/ ad7175_cs_h; reg = AD7175_Read_Reg(0x01); printf("0x01 reg : 0x%xrn",reg); ad7175_cs_l; spi2_ readwritebyte( 0x10) ;//写通道映射寄存器0 spi2_ readwritebyte( 0x00); //使能通道0,禁止多通道 SPI2_ReadWriteByte(0x01);//ADC+ -> AIN0;ADC- ->AIN1 ad7175_cs_h; reg = AD7175_Read_Reg( 0x10); printf("0x10 reg : 0x%xrn",reg); ad7175_cs_l; SPI2_ReadWriteByte(0x20);//写配置寄存器 SPI2_ReadWriteByte(0x1f);//使能基准buf与AIN输入buf。 spi2_ readwritebyte( 0x00); // ad7175_cs_h; reg = AD7175_Read_Reg( 0x20); printf("0x20 reg : 0x%xrn",reg); ad7175_cs_l; SPI2_ReadWriteByte(0x28);//写滤波器配置寄存器0 spi2_ readwritebyte( 0x00); // spi2_ readwritebyte( 超速) ; ad7175_cs_h; reg = AD7175_Read_Reg(0x28); printf("0x28 reg : 0x%xrn",reg); ad7175_cs_l; SPI2_ReadWriteByte(0x02);//写接口模式寄存器 spi2_ readwritebyte( 0x10) ; spi2_ readwritebyte( 0x80) ; ad7175_cs_h; } u16 Get_ AD7175_ID( 撤销) { u16 ID; ID=0; ad7175_cs_l; spi2_ readwritebyte( 0x47) ; id =spi2_ read writebyte( 0xff) ; id =spi2_ read writebyte( 0xff) ; ID<<=8; idspi2_ read writebyte( 0xff) ; 重覆( 0xff) ; ad7175_cs_h; 返回身份; } 英特16_ t AD7175_ read_ reg( 英特8_ t addr) { u16 r; r=0; ad7175_cs_l; spi2_ 重写byte( 0x40 addr) ; r=spi2_ readwritebyte( 0xff) ; r=spi2_ readwritebyte( 0xff) ; r<<=8; rspi2_ readwritebyte( 0xff) ; rspi2_ readwritebyte( 0xff) ; ad7175_cs_h; 返回r; } 无效的 AD7175_RESET( 撤销) { 8 a=0; ad7175_sck_h; 延迟( 0xffff) ; ad7175_cs_l; for(a=0;a<10;a++) { spi2_ 重写byte( 0xff) ; } ad7175_cs_h; 延迟( 0xffff) ;//等待复位完成 ad7175_cs_l; } 无效延迟( VU32 nCount) { (; nCount! = 0; nCount-) ; } u32 AD7175_RDATA( 撤销) { u32 Rdata=0; ad7175_cs_l; (spi_i2s_getflag status (spi2,spi_i2s_flag_rxne) =1) ; (spi_i2s_gangflag status (spi2,spi_i2s_flag_rxne) =1) ; (spi_i2s_get status (spi2,spi_i2s_flag_rxne) =1) ; SPI2_ReadWriteByte(0x44);//读取数据寄存器 Rdata = SPI2_ ReadWriteByte( 0xff) ; Rdata <<= 8; Rdata SPI2_ ReadWriteByte( 0xff) ; 数据 SPI2_ readWriteByte( 0xff) ; Rdata <<= 8; Rdata SPI2_ ReadWriteByte( 0xff) ; 数据 SPI2_ readWriteByte( 0xff) ; ad7175_cs_h; 返回 Rdata; 返回 Rdata; 返回 Rdata; 返回 Rdata; 返回 Rdata; 返回 Rdata; 返回Rdata; 返回Rdata; 返回Rdata; 返回Rdata; 返回Rdata; 返回Rdata; 返回Rdata; 返回Rdata; 返回Rdata; 返回Rdata; 返回Rdata; 返回Rdata; 返回Rdata; 返回Rdata; 返回Rdata; 返回Rdata; 返回Rdata; 返回Rdata; } Get2 获取_ Vol( 撤销) { / 浮标值=0; 双 S_Vol=0; (spi_i2s_getflag status (spi2,spi_i2s_flag_rxne) =1) ; (spi_i2s_gangflag status (spi2,spi_i2s_flag_rxne) =1) ; (spi_i2s_get status (spi2,spi_i2s_flag_rxne) =1) ; s_vol=ad7175_rdata (); / S_Vol = 0 值 * 5.0 / 0xFFFFFF; S_Vol = -((S_Vol-0x800000)/0x800000*5*430/100);//电压采集换算关系 返回 S_Vol; } |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
97 浏览 0 评论
734 浏览 1 评论
715 浏览 1 评论
电路小知识 | 交流电路复数的基础知识以及相位差和电抗的计算
571 浏览 0 评论
1766 浏览 3 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 16:35 , Processed in 0.566070 second(s), Total 75, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号