Browse Source

update

master
zhaohe 2 years ago
parent
commit
f0ce0a9ff5
  1. 4
      .vscode/c_cpp_properties.json
  2. 3
      app/Core/Inc/spi.h
  3. 8
      app/Core/Src/gpio.c
  4. 1
      app/Core/Src/main.c
  5. 84
      app/Core/Src/spi.c
  6. 2
      app/MDK-ARM/app.uvprojx
  7. 56
      app/app.ioc
  8. 2
      dep/libiflytop_micro
  9. 55
      src/umain.cpp

4
.vscode/c_cpp_properties.json

@ -56,9 +56,9 @@
"__current_pc()=0U",
"__current_sp()=0U",
"__disable_fiq()=",
"__disable_irq()=",
// "__disable_irq()=",
"__enable_fiq()=",
"__enable_irq()=",
// "__enable_irq()=",
"__force_stores()=",
"__memory_changed()=",
"__schedule_barrier()=",

3
app/Core/Inc/spi.h

@ -34,11 +34,14 @@ extern "C" {
extern SPI_HandleTypeDef hspi1;
extern SPI_HandleTypeDef hspi2;
/* USER CODE BEGIN Private defines */
/* USER CODE END Private defines */
void MX_SPI1_Init(void);
void MX_SPI2_Init(void);
/* USER CODE BEGIN Prototypes */

8
app/Core/Src/gpio.c

@ -70,11 +70,11 @@ void MX_GPIO_Init(void)
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/*Configure GPIO pins : PB0 PB1 PB2 PB12
PB13 PB14 PB15 PB3
PB4 PB5 PB8 PB9 */
PB3 PB4 PB5 PB8
PB9 */
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_12
|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_3
|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_8|GPIO_PIN_9;
|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_8
|GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

1
app/Core/Src/main.c

@ -96,6 +96,7 @@ int main(void)
MX_SPI1_Init();
MX_USART1_UART_Init();
MX_USART3_UART_Init();
MX_SPI2_Init();
/* USER CODE BEGIN 2 */
umain(0, NULL);

84
app/Core/Src/spi.c

@ -25,6 +25,7 @@
/* USER CODE END 0 */
SPI_HandleTypeDef hspi1;
SPI_HandleTypeDef hspi2;
/* SPI1 init function */
void MX_SPI1_Init(void)
@ -41,8 +42,8 @@ void MX_SPI1_Init(void)
hspi1.Init.Mode = SPI_MODE_MASTER;
hspi1.Init.Direction = SPI_DIRECTION_2LINES;
hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH;
hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;
hspi1.Init.NSS = SPI_NSS_SOFT;
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_64;
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
@ -58,6 +59,38 @@ void MX_SPI1_Init(void)
/* USER CODE END SPI1_Init 2 */
}
/* SPI2 init function */
void MX_SPI2_Init(void)
{
/* USER CODE BEGIN SPI2_Init 0 */
/* USER CODE END SPI2_Init 0 */
/* USER CODE BEGIN SPI2_Init 1 */
/* USER CODE END SPI2_Init 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_HIGH;
hspi2.Init.CLKPhase = SPI_PHASE_2EDGE;
hspi2.Init.NSS = SPI_NSS_SOFT;
hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_32;
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();
}
/* USER CODE BEGIN SPI2_Init 2 */
/* USER CODE END SPI2_Init 2 */
}
void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
{
@ -91,6 +124,34 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
/* USER CODE END SPI1_MspInit 1 */
}
else if(spiHandle->Instance==SPI2)
{
/* USER CODE BEGIN SPI2_MspInit 0 */
/* USER CODE END SPI2_MspInit 0 */
/* SPI2 clock enable */
__HAL_RCC_SPI2_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
/**SPI2 GPIO Configuration
PB13 ------> SPI2_SCK
PB14 ------> SPI2_MISO
PB15 ------> SPI2_MOSI
*/
GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_15;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_14;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/* USER CODE BEGIN SPI2_MspInit 1 */
/* USER CODE END SPI2_MspInit 1 */
}
}
void HAL_SPI_MspDeInit(SPI_HandleTypeDef* spiHandle)
@ -115,6 +176,25 @@ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* spiHandle)
/* USER CODE END SPI1_MspDeInit 1 */
}
else if(spiHandle->Instance==SPI2)
{
/* USER CODE BEGIN SPI2_MspDeInit 0 */
/* USER CODE END SPI2_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_SPI2_CLK_DISABLE();
/**SPI2 GPIO Configuration
PB13 ------> SPI2_SCK
PB14 ------> SPI2_MISO
PB15 ------> SPI2_MOSI
*/
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15);
/* USER CODE BEGIN SPI2_MspDeInit 1 */
/* USER CODE END SPI2_MspDeInit 1 */
}
}
/* USER CODE BEGIN 1 */

2
app/MDK-ARM/app.uvprojx

@ -314,7 +314,7 @@
</ArmAdsMisc>
<Cads>
<interw>1</interw>
<Optim>2</Optim>
<Optim>1</Optim>
<oTime>0</oTime>
<SplitLS>0</SplitLS>
<OneElfS>1</OneElfS>

56
app/app.ioc

@ -23,34 +23,38 @@ Mcu.CPN=STM32F103C8T6
Mcu.Family=STM32F1
Mcu.IP0=CAN
Mcu.IP1=IWDG
Mcu.IP10=USART3
Mcu.IP2=NVIC
Mcu.IP3=RCC
Mcu.IP4=SPI1
Mcu.IP5=SYS
Mcu.IP6=TIM4
Mcu.IP7=USART1
Mcu.IP8=USART2
Mcu.IP9=USART3
Mcu.IPNb=10
Mcu.IP5=SPI2
Mcu.IP6=SYS
Mcu.IP7=TIM4
Mcu.IP8=USART1
Mcu.IP9=USART2
Mcu.IPNb=11
Mcu.Name=STM32F103C(8-B)Tx
Mcu.Package=LQFP48
Mcu.Pin0=PA2
Mcu.Pin1=PA3
Mcu.Pin10=PA14
Mcu.Pin11=PB6
Mcu.Pin12=PB7
Mcu.Pin13=VP_IWDG_VS_IWDG
Mcu.Pin14=VP_SYS_VS_Systick
Mcu.Pin15=VP_TIM4_VS_ClockSourceINT
Mcu.Pin10=PA11
Mcu.Pin11=PA12
Mcu.Pin12=PA13
Mcu.Pin13=PA14
Mcu.Pin14=PB6
Mcu.Pin15=PB7
Mcu.Pin16=VP_IWDG_VS_IWDG
Mcu.Pin17=VP_SYS_VS_Systick
Mcu.Pin18=VP_TIM4_VS_ClockSourceINT
Mcu.Pin2=PA5
Mcu.Pin3=PA6
Mcu.Pin4=PA7
Mcu.Pin5=PB10
Mcu.Pin6=PB11
Mcu.Pin7=PA11
Mcu.Pin8=PA12
Mcu.Pin9=PA13
Mcu.PinsNb=16
Mcu.Pin7=PB13
Mcu.Pin8=PB14
Mcu.Pin9=PB15
Mcu.PinsNb=19
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32F103C8Tx
@ -93,6 +97,12 @@ PB10.Mode=Asynchronous
PB10.Signal=USART3_TX
PB11.Mode=Asynchronous
PB11.Signal=USART3_RX
PB13.Mode=Full_Duplex_Master
PB13.Signal=SPI2_SCK
PB14.Mode=Full_Duplex_Master
PB14.Signal=SPI2_MISO
PB15.Mode=Full_Duplex_Master
PB15.Signal=SPI2_MOSI
PB6.Locked=true
PB6.Mode=Asynchronous
PB6.Signal=USART1_TX
@ -127,7 +137,7 @@ ProjectManager.StackSize=0x400
ProjectManager.TargetToolchain=MDK-ARM V5.32
ProjectManager.ToolChainLocation=
ProjectManager.UnderRoot=false
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_IWDG_Init-IWDG-false-HAL-true,4-MX_USART2_UART_Init-USART2-false-HAL-true,5-MX_TIM4_Init-TIM4-false-HAL-true,6-MX_CAN_Init-CAN-false-HAL-true,7-MX_SPI1_Init-SPI1-false-HAL-true
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_IWDG_Init-IWDG-false-HAL-true,4-MX_USART2_UART_Init-USART2-false-HAL-true,5-MX_TIM4_Init-TIM4-false-HAL-true,6-MX_CAN_Init-CAN-false-HAL-true,7-MX_SPI1_Init-SPI1-false-HAL-true,8-MX_USART1_UART_Init-USART1-false-HAL-true,9-MX_USART3_UART_Init-USART3-false-HAL-true
RCC.ADCFreqValue=32000000
RCC.AHBFreq_Value=64000000
RCC.APB1CLKDivider=RCC_HCLK_DIV2
@ -148,11 +158,21 @@ RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
RCC.TimSysFreq_Value=64000000
RCC.USBFreq_Value=64000000
SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_64
SPI1.CLKPhase=SPI_PHASE_2EDGE
SPI1.CLKPolarity=SPI_POLARITY_HIGH
SPI1.CalculateBaudRate=1000.0 KBits/s
SPI1.Direction=SPI_DIRECTION_2LINES
SPI1.IPParameters=VirtualType,Mode,Direction,BaudRatePrescaler,CalculateBaudRate
SPI1.IPParameters=VirtualType,Mode,Direction,BaudRatePrescaler,CalculateBaudRate,CLKPolarity,CLKPhase
SPI1.Mode=SPI_MODE_MASTER
SPI1.VirtualType=VM_MASTER
SPI2.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_32
SPI2.CLKPhase=SPI_PHASE_2EDGE
SPI2.CLKPolarity=SPI_POLARITY_HIGH
SPI2.CalculateBaudRate=1000.0 KBits/s
SPI2.Direction=SPI_DIRECTION_2LINES
SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler,CLKPolarity,CLKPhase
SPI2.Mode=SPI_MODE_MASTER
SPI2.VirtualType=VM_MASTER
TIM4.IPParameters=Prescaler
TIM4.Prescaler=63
USART1.IPParameters=VirtualMode

2
dep/libiflytop_micro

@ -1 +1 @@
Subproject commit 7ce9d5decd395dba28b6b5b0e46edaa56e324a59
Subproject commit 54dd3712885f7322cf152f2eba87c7381fdcbe47

55
src/umain.cpp

@ -27,24 +27,28 @@ struct ad77681_init_param ADC_default_init_param = {
// .extra = (void*)&spi_eng_init_param,
// },
/* Configuration */
AD77681_FAST, // power_mode
AD77681_MCLK_DIV_8, // mclk_div
AD77681_CONV_CONTINUOUS, // conv_mode
AD77681_POSITIVE_FS, // diag_mux_sel
false, // conv_diag_sel
AD77681_CONV_16BIT, // conv_len
AD77681_CRC, // crc_sel
0, // status_bit
AD77681_VCM_HALF_VCC, /* VCM setup*/
AD77681_AINn_ENABLED, /* AIN- precharge buffer*/
AD77681_AINp_ENABLED, /* AIN+ precharge buffer*/
AD77681_BUFn_ENABLED, /* REF- buffer*/
AD77681_BUFp_ENABLED, /* REF+ buffer*/
AD77681_FIR, /* FIR Filter*/
AD77681_SINC5_FIR_DECx32, /* Decimate by 32*/
0, /* OS ratio of SINC3*/
4096, /* Reference voltage*/
16384, /* MCLK in kHz*/
.power_mode = AD77681_FAST, // power_mode
.mclk_div = AD77681_MCLK_DIV_8, // mclk_div
.conv_mode = AD77681_CONV_CONTINUOUS, // conv_mode
.diag_mux_sel = AD77681_POSITIVE_FS, // diag_mux_sel
.conv_diag_sel = false, // conv_diag_sel
.conv_len = AD77681_CONV_16BIT, // conv_len
.crc_sel = AD77681_CRC, // crc_sel
.status_bit = 0, // status_bit
.VCM_out = AD77681_VCM_HALF_VCC, /* VCM setup*/
.AINn = AD77681_AINn_ENABLED, /* AIN- precharge buffer*/
.AINp = AD77681_AINp_ENABLED, /* AIN+ precharge buffer*/
.REFn = AD77681_BUFn_ENABLED, /* REF- buffer*/
.REFp = AD77681_BUFp_ENABLED, /* REF+ buffer*/
.filter = AD77681_FIR, /* FIR Filter*/
.decimate = AD77681_SINC5_FIR_DECx32, /* Decimate by 32*/
.sinc3_osr = 0, /* OS ratio of SINC3*/
.vref = 4096, /* Reference voltage*/
.mclk = 16384, /* MCLK in kHz*/
// sample_rate
// data_frame_byte
};
void Main::generateScheduleTicket() {
@ -64,7 +68,18 @@ void Main::main(int argc, char const *argv[]) {
m_hardware.output_switch_init();
PB12.initAsOutput(true);
m_ad77681.initialize("ad77681", &m_hardware, &hspi1, &PB12, ADC_default_init_param);
m_ad77681.initialize("ad77681", &m_hardware, &hspi2, &PB12, ADC_default_init_param);
uint8_t adc_data[5];
while (1) {
m_ad77681.spi_read_adc_data(adc_data, AD77681_CONTINUOUS_DATA_READ);
printf("[ADC DATA]: 0x");
for (int i = 0; i < sizeof(adc_data); i++) {
printf("%x", adc_data[i]);
}
printf("\r\n");
HAL_Delay(1000);
// HAL_IWDG_Refresh(&hiwdg);
}
while (true) {
m_hardware.periodicJob();
@ -74,6 +89,6 @@ void Main::main(int argc, char const *argv[]) {
m_hardware.input_sensors_table_dump(0);
}
HAL_IWDG_Refresh(&hiwdg);
// HAL_IWDG_Refresh(&hiwdg);
}
}
Loading…
Cancel
Save