完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
已软件模拟,一切正常。
//ADS1256读寄存器 u8 ADS1256_Read_Reg(u8 reg) { u8 status; while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_7)){;}//wait ready reg=reg|0x10; ADS1256_Write_Bits(reg); ADS1256_Write_Bits(0x0); delayus(10); //????? T6 时间调整6.5us status=ADS1256_Read_Bits(); return status; } //ADS1256读寄存器 void ADS1256_Write_Reg( u8 reg, u8 senddata) { while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_7)){;}//wait ready reg=reg|0x50; ADS1256_Write_Bits(reg); ADS1256_Write_Bits(0x0); ADS1256_Write_Bits(senddata); } HAL库 uint8_t ADS1256_Read_Reg(uint8_t reg) { uint8_t status=0xff; uint8_t databuffer[2]; while(ADS1256_Read_Ready){;}//wait ready reg=reg|0x10; databuffer[0]=reg;databuffer[1]=0; if(HAL_SPI_Transmit(&hspi2,&databuffer[0],1,1000)!=HAL_OK) {Error_Handler();} if(HAL_SPI_Transmit(&hspi2,&databuffer[1],1,1000)!=HAL_OK) {Error_Handler();} delayus(20); //????? T6 时间调整6.5us if(HAL_SPI_TransmitReceive(&hspi2,&status,&databuffer[0],1,1000)!=HAL_OK) {Error_Handler();} return databuffer[0]; } //ADS1256写寄存器 void ADS1256_Write_Reg( uint8_t reg, uint8_t senddata) { uint8_t databuffer[3]; while(ADS1256_Read_Ready){;}//wait ready reg=reg|0x50; databuffer[0]=reg;databuffer[1]=0;databuffer[2]=senddata; if(HAL_SPI_Transmit(&hspi2,&databuffer[0],1,1000)!=HAL_OK) {Error_Handler();} if(HAL_SPI_Transmit(&hspi2,&databuffer[1],1,1000)!=HAL_OK) {Error_Handler();} if(HAL_SPI_Transmit(&hspi2,&databuffer[2],1,1000)!=HAL_OK) {Error_Handler();} } HAL库测试 //ADS1256_Init(); ADS1256_Write_CS_L; delayms(100); ADS1256_Write_Reg(0x01,0x01);//状态寄存器初始化 delayus(20); rbuffer[0]=0; rbuffer[0]=ADS1256_Read_Reg(0x01);//模拟多路选择器初始化 delayus(20); 向01寄存器写入1,再读出,数据不对 配置 hspi2.Instance = SPI2; hspi2.Init.Mode = SPI_MODE_MASTER; hspi2.Init.Direction = SPI_DIRECTION_2LINES; hspi2.Init.DataSize = SPI_DATASIZE_8BIT; hspi2.Init.CLKPolarity = SPI_POLARITY_LOW; hspi2.Init.CLKPhase = SPI_PHASE_2EDGE; hspi2.Init.NSS = SPI_NSS_SOFT; hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256; hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB; hspi2.Init.TIMode = SPI_TIMODE_DISABLE; hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; hspi2.Init.CRCPolynomial = 10; if (HAL_SPI_Init(&hspi2) != HAL_OK) { Error_Handler(); } |
|
相关推荐
3个回答
|
|
结案!外部传感器未接,导致程序不报错,数据乱。插上传感器,一切OK!想当然不用插传感器,只是读写参数不会有影响!希望大家不要再跳这个坑!
|
|
|
|
楼主有没有CubemxLL库写的代码,我最近在调试ADS1256,用LL库一直采样非常不准确
|
|
|
|
大部分是硬件的问题,外接的芯片的连接线,电源等
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1967 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1823 浏览 3 评论
4403 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1970 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2477 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 20:23 , Processed in 0.605094 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号