#include "ads1230.h" #include "events_init.h" long ads1230_vol = 0; void ads1230_gpio_init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; __HAL_RCC_GPIOA_CLK_ENABLE(); /* PA1---ADS1230 SCLK PA6---ADS1230 DOUT PB8---ADS1230 PDWN */ GPIO_InitStruct.Pin = GPIO_PIN_1; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_6; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET); } uint8_t ads1230_init(void) { ads1230_gpio_init(); int i = 0; ADS1230_PDWN_HIGH(); ADS1230_SCLK_LOW(); do{ i++; if(i == 60000) return 0; }while(ADS1230_READ); ADS1230_PDWN_LOW(); delay_tick(30); ADS1230_PDWN_HIGH(); delay_tick(10); for(i=0;i<26;i++) { ADS1230_SCLK_HIGH(); ADS1230_SCLK_LOW(); } return 1; } long ads1230_read(void) { long dat=0; int i = 0; do{ i++; if(i == 60000) return 0; }while(ADS1230_READ); for(i=0;i<20;i++) { dat<<=1; ADS1230_SCLK_HIGH(); ADS1230_SCLK_LOW(); if(ADS1230_READ) dat|=0x01; } for(i=0;i<4;i++) { ADS1230_SCLK_HIGH(); ADS1230_SCLK_LOW(); } if((dat&0x80000) != 0) //数据为负数 { dat -= 0xfffff; } return dat; } void get_ads1230_vol(void) { ads1230_vol = ads1230_read() * 3300.0 / 524288.0; //测试过程中确定采样电压的极值和对应位置 if(test_status == 2) { if(maxv < ads1230_vol) { max_point_cnt = point_data.cnt; maxv = ads1230_vol; maxv_loca = ((CaptureNumber - 30000) / 720.0) * 254.0; } if(minv > ads1230_vol) { min_point_cnt = point_data.cnt; minv = ads1230_vol; minv_loca = ((CaptureNumber - 30000) / 720.0) * 254.0; } } }