This repository has been archived on 2025-04-28. You can view files and clone it, but cannot push or open issues or pull requests.
CMS3in1/1.Cabin/1.Software/STM32_ADS1278/Drivers/BSP/ADS1278/ADS1278.c

93 lines
2.5 KiB
C
Raw Normal View History

#include "./BSP/ADS1278/ADS1278.h"
void ADS1278_Init(void){
GPIO_InitTypeDef GPIO_InitStruct;
ADS1278_DRDY_GPIO_CLK_ENABLE(); /*DRDY<44><59><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ʹ<EFBFBD><CAB9>*/
ADS1278_FORMAT_GPIO_CLK_ENABLE(); /*FORMAT<41><54><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ʹ<EFBFBD><CAB9>*/
ADS1278_SYNC_GPIO_CLK_ENABLE(); /*SYNC<4E><43><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ʹ<EFBFBD><CAB9>*/
/*DRDY<44><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD>ж<EFBFBD>*/
GPIO_InitStruct.Pin = ADS1278_DRDY_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(ADS1278_DRDY_GPIO_Port, &GPIO_InitStruct);
HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 1);
HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
/*FORMAT<41><54><EFBFBD><EFBFBD>Ϊ<EFBFBD>ߵ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>*/
GPIO_InitStruct.Pin = ADS1278_FORMAT_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(ADS1278_FORMAT_GPIO_Port, &GPIO_InitStruct);
HAL_GPIO_WritePin(ADS1278_FORMAT_GPIO_Port, ADS1278_FORMAT_Pin, GPIO_PIN_SET);
/*SYNC<4E><43><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼΪ<CABC>ߵ<EFBFBD>ƽ*/
GPIO_InitStruct.Pin = ADS1278_SYNC_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(ADS1278_SYNC_GPIO_Port, &GPIO_InitStruct);
HAL_GPIO_WritePin(ADS1278_SYNC_GPIO_Port, ADS1278_SYNC_Pin, GPIO_PIN_SET);
}
void ADS1278_Reset(void){
/*SYNC<4E><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>CLK<4C><4B><EFBFBD><EFBFBD>*/
HAL_GPIO_WritePin(ADS1278_SYNC_GPIO_Port, ADS1278_SYNC_Pin, GPIO_PIN_RESET);
delay_ms(1);
HAL_GPIO_WritePin(ADS1278_SYNC_GPIO_Port, ADS1278_SYNC_Pin, GPIO_PIN_SET);
}
uint8_t DataBuffer[300];
int num = 0;
void ADS1278_Read_Data(void){
uint8_t ReceiveDataArrary[24]; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
HAL_SPI_Receive(&g_spi1_handler, ReceiveDataArrary, 24, 1000); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
DataBuffer[num+0]= ReceiveDataArrary[21];
DataBuffer[num+1]= ReceiveDataArrary[22];
DataBuffer[num+2]= ReceiveDataArrary[23];
num += 3;
if(num >= 240){
/* <20><>ͣ<EFBFBD>ɼ<EFBFBD> */
HAL_GPIO_WritePin(ADS1278_SYNC_GPIO_Port, ADS1278_SYNC_Pin, GPIO_PIN_RESET);
printf("\r\n<EFBFBD><EFBFBD>ʼ\r\n");
for(int i=0; i<240;i++){
printf("%d\r\n",DataBuffer[i]);
}
printf("\r\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r\n");
/* <20><><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD> */
HAL_GPIO_WritePin(ADS1278_SYNC_GPIO_Port, ADS1278_SYNC_Pin, GPIO_PIN_SET);
num = 0;
}
}
uint8_t SYNC_Flag = 0;
/*DRDY<44>½<EFBFBD><C2BD><EFBFBD><EFBFBD>жϺ<D0B6><CFBA><EFBFBD>*/
void EXTI15_10_IRQHandler(void)
{
if(__HAL_GPIO_EXTI_GET_IT(ADS1278_DRDY_Pin) != RESET)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־λ
__HAL_GPIO_EXTI_CLEAR_IT(ADS1278_DRDY_Pin);
if(SYNC_Flag == 0){
/* <20>ϵ<EFBFBD><CFB5><EFBFBD>һ<EFBFBD>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λADS1278<37><38><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD> */
ADS1278_Reset();
SYNC_Flag = 1;
}
else{
/* <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
ADS1278_Read_Data();
}
}
}