这段时间用这个1255芯片进行了一个读取adc的操作,在此分享一些ads1255/6的一些使用方法以及需要注意的一些东西。
这个芯片的话支持读取一个24bit的adc的值,mcu通过spi与1255/6来进行通信,老手通过对芯片使用手册的浏览其实可以很快上手,可惜本人比较菜,很多地方都是看的一知半解,最后也是问大佬才对那些地方进行了了解。
1255/6对于电压和spi的波特率都是有要求的,电压第一脚电压不应低于4.7v,然后在使用过程中spi波特率通过分频之后保持在1.8mhz-1.9mhz左右会比较合适,我这里使用的是120m,8分频之后就是1.8mhz的样子,用cubemx来配置还是很简单的。
然后就到了写代码的时间了,用逻辑分析仪来看ads1255/6的DRDY脚,默认速率是很快的,所以需要注意上来第一件事情最好是改变速率,选择改成你自己需要的速率(下面这些就是对应的速率)。

#define AD1256_RATE_30000_SPS           0xF0
#define AD1256_RATE_15000_SPS           0xE0
#define AD1256_RATE_7500_SPS            0xD0
#define AD1256_RATE_3750_SPS            0xC0
#define AD1256_RATE_2000_SPS            0xB0
#define AD1256_RATE_1000_SPS            0xA1
#define AD1256_RATE_500_SPS             0x92
#define AD1256_RATE_100_SPS             0x82
#define AD1256_RATE_60_SPS              0x72
#define AD1256_RATE_50_SPS              0x63
#define AD1256_RATE_30_SPS              0x53
#define AD1256_RATE_25_SPS              0x43
#define AD1256_RATE_15_SPS              0x33
#define AD1256_RATE_10_SPS              0x20
#define AD1256_RATE_5_SPS               0x13
#define AD1256_RATE_2D5_SPS             0x03//写速率函数
```c
void SetAd1256DataRate(uint8_t DataRate)
{static uint8_t TempTxBuff[4] = {0x53, 0x00, 0x00, 0x00};static uint8_t TempRxBuff[4] = {0};TempTxBuff[2] = DataRate;TempTxBuff[3] = DataRate;Ad1256SpiTransRecv(TempTxBuff, TempRxBuff, 3);//Ad1256SpiTransmit(TempTxBuff, 4);
}

//读取速率是否写成功

uint8_t ReadAd1256DataRate(void)
{static uint8_t TempTxBuff[3] = {0x13, 0x01, 0x00};static uint8_t TempTxBuff1[3] = {0};static uint8_t TempRxBuff[3] = {0};//TempTxBuff[2] = DataRate;Ad1256SpiTransRecv(TempTxBuff, TempRxBuff, 2);Ad1256SpiTransRecv(TempTxBuff1, TempRxBuff, 2);return TempRxBuff[0];
}

//读ID

bool ReadAd1256Id1(void)
{static uint8_t TempTxBuff[3] = {0x10, 0x00, 0x00};static uint8_t TempTxBuff1[3] = {0};static uint8_t TempRxBuff[3] = {0};Ad1256SpiTransmit(TempTxBuff, 2);Ad1256SpiReceive(TempRxBuff, 1);printf("id:%x\r\n",TempRxBuff[0]&0xf0);if((TempRxBuff[0] & 0xF0) == 0x30)return true;elsereturn false;
}

//自动校准

void SetAd1256AutoCali(void)
{static uint8_t TempTxBuff[4] = {0x50, 0x01, 0x34, 0x08};static uint8_t TempRxBuff[4] = {0};Ad1256SpiTransRecv(TempTxBuff, TempRxBuff, 4);
}

//还有一个自检

void SetAd1256SelfCal(void)
{static uint8_t TempTxBuff[2] = {0xF0, 0x00};Ad1256SpiTransmit(TempTxBuff, 1);
}

//循环读取数据

void SetAd1256DataContinueMode(uint8_t Stat)
{static uint8_t TempTxBuff[2] = {0x03, 0x00};if(Stat == 0)TempTxBuff[0] = 0x0F;Ad1256SpiTransmit(TempTxBuff, 1);
}

//spi发送、接受函数

void Ad1256SpiTransmit(uint8_t *sbuffer, uint16_t size)
{HAL_GPIO_WritePin(STM32_SPI_CS_GPIO_Port, STM32_SPI_CS_Pin, GPIO_PIN_RESET);HAL_SPI_Transmit(&hspi1, sbuffer, size, 100);HAL_GPIO_WritePin(STM32_SPI_CS_GPIO_Port, STM32_SPI_CS_Pin, GPIO_PIN_SET);
}void Ad1256SpiReceive(uint8_t *rbuffer, uint16_t size)
{HAL_GPIO_WritePin(STM32_SPI_CS_GPIO_Port, STM32_SPI_CS_Pin, GPIO_PIN_RESET);HAL_SPI_Receive(&hspi1, rbuffer, size, 100);HAL_GPIO_WritePin(STM32_SPI_CS_GPIO_Port, STM32_SPI_CS_Pin, GPIO_PIN_SET);
}void Ad1256SpiTransRecv(uint8_t *sbuffer,uint8_t *rbuffer, uint16_t size)
{HAL_GPIO_WritePin(STM32_SPI_CS_GPIO_Port, STM32_SPI_CS_Pin, GPIO_PIN_RESET);HAL_SPI_TransmitReceive(&hspi1, sbuffer, rbuffer, size, 100);HAL_GPIO_WritePin(STM32_SPI_CS_GPIO_Port, STM32_SPI_CS_Pin, GPIO_PIN_SET);
}

需要注意配置速率、读取id,自校准这些最好是分开一步一步来进行配置,不然容易出问题。

这里的话基本流程就已经弄完了,如果买了ads1255/6的开发板还需要注意rest脚以及SYNC需要拉高,不然一直这两个脚一直处于低电平是没有办法正常工作的。

关于ads1255/6的基本使用相关推荐

  1. 开源:ADS1255+STM32G0,24位adc,五位半电压表

    1.项目背景 2015年5月份评估完十几种24位ADC后就从第一份工作岗位上离职了,做的24位AD都没有达到实际的效果,一直耽搁困扰了好久.是硬件设计的问题?还是软件开发的问题?还是24位ADC真的不 ...

最新文章

  1. RFM模型分析与客户细分
  2. 鼠标移动过去变大变绿
  3. Windows启动过程
  4. 机器学习与流体动力学:谷歌AI利用「ML+TPU」实现流体模拟数量级加速
  5. String的内存模型,为什么String被设计成不可变的
  6. wp自定义帖子没标签_ofollow标签的作用有重大变化
  7. jdk8新特性(接口新特性、lambda表达式、方法引用、函数式接口、Stream流)和单例设计模式
  8. Myeclipse中点(.)不出来方法或者属性?
  9. 优秀案例快速提升UI设计界面的视觉效果、用户体验
  10. ubuntu 上安装mysql
  11. BI软件应用在哪些方面
  12. cmake的一些小经验
  13. 在WCF数据访问中使用缓存提高Winform字段中文显示速度
  14. 微信小程序抖音实战-支持手机播放小视频
  15. python 答题辅助_GitHub - anwzx/TopSup: 答题辅助决策:冲顶大会等答题类游戏
  16. 个人对计算机专业的认知
  17. NIOS 2 软核中EPCS配置芯片的存储操作
  18. u盘中的android文件夹图标不显示,怎么解决u盘图标变成文件夹,手把手教你解决方法...
  19. 2022年N1叉车司机找解析及N1叉车司机复审模拟考试
  20. 用两个小例子来解释单例模式中的“双重锁定”

热门文章

  1. mvdbos php spider,Scrapy-Redis分布式爬取自如网(一)
  2. java解析Excel
  3. 读计算机应用需要哪些条件,邓迪大学计算机应用本科申请条件.pdf
  4. GraphicsLab Project之光照贴图烘焙(一)
  5. 个人通讯录系统——数据库课程设计
  6. 【ANDROID 】交叉编译链工具
  7. oracle版linux查看rac ip,oracle10g RAC中查看Private IP的方法
  8. [GWCTF 2019]枯燥的抽奖 1——php_mt_seed
  9. 你知道什么是 a站、b站、c站、d站、e站、f站、g站、h站、i站、j站、k站、l站、m站、n站…z 站吗 ?...
  10. 蓝牙键盘连接——输入pin码