1
ARM Processors / Re: 7 HAL ADC Generic Driver
« on: July 02, 2022, 09:10:38 am »
Execution of ADC conversions
1. เป็นทางเลือก, ดำเนินการ an automatic ADC calibration เพื่อปรับ the conversion accuracy ให้ดีขึ้นโดยใช้ function
HAL_ADCEx_Calibration_Start().
2. ADC driver สามารถถูกใช้ในหมู่ three modes: polling, interruption, ส่งถ่ายโดย DMA.
– ADC conversion by polling:
◦ เปิดใช้งาน the ADC peripheral และสตาร์ท conversions โดยใช้ function HAL_ADC_Start()
◦ รอสำหรับ ADC conversion completion โดยใช้ function HAL_ADC_PollForConversion() (หรือสำหรับ injected
group: HAL_ADCEx_InjectedPollForConversion() )
◦ ดึง conversion results โดยใช้ function HAL_ADC_GetValue() (หรือสำหรับ injected group:
HAL_ADCEx_InjectedGetValue() )
◦ หยุด conversion และปิดใช้งาน the ADC peripheral โดยใช้ function HAL_ADC_Stop()
– ADC conversion by interruption:
◦ เปิดใช้งาน the ADC peripheral และสตาร์ท conversions โดยใช้ function HAL_ADC_Start_IT()
◦ รอสำหรับ ADC conversion completion โดยการเรียกของ function HAL_ADC_ConvCpltCallback() (ฟังชั่นนี้ต้องถูก
จัดให้มีใช้ใน user program) (หรือสำหรับ injected group: HAL_ADCEx_InjectedConvCpltCallback() )
◦ ดึง conversion results โดยใช้ function HAL_ADC_GetValue() (หรือสำหรับ injected group:
HAL_ADCEx_InjectedGetValue() )
◦ หยุด conversion และปิดใช้งาน the ADC peripheral โดยใช้ function HAL_ADC_Stop_IT()
– ADC conversion with transfer by DMA:
◦ เปิดใช้งาน the ADC peripheral และสตาร์ท conversions โดยใช้ function HAL_ADC_Start_DMA()
◦ รอสำหรับ ADC conversion completion โดยการเรียกของ function HAL_ADC_ConvCpltCallback() หรือ
HAL_ADC_ConvHalfCpltCallback() (ฟังชั่นเหล่านี้ต้องถูกจัดให้มีใช้ใน user program)
◦ Conversion results ถูกส่งถ่ายโดยอัตโนมัติโดย DMA ลงใน destination variable address.
◦ หยุด conversion และปิดใช้งาน the ADC peripheral โดยใช้ function HAL_ADC_Stop_DMA()
– สำหรับ devices ที่มีหลาย ADCs: ADC multimode conversion ด้วยการส่งถ่ายโดย DMA:
◦ เปิดใช้งาน the ADC peripheral (slave) และสตาร์ท conversions โดยใช้ function HAL_ADC_Start()
◦ เปิดใช้งาน the ADC peripheral (master) และสตาร์ท conversions โดยใช้ function
HAL_ADCEx_MultiModeStart_DMA()
◦ รอสำหรับ ADC conversion completion โดยการเรียกของ function HAL_ADC_ConvCpltCallback() หรือ
HAL_ADC_ConvHalfCpltCallback() (ฟังชั่นเหล่านี้ต้องถูกจัดให้มีใช้ใน user program)
◦ Conversion results ถูกส่งถ่ายโดยอัตโนมัติโดย DMA ลงใน destination variable address.
◦ หยุด conversion และปิดใช้งาน the ADC peripheral (master) โดยใช้ function
HAL_ADCEx_MultiModeStop_DMA()
◦ หยุด conversion และปิดใช้งาน the ADC peripheral (slave) โดยใช้ function HAL_ADC_Stop_IT()
Note: Callback functions ต้องถูกจัดให้มีใช้ใน user program:
• HAL_ADC_ErrorCallback()
• HAL_ADC_LevelOutOfWindowCallback() (callback of analog watchdog)
• HAL_ADC_ConvCpltCallback()
• HAL_ADC_ConvHalfCpltCallback
• HAL_ADCEx_InjectedConvCpltCallback()
1. เป็นทางเลือก, ดำเนินการ an automatic ADC calibration เพื่อปรับ the conversion accuracy ให้ดีขึ้นโดยใช้ function
HAL_ADCEx_Calibration_Start().
2. ADC driver สามารถถูกใช้ในหมู่ three modes: polling, interruption, ส่งถ่ายโดย DMA.
– ADC conversion by polling:
◦ เปิดใช้งาน the ADC peripheral และสตาร์ท conversions โดยใช้ function HAL_ADC_Start()
◦ รอสำหรับ ADC conversion completion โดยใช้ function HAL_ADC_PollForConversion() (หรือสำหรับ injected
group: HAL_ADCEx_InjectedPollForConversion() )
◦ ดึง conversion results โดยใช้ function HAL_ADC_GetValue() (หรือสำหรับ injected group:
HAL_ADCEx_InjectedGetValue() )
◦ หยุด conversion และปิดใช้งาน the ADC peripheral โดยใช้ function HAL_ADC_Stop()
– ADC conversion by interruption:
◦ เปิดใช้งาน the ADC peripheral และสตาร์ท conversions โดยใช้ function HAL_ADC_Start_IT()
◦ รอสำหรับ ADC conversion completion โดยการเรียกของ function HAL_ADC_ConvCpltCallback() (ฟังชั่นนี้ต้องถูก
จัดให้มีใช้ใน user program) (หรือสำหรับ injected group: HAL_ADCEx_InjectedConvCpltCallback() )
◦ ดึง conversion results โดยใช้ function HAL_ADC_GetValue() (หรือสำหรับ injected group:
HAL_ADCEx_InjectedGetValue() )
◦ หยุด conversion และปิดใช้งาน the ADC peripheral โดยใช้ function HAL_ADC_Stop_IT()
– ADC conversion with transfer by DMA:
◦ เปิดใช้งาน the ADC peripheral และสตาร์ท conversions โดยใช้ function HAL_ADC_Start_DMA()
◦ รอสำหรับ ADC conversion completion โดยการเรียกของ function HAL_ADC_ConvCpltCallback() หรือ
HAL_ADC_ConvHalfCpltCallback() (ฟังชั่นเหล่านี้ต้องถูกจัดให้มีใช้ใน user program)
◦ Conversion results ถูกส่งถ่ายโดยอัตโนมัติโดย DMA ลงใน destination variable address.
◦ หยุด conversion และปิดใช้งาน the ADC peripheral โดยใช้ function HAL_ADC_Stop_DMA()
– สำหรับ devices ที่มีหลาย ADCs: ADC multimode conversion ด้วยการส่งถ่ายโดย DMA:
◦ เปิดใช้งาน the ADC peripheral (slave) และสตาร์ท conversions โดยใช้ function HAL_ADC_Start()
◦ เปิดใช้งาน the ADC peripheral (master) และสตาร์ท conversions โดยใช้ function
HAL_ADCEx_MultiModeStart_DMA()
◦ รอสำหรับ ADC conversion completion โดยการเรียกของ function HAL_ADC_ConvCpltCallback() หรือ
HAL_ADC_ConvHalfCpltCallback() (ฟังชั่นเหล่านี้ต้องถูกจัดให้มีใช้ใน user program)
◦ Conversion results ถูกส่งถ่ายโดยอัตโนมัติโดย DMA ลงใน destination variable address.
◦ หยุด conversion และปิดใช้งาน the ADC peripheral (master) โดยใช้ function
HAL_ADCEx_MultiModeStop_DMA()
◦ หยุด conversion และปิดใช้งาน the ADC peripheral (slave) โดยใช้ function HAL_ADC_Stop_IT()
Note: Callback functions ต้องถูกจัดให้มีใช้ใน user program:
• HAL_ADC_ErrorCallback()
• HAL_ADC_LevelOutOfWindowCallback() (callback of analog watchdog)
• HAL_ADC_ConvCpltCallback()
• HAL_ADC_ConvHalfCpltCallback
• HAL_ADCEx_InjectedConvCpltCallback()