STM32 控制MAX197读取不到数据
2019-07-14 22:14发布
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
#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
谁能帮我看一下?为什么完全读不到数据?
一周热门 更多>