STM32F103RCT6驱动AD7705(cubeide)
2024-10-21 11:33:30
首先在cubeide上配置spi,使用spi1,由于正点开发板上的nr24l01与ad7705正好相同,因此根据引脚配置PA1为DRDY,PC4为CS片选
根据手册上所写,配置寄存器初始化
uint8_t commue(uint8_t Dst_Addr)
{uint8_t RXdata;
HAL_SPI_TransmitReceive(&hspi1,&Dst_Addr,&RXdata,1, 1000);
return RXdata;
}
void Init_AD7705(void)
{
for(int i=0;i<150;i++)commue(0xff);//持续DIN高电平写操作,恢复AD7705接口
HAL_Delay(1);
commue(0x20); /* 选择时钟寄存器*/
HAL_Delay(1);
commue(0x0c); /* 配置时钟寄存器*/
HAL_Delay(1);
commue(0x10); /*选择设置寄存器*/
HAL_Delay(1);
commue(0x44);/*配置设置寄存器 */
}
读取通道一数据
uint16_t GetData7705_CH1(void)
{
uint16_t DataL = 0,DataH = 0;
HAL_Delay(1);
commue(0x38); //选中CH1数据寄存器读
while(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1)==GPIO_PIN_SET){;}
////待数据准备好AdDrdy=0
delay_us(20);
DataH=commue(0xff);
DataL=commue(0xff);
delay_us(100);
DataH = DataH << 8;
return (DataH | DataL);
}
计算出电压值(mv)
float ADC_7705(void)
{
Init_AD7705();
float RCH1_16bit=GetData7705_CH1();
return (RCH1_16bit*5049.0/65535); //算出通道1电压
}
最新文章
- pyqt的信号槽机制(转)
- Swift的关键字
- Lind.DDD.Repositories.EF层介绍
- hadoop输入分片计算(Map Task个数的确定)
- Java数组与vector互转
- 【10_169】Majority Element
- 【Linux】基于Linux的buffer和cache学习
- 定位表的数据块并且dump出来
- Ant学习实例
- 两个容易被忽略的mysql知识
- [SQL基础教程] 1-5 表的删除和更新
- 分析下为什么spring 整合mybatis后为啥用不上session缓存
- iOS开发 - Swift使用JavaScriptCore与JS交互
- Docker+SpringBoot+Mybatis+thymeleaf的Java博客系统开源啦
- Udacity并行计算课程笔记-The GPU Programming Model
- Python day 6(3) Python 函数式编程1
- html 常用button事件
- Java 原生网络编程.
- C#手动改变自制窗体的大小
- Mysql相关问题集锦