8 HAL ADC Extension Driver

Started by tha, July 07, 2022, 08:05:40 AM

Previous topic - Next topic

tha

8.1.2 ADC_MultiModeTypeDef
ADC_MultiModeTypeDef ถูกกำหนดใน the stm32f1xx_hal_adc_ex.h
Data Fields
•   uint32_t Mode
Field Documentation
•   uint32_t ADC_MultiModeTypeDef::Mode
     กำหนดค่า the ADC เพื่อให้ทำงานใน independent หรือ multi mode. This parameter สามารถเป็นค่าหนึ่งของ
     ADCEx_Common_mode หมายเหตุ: ใน dual mode, การเปลี่ยนของ channel configuration จะสร้าง a restart ที่อาจทำให้
     เกิด a loss of synchronization. ขอแนะนำให้ปิดใช้งาน dual mode ก่อน any configuration change. หมายเหตุ: ในกรณีของ
     simultaneous mode ถูกใช้: the same sampling time จริงๆควรถูกกำหนดค่าสำหรับ the 2 channels ที่จะถูกสุ่มพร้อมกันโดย
     ACD1 and ADC2. หมายเหตุ: ในกรณีของ interleaved mode ถูกใช้: เพื่อหลีกเลี่ยง overlap ระหว่าง conversions, maximum
     sampling time ที่ยอมได้คือ 7 ADC clock cycles สำหรับ fast interleaved mode และ 14 ADC clock cycles สำหรับ slow
     interleaved mode. หมายเหตุ: บาง multimode parameters ถูกคงที่บน STM32F1 และสามารถถูกกำหนดค่าบน STM32
     devices อื่นที่มีหลาย ADC (multimode configuration structure สามารถมีพารามิเตอร์เพิ่มเติมได้). ความเทียบเท่ากันคือ:
     –   Parameter 'DMAAccessMode': บน STM32F1, this parameter ถูกคงที่เป็น 1 DMA channel (one DMA channel
          สำหรับทั้งสอง ADC, DMA of ADC master). บน STM32 devices อื่นที่มีหลาย ADC, นี้จะเทียบเท่ากับ parameter
          'ADC_DMAACCESSMODE_12_10_BITS'.
     –   Parameter 'TwoSamplingDelay': บน STM32F1, this parameter ถูกคงที่เป็น 7 หรือ 14 ADC clock cycles ขึ้นอยู่กับ
          fast หรือ slow interleaved mode ถูกเลือก. บน STM32 devices อื่นที่มีหลาย ADC, นี้จะเทียบเท่ากับ parameter
          'ADC_TWOSAMPLINGDELAY_7CYCLES' (for fast interleaved mode).

tha


tha



tha


               •   ถ้า ADC ต้องถูกปิดใช้งานและถ้า conversion กำลังดำเนินการอยู่บน regular group, function HAL_ADC_Stop ต้องถูก
                    ใช้เพื่อหยุดทั้ง injected and regular groups, และปิดใช้งาน the ADC.
               •   ถ้า injected group mode auto-injection ถูกเปิดใช้งาน, function HAL_ADC_Stop ต้องถูกใช้.
               •   ในกรณีของ auto-injection mode, HAL_ADC_Stop ต้องถูกใช้.

tha


tha


tha


               •   Multimode ถูกเปิดใช้งานหลังจากฟังก์ชั่นนี้. เพื่อปิดใช้งาน multimode (เซ็ตด้วย
                    HAL_ADCEx_MultiModeConfigChannel(), ADC ต้องถูกกำหนดค่าเริ่มต้นใหม่โดยใช้ HAL_ADC_Init() or
                    HAL_ADC_ReInit().
               •   ในกรณีของ DMA ที่กำหนดค่าใน circular mode, function HAL_ADC_Stop_DMA ต้องถูกเรียกหลังจากฟังชั่นนี้ด้วย
                    handle of ADC slave, เพื่อปิดใช้งาน the DMA channel อย่างเหมาะสม.

tha



               •   การอ่าน register JDRx จะเคลียร์ ADC flag JEOC (ADC group injected end of unitary conversion) โดย
                    อัตโนมัติ.
               •   ฟังชั่นนี้จะไม่เคลียร์  ADC flag JEOS (ADC group injected end of sequence conversion) การเกิดของ flag
                    JEOS rising: ถ้า sequencer ประกอบด้วย 1 rank, flag JEOS จะเทียบเท่ากับ flag JEOC. ถ้า sequencer ประกอบ
                    ด้วยหลาย ranks, ในระหว่าง the scan sequence flag JEOC เท่านั้นที่พุ่งขึ้น, ที่ the end of the scan sequence
                    ทั้ง flags JEOC and JEOS จะพุ่งขึ้น. Flag JEOS ต้องไม่ถูกเคลียร์โดยฟังชั่นนี้เนื่องจากมันจะไม่ตรงตามกับ low power
                    features (feature low power auto-wait, ไม่มีให้ใช้งานบนทุก STM32 families).  เพื่อเคลียร์ flag นี้, ใช้
                    function อย่างใดอย่างหนึ่ง: ใน programming model IT: HAL_ADC_IRQHandler(), ใน programming model
                    polling: HAL_ADCEx_InjectedPollForConversion() or __HAL_ADC_CLEAR_FLAG(&hadc,
                    ADC_FLAG_JEOS).