标题:
STM32F103C8T6驱动ADS1115读取获得数据 源程序
[打印本页]
作者:
1017720528
时间:
2021-2-21 12:39
标题:
STM32F103C8T6驱动ADS1115读取获得数据 源程序
ADS1115.C
#include "ads1115.h"
#include "usart.h"
#include "myiic.h"
#include "delay.h"
unsigned int Config;
unsigned char Writebuff[4],Readbuff[3];
unsigned int Result[2];
unsigned long ADC_DAT;
void ads_write(void)
{
IIC_Start();
/*写地址ads1115*/
IIC_Send_Byte(Writebuff[0]);
IIC_Wait_Ack();
delay_ms(20);
/*写ADS1115数据,用pointer寄存器来配置config寄存器*/
IIC_Send_Byte(Writebuff[1]);
IIC_Wait_Ack();
delay_ms(20);
/*写ADS1115数据,写config寄存器高位*/
IIC_Send_Byte(Writebuff[2]);
IIC_Wait_Ack();
delay_ms(20);
/*写ADS1115数据,写config寄存器低位*/
IIC_Send_Byte(Writebuff[3]);
IIC_Wait_Ack();
delay_ms(20);
IIC_Stop();
}
void ads_read(void)
{
IIC_Start();
/*写地址ads1115*/
IIC_Send_Byte(Readbuff[0]);
IIC_Wait_Ack();
delay_ms(20);
IIC_Send_Byte(Readbuff[1]);
IIC_Wait_Ack();
delay_ms(20);
IIC_Stop();
IIC_Start();
IIC_Send_Byte(Readbuff[2]);
IIC_Wait_Ack();
delay_ms(20);
Result[0] = IIC_Read_Byte(1);
delay_ms(20);
Result[1] = IIC_Read_Byte(1);
delay_ms(20);
IIC_Stop();
}
//**********************************************
//unsigned char Write_N_Byte(unsigned char *writebuffer,unsigned char n)
//{
// uint i;
//
// for(i=0;i<n;i++)
// {
// Write_1_Byte(*writebuffer);
// if(Check())
// {
// writebuffer ++;
// }
// else
// {
// Stop();
// return FALSE;
// }
// }
//
// Stop();
// return TRUE;
//}
//**********************************************
//void Read_N_Byte(unsigned int*readbuff, unsigned char n)
//{ uchar i;
// for(i=0;i<n;i++)
// {
// readbuff[i]=Read_1_Byte();
// if(i==n-1)
// NACK(); //不连续读字节
// else
// ACK(); //连续读字节
// }
// Stop();
//}
//**********************************************
void InitADS1115(uchar S_MUX_0, uchar S_MUX_1)
{
if (S_MUX_0 == 0 && S_MUX_1 == 0) //AIN0
Config = OS+MUX_A0+PGA+DR+COMP_QUE+MODE;
if (S_MUX_0 == 0 && S_MUX_1 == 1) //AIN1
Config = OS+MUX_A1+PGA+DR+COMP_QUE+MODE;
if (S_MUX_0 == 1 && S_MUX_1 == 0) //AIN2
Config = OS+MUX_A2+PGA+DR+COMP_QUE+MODE;
if (S_MUX_0 == 1 && S_MUX_1 == 1) //AIN3
Config = OS+MUX_A3+PGA+DR+COMP_QUE+MODE;
Writebuff[0]=ADDRESS_W;
Writebuff[1]=Pointer_1;
Writebuff[2]=Config/256;
Writebuff[3]=Config%256;
Readbuff[0]=ADDRESS_W;
Readbuff[1]=Pointer_0;
Readbuff[2]=ADDRESS_R;
}
//**********************************************
//void WriteWord(void)
//{
//uint t;
//Start(); //写入4个字节
// do
// {
// t=Write_N_Byte(Writebuff,4);
// printf("1\r\n");
// }while(t==0);
//}
//**********************************************
//void ReadWord(void)
//{
//int t;
// Start(); //写入2个字节
// do
// {
// t=Write_N_Byte(Readbuff,2);
// }while(t==0);
// Start();
////写入2个字节
// do
// {
// t=Write_N_Byte(&Readbuff[2],1);
// }while(t==0);
// Read_N_Byte(Result,2); //读出2个字节
// }
//**********************************************
void ADS1115(uchar S_MUX_0, uchar S_MUX_1)
{
InitADS1115(S_MUX_0, S_MUX_1);
ads_write();
ads_read();
//WriteWord();
//ReadWord();
}
复制代码
STM32_ADS1115 测试成功.7z
2021-2-21 15:16 上传
点击文件名下载附件
下载积分: 黑币 -5
190.83 KB, 下载次数: 253, 下载积分: 黑币 -5
IIC通讯成功
作者:
gkw222
时间:
2021-11-20 13:51
谢谢楼主分享的代码,下载测试验证无问题,楼主辛苦!
作者:
gkw222
时间:
2021-11-20 13:53
感谢楼主分享的代码,下载测试验证一切正常,楼主辛苦了!
作者:
寂静
时间:
2023-7-28 14:36
为啥寄存器转换结果的值一直是65535?
使用的是ST6M32F103ZET6
作者:
xxjs120
时间:
2024-6-23 14:49
根本不能用,串口数据一直的65535
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1