完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include "max197.h"
#include "delay.h" #include "usart.h" void MAX197_Init() { //JTAG_Set(JTAG_SWD_DISABLE); //必须关闭JTAG,有IO复用 RCC->APB2ENR|=1<<7; //使能PA时钟 GPIOF->CRL&=0x00000000; GPIOF->CRL|=0x33333333; GPIOF->CRH&=0x00000fff; GPIOF->CRH|=0x83333000; GPIOF->ODR|=0x78ff; } //Channel:通道x, 0~7 u16 MAX197_Read(u8 Channel) { u16 temp; MAX197_CS=0; MAX197_WR=0; MAX197_DATA(0x40|Channel); //正常操作,内部时钟,0~5V,通道0 MAX197_CS=1; MAX197_WR=1; while(MAX197_INT); // GPIOA->CRL&=0x00000000; // GPIOA->CRL|=0x88888888; PAL_IN(); //浮空输入也行,模拟输入不行 MAX197_CS=0; MAX197_RD=0; MAX197_HBEN=1; //读高四位 temp=GPIOF->IDR&0x0f; temp<<=8; MAX197_HBEN=0; //读低八位 temp|=(GPIOF->IDR&0xff); // GPIOA->CRL&=0x00000000; // GPIOA->CRL|=0x33333333; PAL_OUT(); MAX197_CS=1; return temp; } double MAX197_GetVol(u8 Channel) //读取10次求平均值 { double vol; u16 temp=0,i; for(i=0;i<10;i++) { temp+=MAX197_Read(Channel); } vol=(double)temp/10.0/4095.0*5.0; return vol; } #ifndef __MAX197_H #define __MAX197_H #include "sys.h" #include "STM32f10x.h" #define PAL_OUT() {GPIOF->CRL&=0x00000000;GPIOF->CRL|=0x33333333;} #define PAL_IN() {GPIOF->CRL&=0x00000000;GPIOF->CRL|=0x88888888;} #define MAX197_DATA(x) GPIOF->ODR=(GPIOF->ODR&0Xff00)|(x&0x00ff)//PA低8位数据输出 #define MAX197_CS PFout(11) #define MAX197_WR PFout(12) #define MAX197_RD PFout(13) #define MAX197_HBEN PFout(14) #define MAX197_INT PFin(15) void MAX197_Init(void); u16 MAX197_Read(u8 Channel); double MAX197_GetVol(u8 Channel); //MAX197寄存器设置: // 控制字格式: // D7(MSB) D6 D5 D4 D3 D2 D1 D0(LSB) // PD1 PD0 ACQMOD RNG BIP A2 A1 A0 // 控制字说明: // PD1,PD0 ----- 选择时钟和掉电模式 // ACQMOD ----- 0:内部获取模式;1:外部获取模式 // RNG ----- 选择满幅输入电压 // BIP ----- 选择输入极性 // A2,A1,A0 ----- 选择输入通道 // // PD1,PD0 ----- 00:一般模式/外部时钟 // 01:一般模式/内部时钟 // 10:Standby Power-Down/时钟不受影响 // 11:Full Power-Down (FULLPD)/时钟不受影响 // // RNG,BIP ----- 00: 0V ~ +5V // 01:-5V ~ +5V // 10: 0V ~ +10V // 11:-10V~ +10V // // A2,A1,A0 ----- 000:CH0 // 001:CH1 // 010:CH2 // 011:CH3 // 100:CH4 // 101:CH5 // 110:CH6 // 111:CH7 //******************************************* #endif 谁能帮我看一下?为什么完全读不到数据? |
|
相关推荐
1个回答
|
|
加个上拉电阻试试~
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
969 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
954 浏览 2 评论
2066 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1162 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1587 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 05:07 , Processed in 0.637419 second(s), Total 72, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号