新增DAC161驱动
This commit is contained in:
parent
2fde000d3a
commit
5656a65d40
|
@ -177,7 +177,6 @@ extern "C"
|
||||||
#define HART1_OCD_EXTI_IRQn EXTI1_IRQn
|
#define HART1_OCD_EXTI_IRQn EXTI1_IRQn
|
||||||
#define HART1_RX_Pin GPIO_PIN_2
|
#define HART1_RX_Pin GPIO_PIN_2
|
||||||
#define HART1_RX_GPIO_Port GPIOD
|
#define HART1_RX_GPIO_Port GPIOD
|
||||||
|
|
||||||
#define HART2_OCD_Pin GPIO_PIN_3
|
#define HART2_OCD_Pin GPIO_PIN_3
|
||||||
#define HART2_OCD_GPIO_Port GPIOD
|
#define HART2_OCD_GPIO_Port GPIOD
|
||||||
#define HART2_OCD_EXTI_IRQn EXTI3_IRQn
|
#define HART2_OCD_EXTI_IRQn EXTI3_IRQn
|
||||||
|
@ -189,10 +188,16 @@ extern "C"
|
||||||
#define HART2_RX_GPIO_Port GPIOD
|
#define HART2_RX_GPIO_Port GPIOD
|
||||||
#define HART2_RST_Pin GPIO_PIN_7
|
#define HART2_RST_Pin GPIO_PIN_7
|
||||||
#define HART2_RST_GPIO_Port GPIOD
|
#define HART2_RST_GPIO_Port GPIOD
|
||||||
|
|
||||||
#define DAC1_CS_Pin GPIO_PIN_6
|
#define DAC1_CS_Pin GPIO_PIN_6
|
||||||
#define DAC1_CS_GPIO_Port GPIOB
|
#define DAC1_CS_GPIO_Port GPIOB
|
||||||
#define DAC2_CS_Pin GPIO_PIN_7
|
#define DAC1_SCK_Pin GPIO_PIN_3
|
||||||
#define DAC2_CS_GPIO_Port GPIOB
|
#define DAC1_SCK_GPIO_Port GPIOB
|
||||||
|
#define DAC1_MOSI_Pin GPIO_PIN_5
|
||||||
|
#define DAC1_MOSI_GPIO_Port GPIOB
|
||||||
|
#define DAC1_MISO_Pin GPIO_PIN_4
|
||||||
|
#define DAC1_MISO_GPIO_Port GPIOB
|
||||||
|
|
||||||
#define ADC_CS_Pin GPIO_PIN_0
|
#define ADC_CS_Pin GPIO_PIN_0
|
||||||
#define ADC_CS_GPIO_Port GPIOE
|
#define ADC_CS_GPIO_Port GPIOE
|
||||||
/* PCBA测试盒AD7124同步信号引脚定义 */
|
/* PCBA测试盒AD7124同步信号引脚定义 */
|
||||||
|
|
|
@ -75,6 +75,7 @@ osThreadId ec11_taskHandle;
|
||||||
osThreadId ad7124_test_taskHandle;
|
osThreadId ad7124_test_taskHandle;
|
||||||
osThreadId usart6_test_taskHandle; // 添加USART6测试任务句柄
|
osThreadId usart6_test_taskHandle; // 添加USART6测试任务句柄
|
||||||
osThreadId tca6416_taskHandle; // 添加TCA6416任务句柄
|
osThreadId tca6416_taskHandle; // 添加TCA6416任务句柄
|
||||||
|
osThreadId dac161s997_test_taskHandle; // 添加DAC161S997测试任务句柄
|
||||||
|
|
||||||
// 添加调试变量
|
// 添加调试变量
|
||||||
static volatile uint32_t uart6_dr_raw = 0; // UART数据寄存器的原始值
|
static volatile uint32_t uart6_dr_raw = 0; // UART数据寄存器的原始值
|
||||||
|
@ -143,6 +144,7 @@ extern void tcp_abort(struct tcp_pcb *pcb);
|
||||||
void start_usart6_test_task(void const *argument); // 添加USART6测试任务函数声明
|
void start_usart6_test_task(void const *argument); // 添加USART6测试任务函数声明
|
||||||
void start_tca6416_task(void const *argument); // 添加TCA6416任务函数声明
|
void start_tca6416_task(void const *argument); // 添加TCA6416任务函数声明
|
||||||
void test_tca6416_task(void const *argument); // 添加TCA6416测试任务函数声明
|
void test_tca6416_task(void const *argument); // 添加TCA6416测试任务函数声明
|
||||||
|
void start_dac161s997_test_task(void const *argument); // 添加DAC161S997测试任务函数声明
|
||||||
/* USER CODE END FunctionPrototypes */
|
/* USER CODE END FunctionPrototypes */
|
||||||
|
|
||||||
void start_tcp_task(void const *argument);
|
void start_tcp_task(void const *argument);
|
||||||
|
@ -244,6 +246,10 @@ void MX_FREERTOS_Init(void)
|
||||||
|
|
||||||
osThreadDef(tca6416_task, test_tca6416_task, osPriorityNormal, 0, 128);
|
osThreadDef(tca6416_task, test_tca6416_task, osPriorityNormal, 0, 128);
|
||||||
tca6416_taskHandle = osThreadCreate(osThread(tca6416_task), NULL);
|
tca6416_taskHandle = osThreadCreate(osThread(tca6416_task), NULL);
|
||||||
|
|
||||||
|
/* DAC161S997测试任务 */
|
||||||
|
osThreadDef(dac161s997_test_task, start_dac161s997_test_task, osPriorityNormal, 0, 128);
|
||||||
|
dac161s997_test_taskHandle = osThreadCreate(osThread(dac161s997_test_task), NULL);
|
||||||
/* USER CODE BEGIN RTOS_THREADS */
|
/* USER CODE BEGIN RTOS_THREADS */
|
||||||
/* add threads, ... */
|
/* add threads, ... */
|
||||||
/* USER CODE END RTOS_THREADS */
|
/* USER CODE END RTOS_THREADS */
|
||||||
|
@ -343,29 +349,6 @@ void start_led_toggle_task(void const *argument)
|
||||||
/* USER CODE END start_led_toggle_task */
|
/* USER CODE END start_led_toggle_task */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* USER CODE BEGIN Header_start_dac_task */
|
|
||||||
/**
|
|
||||||
* @brief Function implementing the dac_task thread.
|
|
||||||
* @param argument: Not used
|
|
||||||
* @retval None
|
|
||||||
*/
|
|
||||||
/* USER CODE END Header_start_dac_task */
|
|
||||||
void start_dac_task(void const *argument)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN start_dac_task */
|
|
||||||
dac161s997_init();
|
|
||||||
/* Infinite loop */
|
|
||||||
for (;;)
|
|
||||||
{
|
|
||||||
osThreadSuspend(adc_taskHandle); // 暂停ADC任务,防止DAC采集时产生干????????,因为ADC和DAC采用的是同一路SPI,但是时序不????????
|
|
||||||
dac161s997_output(DAC161S997_1, current_buff[0]);
|
|
||||||
dac161s997_output(DAC161S997_2, current_buff[1]);
|
|
||||||
osThreadResume(adc_taskHandle);
|
|
||||||
vTaskDelay(100);
|
|
||||||
}
|
|
||||||
/* USER CODE END start_dac_task */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Header_start_adc_task */
|
/* USER CODE BEGIN Header_start_adc_task */
|
||||||
/**
|
/**
|
||||||
* @brief ADC任务函数实现
|
* @brief ADC任务函数实现
|
||||||
|
@ -789,3 +772,56 @@ void test_tca6416_task(void const *argument)
|
||||||
}
|
}
|
||||||
/* USER CODE END test_tca6416_task */
|
/* USER CODE END test_tca6416_task */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* USER CODE BEGIN Header_start_dac161s997_test_task */
|
||||||
|
/**
|
||||||
|
* @brief Function implementing the dac161s997_test_task thread.
|
||||||
|
* @param argument: Not used
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
/* USER CODE END Header_start_dac161s997_test_task */
|
||||||
|
void start_dac161s997_test_task(void const *argument)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN start_dac161s997_test_task */
|
||||||
|
float test_current = 4.0f; // 起始电流4mA
|
||||||
|
float current_step = 0.5f; // 每次增加0.5mA
|
||||||
|
uint8_t direction = 1; // 1表示递增,0表示递减
|
||||||
|
|
||||||
|
// 等待系统稳定
|
||||||
|
osDelay(1000);
|
||||||
|
|
||||||
|
// 初始化DAC161S997
|
||||||
|
dac161s997_init();
|
||||||
|
|
||||||
|
/* Infinite loop */
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
// 只输出到DAC1(因为只有一块DAC161S997)
|
||||||
|
dac161s997_output(DAC161S997, test_current);
|
||||||
|
osDelay(200);
|
||||||
|
|
||||||
|
// 更新电流值
|
||||||
|
if (direction == 1)
|
||||||
|
{
|
||||||
|
test_current += current_step;
|
||||||
|
if (test_current >= 20.0f) // 达到20mA时开始递减
|
||||||
|
{
|
||||||
|
test_current = 20.0f;
|
||||||
|
direction = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
test_current -= current_step;
|
||||||
|
if (test_current <= 4.0f) // 达到4mA时开始递增
|
||||||
|
{
|
||||||
|
test_current = 4.0f;
|
||||||
|
direction = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 每个周期延时1秒
|
||||||
|
osDelay(800);
|
||||||
|
}
|
||||||
|
/* USER CODE END start_dac161s997_test_task */
|
||||||
|
}
|
|
@ -10,16 +10,16 @@
|
||||||
* @param reg 要写入的寄存器地址
|
* @param reg 要写入的寄存器地址
|
||||||
* @param data 要写入的数据,16位
|
* @param data 要写入的数据,16位
|
||||||
*/
|
*/
|
||||||
void dac161s997_write_reg(chip_type_e dac_num, uint8_t reg, uint16_t data)
|
void dac161s997_write_reg(uint8_t dac_num, uint8_t reg, uint16_t data)
|
||||||
{
|
{
|
||||||
uint8_t data_buffer[3] = {0, 0, 0};
|
uint8_t data_buffer[3] = {0, 0, 0};
|
||||||
data_buffer[0] = reg;
|
data_buffer[0] = reg;
|
||||||
data_buffer[1] = data >> 8;
|
data_buffer[1] = data >> 8;
|
||||||
data_buffer[2] = data;
|
data_buffer[2] = data;
|
||||||
board_spi_init(dac_num); // 初始化SPI,因为ADC芯片也用SPI1,但是时序不同
|
|
||||||
board_spi_cs_on(dac_num);
|
HAL_GPIO_WritePin(DAC1_CS_GPIO_Port, DAC1_CS_Pin, GPIO_PIN_RESET); // CS拉低
|
||||||
spi_transmit_receive(&hspi1, data_buffer, 3);
|
HAL_SPI_Transmit(&hspi1, data_buffer, 3, 1000);
|
||||||
board_spi_cs_off(dac_num);
|
HAL_GPIO_WritePin(DAC1_CS_GPIO_Port, DAC1_CS_Pin, GPIO_PIN_SET); // CS拉高
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -27,11 +27,19 @@ void dac161s997_write_reg(chip_type_e dac_num, uint8_t reg, uint16_t data)
|
||||||
*/
|
*/
|
||||||
void dac161s997_init(void)
|
void dac161s997_init(void)
|
||||||
{
|
{
|
||||||
dac161s997_write_reg(DAC161S997_1, DAC161S997_ERR_LOW_REG, 0xFFFF);
|
// 初始化CS引脚
|
||||||
dac161s997_write_reg(DAC161S997_1, DAC161S997_ERR_CONFIG_REG, 0x070E);
|
GPIO_InitTypeDef GPIO_InitStruct = {0};
|
||||||
|
__HAL_RCC_GPIOB_CLK_ENABLE();
|
||||||
|
GPIO_InitStruct.Pin = DAC1_CS_Pin;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
|
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
||||||
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
||||||
|
HAL_GPIO_Init(DAC1_CS_GPIO_Port, &GPIO_InitStruct);
|
||||||
|
HAL_GPIO_WritePin(DAC1_CS_GPIO_Port, DAC1_CS_Pin, GPIO_PIN_SET);
|
||||||
|
|
||||||
dac161s997_write_reg(DAC161S997_2, DAC161S997_ERR_LOW_REG, 0xFFFF);
|
// 初始化DAC161S997芯片寄存器
|
||||||
dac161s997_write_reg(DAC161S997_2, DAC161S997_ERR_CONFIG_REG, 0x070E);
|
dac161s997_write_reg(1, DAC161S997_ERR_LOW_REG, 0xFFFF);
|
||||||
|
dac161s997_write_reg(1, DAC161S997_ERR_CONFIG_REG, 0x070E);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -42,15 +50,15 @@ void dac161s997_init(void)
|
||||||
* @param dac_num DAC芯片类型
|
* @param dac_num DAC芯片类型
|
||||||
* @param current 需要设置的电流值,单位:毫安
|
* @param current 需要设置的电流值,单位:毫安
|
||||||
*/
|
*/
|
||||||
void dac161s997_output(chip_type_e dac_num, float current)
|
void dac161s997_output(uint8_t dac_num, float current)
|
||||||
{
|
{
|
||||||
uint32_t dac_code = (uint32_t)((current * 65535.0f) / 24.0f);
|
uint32_t dac_code = (uint32_t)((current * 65535.0f) / 24.0f);
|
||||||
uint8_t data_buffer[3] = {0, 0, 0};
|
uint8_t data_buffer[3] = {0, 0, 0};
|
||||||
data_buffer[0] = DAC161S997_DACCODE_REG;
|
data_buffer[0] = DAC161S997_DACCODE_REG;
|
||||||
data_buffer[1] = dac_code >> 8;
|
data_buffer[1] = dac_code >> 8;
|
||||||
data_buffer[2] = dac_code;
|
data_buffer[2] = dac_code;
|
||||||
board_spi_init(dac_num); // 初始化SPI,因为ADC芯片也用SPI1,但是时序不同
|
|
||||||
board_spi_cs_on(dac_num);
|
HAL_GPIO_WritePin(DAC1_CS_GPIO_Port, DAC1_CS_Pin, GPIO_PIN_RESET); // CS拉低
|
||||||
spi_transmit_receive(&hspi1, data_buffer, 3);
|
HAL_SPI_Transmit(&hspi1, data_buffer, 3, 1000);
|
||||||
board_spi_cs_off(dac_num);
|
HAL_GPIO_WritePin(DAC1_CS_GPIO_Port, DAC1_CS_Pin, GPIO_PIN_SET); // CS拉高
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,4 +25,7 @@ uint16_t dac161s997_read(uint8_t reg);
|
||||||
extern void dac161s997_init(void);
|
extern void dac161s997_init(void);
|
||||||
extern void dac161s997_output(uint8_t dac_num, float current);
|
extern void dac161s997_output(uint8_t dac_num, float current);
|
||||||
|
|
||||||
|
// 定义DAC芯片编号(只有一块DAC161S997)
|
||||||
|
#define DAC161S997 1
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -41,6 +41,7 @@ static uint8_t spi_rx_buffer[SPI_BUFFER_SIZE] = {0};
|
||||||
|
|
||||||
|
|
||||||
// SPI handle declaration
|
// SPI handle declaration
|
||||||
|
extern SPI_HandleTypeDef hspi1; // 在spi.c中定义
|
||||||
SPI_HandleTypeDef hspi2;
|
SPI_HandleTypeDef hspi2;
|
||||||
|
|
||||||
// Define return values
|
// Define return values
|
||||||
|
@ -125,25 +126,51 @@ void ad7124_spi_init(void)
|
||||||
|
|
||||||
void dac161s997_spi_init(void)
|
void dac161s997_spi_init(void)
|
||||||
{
|
{
|
||||||
/* Enable SPI2 clock */
|
GPIO_InitTypeDef GPIO_InitStruct = {0};
|
||||||
__HAL_RCC_SPI2_CLK_ENABLE();
|
|
||||||
|
|
||||||
hspi2.Instance = SPI2;
|
// Enable clocks
|
||||||
hspi2.Init.Mode = SPI_MODE_MASTER;
|
__HAL_RCC_SPI1_CLK_ENABLE();
|
||||||
hspi2.Init.Direction = SPI_DIRECTION_2LINES;
|
__HAL_RCC_GPIOB_CLK_ENABLE();
|
||||||
hspi2.Init.DataSize = SPI_DATASIZE_8BIT;
|
|
||||||
hspi2.Init.CLKPolarity = SPI_POLARITY_LOW;
|
// Configure SPI1 pins for DAC161S997
|
||||||
hspi2.Init.CLKPhase = SPI_PHASE_1EDGE;
|
// SCK (PB3), MISO (PB4), MOSI (PB5)
|
||||||
hspi2.Init.NSS = SPI_NSS_SOFT;
|
GPIO_InitStruct.Pin = DAC1_SCK_Pin | DAC1_MISO_Pin | DAC1_MOSI_Pin;
|
||||||
hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_32;
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||||
hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB;
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||||
hspi2.Init.TIMode = SPI_TIMODE_DISABLE;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
||||||
hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
|
GPIO_InitStruct.Alternate = GPIO_AF5_SPI1; // SPI1 alternate function
|
||||||
hspi2.Init.CRCPolynomial = 10;
|
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
||||||
if (HAL_SPI_Init(&hspi2) != HAL_OK)
|
|
||||||
|
// CS (PB6) - Configure as output
|
||||||
|
GPIO_InitStruct.Pin = DAC1_CS_Pin;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
|
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
||||||
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
||||||
|
HAL_GPIO_Init(DAC1_CS_GPIO_Port, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
// Ensure CS is high initially
|
||||||
|
HAL_GPIO_WritePin(DAC1_CS_GPIO_Port, DAC1_CS_Pin, GPIO_PIN_SET);
|
||||||
|
|
||||||
|
// Configure SPI1 for DAC161S997
|
||||||
|
hspi1.Instance = SPI1;
|
||||||
|
hspi1.Init.Mode = SPI_MODE_MASTER;
|
||||||
|
hspi1.Init.Direction = SPI_DIRECTION_2LINES;
|
||||||
|
hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
|
||||||
|
hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; // CPOL = 0
|
||||||
|
hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; // CPHA = 0
|
||||||
|
hspi1.Init.NSS = SPI_NSS_SOFT;
|
||||||
|
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_32; // 适中的时钟频率
|
||||||
|
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
|
||||||
|
hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
|
||||||
|
hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
|
||||||
|
hspi1.Init.CRCPolynomial = 10;
|
||||||
|
|
||||||
|
if (HAL_SPI_Init(&hspi1) != HAL_OK)
|
||||||
{
|
{
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HAL_Delay(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ad7124_cs_on(void)
|
void ad7124_cs_on(void)
|
||||||
|
@ -164,16 +191,14 @@ void dac161s997_cs_on(chip_type_e dac_num)
|
||||||
{
|
{
|
||||||
switch (dac_num)
|
switch (dac_num)
|
||||||
{
|
{
|
||||||
case DAC161S997_1:
|
case DAC161S997:
|
||||||
HAL_GPIO_WritePin(DAC1_CS_GPIO_Port, DAC1_CS_Pin, GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(DAC1_CS_GPIO_Port, DAC1_CS_Pin, GPIO_PIN_RESET);
|
||||||
HAL_GPIO_WritePin(DAC1_CS_GPIO_Port, DAC2_CS_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(ADC_CS_GPIO_Port, ADC_CS_Pin, GPIO_PIN_SET);
|
|
||||||
break;
|
break;
|
||||||
case DAC161S997_2:
|
case DAC8568:
|
||||||
HAL_GPIO_WritePin(DAC1_CS_GPIO_Port, DAC2_CS_Pin, GPIO_PIN_RESET);
|
//HAL_GPIO_WritePin(DAC1_CS_GPIO_Port, DAC1_CS_Pin, GPIO_PIN_RESET);
|
||||||
HAL_GPIO_WritePin(DAC1_CS_GPIO_Port, DAC1_CS_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(ADC_CS_GPIO_Port, ADC_CS_Pin, GPIO_PIN_SET);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -182,16 +207,10 @@ void dac161s997_cs_off(uint8_t dac_num)
|
||||||
{
|
{
|
||||||
switch (dac_num)
|
switch (dac_num)
|
||||||
{
|
{
|
||||||
case DAC161S997_1:
|
case DAC161S997:
|
||||||
HAL_GPIO_WritePin(DAC1_CS_GPIO_Port, DAC1_CS_Pin, GPIO_PIN_SET);
|
HAL_GPIO_WritePin(DAC1_CS_GPIO_Port, DAC1_CS_Pin, GPIO_PIN_SET);
|
||||||
HAL_GPIO_WritePin(DAC1_CS_GPIO_Port, DAC2_CS_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(ADC_CS_GPIO_Port, ADC_CS_Pin, GPIO_PIN_SET);
|
|
||||||
break;
|
|
||||||
case DAC161S997_2:
|
|
||||||
HAL_GPIO_WritePin(DAC1_CS_GPIO_Port, DAC1_CS_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(DAC1_CS_GPIO_Port, DAC2_CS_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(ADC_CS_GPIO_Port, ADC_CS_Pin, GPIO_PIN_SET);
|
|
||||||
break;
|
break;
|
||||||
|
case DAC8568:
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -202,8 +221,7 @@ void board_spi_init(chip_type_e chip_type)
|
||||||
case AD7124:
|
case AD7124:
|
||||||
ad7124_spi_init();
|
ad7124_spi_init();
|
||||||
break;
|
break;
|
||||||
case DAC161S997_1:
|
case DAC161S997:
|
||||||
case DAC161S997_2:
|
|
||||||
dac161s997_spi_init();
|
dac161s997_spi_init();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -218,11 +236,8 @@ void board_spi_cs_on(chip_type_e chip_type)
|
||||||
HAL_GPIO_WritePin(SPI2_CS_GPIO_Port, SPI2_CS_Pin, GPIO_PIN_RESET); // AD7124_CS1打开
|
HAL_GPIO_WritePin(SPI2_CS_GPIO_Port, SPI2_CS_Pin, GPIO_PIN_RESET); // AD7124_CS1打开
|
||||||
HAL_Delay(1);
|
HAL_Delay(1);
|
||||||
break;
|
break;
|
||||||
case DAC161S997_1:
|
case DAC161S997:
|
||||||
dac161s997_cs_on(DAC161S997_1);
|
dac161s997_cs_on(DAC161S997);
|
||||||
break;
|
|
||||||
case DAC161S997_2:
|
|
||||||
dac161s997_cs_on(DAC161S997_2);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -236,11 +251,8 @@ void board_spi_cs_off(chip_type_e chip_type)
|
||||||
HAL_GPIO_WritePin(SPI2_CS_GPIO_Port, SPI2_CS_Pin, GPIO_PIN_SET); // AD7124_CS1关闭
|
HAL_GPIO_WritePin(SPI2_CS_GPIO_Port, SPI2_CS_Pin, GPIO_PIN_SET); // AD7124_CS1关闭
|
||||||
HAL_Delay(1);
|
HAL_Delay(1);
|
||||||
break;
|
break;
|
||||||
case DAC161S997_1:
|
case DAC161S997:
|
||||||
dac161s997_cs_off(DAC161S997_1);
|
dac161s997_cs_off(DAC161S997);
|
||||||
break;
|
|
||||||
case DAC161S997_2:
|
|
||||||
dac161s997_cs_off(DAC161S997_2);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -8,11 +8,12 @@
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
AD7124 = 0,
|
AD7124 = 0,
|
||||||
DAC161S997_1 = 1,
|
DAC161S997 = 1,
|
||||||
DAC161S997_2 = 2,
|
DAC8568 = 2,
|
||||||
} chip_type_e; // 芯片类型
|
} chip_type_e; // 芯片类型
|
||||||
|
|
||||||
extern int32_t spi_transmit_receive(SPI_HandleTypeDef *hspi, uint8_t *data_write, uint8_t bytes_number);
|
extern int32_t spi_transmit_receive(SPI_HandleTypeDef *hspi, uint8_t *data_write, uint8_t bytes_number);
|
||||||
|
extern SPI_HandleTypeDef hspi1;
|
||||||
extern SPI_HandleTypeDef hspi2;
|
extern SPI_HandleTypeDef hspi2;
|
||||||
extern void board_spi_init(chip_type_e chip_type);
|
extern void board_spi_init(chip_type_e chip_type);
|
||||||
extern void board_spi_cs_on(chip_type_e chip_type);
|
extern void board_spi_cs_on(chip_type_e chip_type);
|
||||||
|
|
Loading…
Reference in New Issue