Electoday 4.0

ไมโครคอนโทรลเลอร์ => ARM Processors => Topic started by: tha on July 07, 2022, 08:05:40 am

Title: 8 HAL ADC Extension Driver
Post by: tha on July 07, 2022, 08:05:40 am
(https://i.imgur.com/2HnpDM0.png)
Title: Re: 8 HAL ADC Extension Driver
Post by: tha on July 07, 2022, 08:18:50 am
Field Documentation
•   uint32_t ADC_InjectionConfTypeDef::InjectedChannel
     การเลือกของ ADC channel เพื่อกำหนดค่า. parameter นี้สามารถเป็นค่าหนึ่งของ ADC_channels หมายเหตุ: ขึ้นอยู่กับ devices,
     บาง channels อาจไม่มีให้ใช้งานบน package pins. ดูที่ device datasheet สำหรับ channels ที่มีให้ใช้งาน. หมายเหตุ: บน
     STM32F1 devices ที่มีหลาย ADC: เฉพาะ ADC1 สามารถเข้าถึง internal measurement channels (VrefInt/TempSensor)
     หมายเหตุ: บน STM32F10xx8 and STM32F10xxB devices: A low-amplitude voltage glitch อาจถูกสร้าง (บน ADC
     input 0) บน the PA0 pin, เมื่อ the ADC กำลังแปลงด้วย injection trigger. ขอแนะนำให้กระจาย the analog channels เพื่อให้
     Channel 0 ถูกกำหนดค่าเป็น an injected channel. ดูที่ errata sheet ของ devices เหล่านี้สำหรับรายละเอียดเพิ่มเติม.

•   uint32_t ADC_InjectionConfTypeDef::InjectedRank
    Rank ใน the injected group sequencer. parameter นี้สามารถเป็นค่าหนึ่งของ ADC_regular_rank หมายเหตุ: ในกรณีจำเป็น
    ต้องปิดใช้งาน a channel หรือเปลี่ยนลำดับของ conversion sequencer, rank ที่บรรจุ a previous channel setting สามารถถูก
    เขียนทับโดย the new channel setting (หรือ parameter number ของ conversions สามารถถูกปรับ)
Title: Re: 8 HAL ADC Extension Driver
Post by: tha on July 07, 2022, 08:26:34 am
•   uint32_t ADC_InjectionConfTypeDef::InjectedSamplingTime
     Sampling time value ที่ถูกเซ็ตสำหรับ the selected channel. Unit: ADC clock cycles Conversion time เป็นการบวกกันของ
     sampling time และ processing time (12.5 ADC clock cycles ที่ ADC resolution 12 bits). parameter นี้สามารถเป็นค่าหนึ่ง
     ของ ADC_sampling_times ข้อควรระวัง: parameter นี้อัฟเดต the parameter property ของ the channel, ที่สามารถถูกใช้ใน
     regular และ/หรือ injected groups. ถ้า channel เดียวกันนี้ถูกกำหนดค่าไว้ล่วงหน้าในกลุ่มอื่นแล้ว (regular/injected), มันจะ         
     ถูกอัฟเดตเป็น last setting. หมายเหตุ: ในกรณีของการใช้ของ internal measurement channels (VrefInt/TempSensor),
     sampling time constraints ต้องถูกเคารพ (sampling time สามารถถูกปรับใน function of ADC clock frequency และ
     sampling time setting) ดูที่ device datasheet สำหรับ timings values, parameters TS_vrefint, TS_temp (ค่าลำดับ
     คร่าวๆ: 5us ถึง 17.1us ขั้นต่ำ).
Title: Re: 8 HAL ADC Extension Driver
Post by: tha on July 07, 2022, 08:47:17 am
•   uint32_t ADC_InjectionConfTypeDef::InjectedOffset
     กำหนด the offset ที่จะถูกลบออกจากข้อมูลดิบที่แปลงแล้ว (สำหรับ channels ที่เซ็ตบน injected group เท่านั้น). Offset value ต้อง
     เป็น a positive number. ขึ้นอยู่กับ ADC resolution ที่เลือก (12, 10, 8 or 6 bits), parameter นี้ต้องเป็น a number ระหว่าง
     Min_Data = 0x000 และ Max_Data = 0xFFF, 0x3FF, 0xFF or 0x3F ตามลำดับ.
Title: Re: 8 HAL ADC Extension Driver
Post by: tha on July 07, 2022, 09:10:37 am
•   uint32_t ADC_InjectionConfTypeDef::InjectedNbrOfConversion
     ระบุ the number of ranks ที่จะถูกแปลงภายใน the injected group sequencer. เพื่อใช้ the injected group sequencer และ
     แปลงหลาย ranks, parameter 'ScanConvMode' ต้องถูกเปิดใช้งาน. parameter นี้ต้องเป็นจำนนระหว่าง Min_Data = 1 and
     Max_Data = 4. ข้อควรระวัง: การเซ็ตนี้ส่งผลต่อ the entire injected group. ดังนั้น, การเรียก
     HAL_ADCEx_InjectedConfigChannel() เพื่อกำหนดค่า a channel บน injected group สามารถส่งผลต่อ the configuration
     ของ channels อื่นที่เซ็ตไว้ก่อนหน้า.
Title: Re: 8 HAL ADC Extension Driver
Post by: tha on July 08, 2022, 02:37:18 pm
•   FunctionalState ADC_InjectionConfTypeDef::InjectedDiscontinuousConvMode
     ระบุว่า the conversions sequence of injected group ถูกดำเนินการใน Complete-sequence/Discontinuous-sequence
     (main sequence ถูกแบ่งย่อยเป็นส่วนที่ต่อเนื่องหลายส่วน). Discontinuous mode ถูกใช้เฉพาะถ้า sequencer ถูกเปิดใช้งาน
     (parameter 'ScanConvMode'). ถ้า sequencer ถูกปิดใช้งาน, parameter นี้จะถูกทิ้ง. Discontinuous mode สามารถถูกเปิดใช้
     งานเฉพาะถ้า continuous mode ถูกปิดใช้งาน. ถ้า continuous mode ถูกเปิดใช้งาน, parameter setting นี้จะถูกทิ้ง. parameter
     นี้สามารถถูกเซ็ตเป็น ENABLE หรือ DISABLE. หมายเหตุ: สำหรับ injected group, number of discontinuous ranks increment
     ถูกคงที่เป็นรายตัว. ข้อควรระวัง: การเซ็ตนี้ส่งผลต่อ the entire injected group. ดังนั้นการเรียก
     HAL_ADCEx_InjectedConfigChannel() เพื่อกำหนดค่า a channel บน injected group สามารถส่งผลต่อ the
     configuration ของ channels อื่นที่เซ็ตไว้ก่อนหน้า.
Title: Re: 8 HAL ADC Extension Driver
Post by: tha on July 08, 2022, 03:02:00 pm
•   FunctionalState ADC_InjectionConfTypeDef::AutoInjectedConv
     เปิดใช้งานหรือปิดใช้งาน the selected ADC automatic injected group conversion หลังจาก regular one. parameter นี้
     สามารถถูกเซ็ตเป็น ENABLE หรือ DISABLE. หมายเหตุ: เพื่อใช้ Automatic injected conversion, discontinuous mode ต้อง
     ถูกปิดใช้งาน ('DiscontinuousConvMode' and 'InjectedDiscontinuousConvMode' ถูกเซ็ตเป็น DISABLE) หมายเหตุ: เพื่อใช้
     Automatic injected conversion, injected group external triggers ต้องถูกปิดใช้งาน ('ExternalTrigInjecConv' ถูกเซ็ต
     เป็น ADC_SOFTWARE_START) หมายเหตุ: ในกรณีของ DMA ที่ใช้กับ regular group: ถ้า DMA ที่กำหนดค่าเป็น normal
     mode (single shot) JAUTO จะถูกหยุดขึ้นอยู่กับ DMA transfer complete. เพื่อรักษาให้ JAUTO ถูกเปิดใช้งานเสมอ, DMA ต้อง
     ถูกกำหนดค่าเป็น circular mode.  ข้อควรระวัง: การเซ็ตนี้ส่งผลต่อ the entire injected group. ดังนั้นการเรียก
     HAL_ADCEx_InjectedConfigChannel() เพื่อกำหนดค่า a channel บน injected group สามารถส่งผลต่อ the
     configuration ของ channels อื่นที่เซ็ตไว้ก่อนหน้า.
Title: Re: 8 HAL ADC Extension Driver
Post by: tha on July 09, 2022, 07:13:19 am
•   uint32_t ADC_InjectionConfTypeDef::ExternalTrigInjecConv
     เลือก the external event ที่ใช้เพื่อทริก the conversion start of injected group. ถ้าเซ็ตเป็น
     ADC_INJECTED_SOFTWARE_START, external triggers ถูกปิดใช้งาน. ถ้าเซ็ตเป็น external trigger source, triggering จะ
     อยู่บน event rising edge. parameter สามารถเป็นค่าหนึ่งของ ADCEx_External_trigger_source_Injected หมายเหตุ:
     parameter นี้ต้องถูกแก้ไขเมื่อ ADC ถูกปิดใช้งา (ก่อน ADC start conversion หรือหลัง ADC stop conversion). ถ้า ADC ถูกเปิด
     ใช้งาน, parameter setting นี้จะถูกข้ามผ่านโดยไม่มีการรายงานข้อผิดพลาด (เนื่องจากอาจเป็นพฤติกรรมที่คาดหวังในกรณีที่มีการอัปเดต
     พารามิเตอร์อื่นในทันที) ข้อควรระวัง: การเซ็ตนี้ส่งผลต่อ the entire injected group. ดังนั้นการเรียก
     HAL_ADCEx_InjectedConfigChannel() เพื่อกำหนดค่า a channel บน injected group สามารถส่งผลต่อ the
     configuration ของ channels อื่นที่เซ็ตไว้ก่อนหน้า.
Title: Re: 8 HAL ADC Extension Driver
Post by: tha on July 09, 2022, 08:34:59 am
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).
Title: Re: 8 HAL ADC Extension Driver
Post by: tha on July 09, 2022, 09:13:37 am
(https://i.imgur.com/ulH1eTK.png)
(https://i.imgur.com/6IkG03f.png)
Title: Re: 8 HAL ADC Extension Driver
Post by: tha on July 09, 2022, 09:30:30 am
(https://i.imgur.com/XG0F2nO.png)
Title: Re: 8 HAL ADC Extension Driver
Post by: tha on July 09, 2022, 09:39:05 am
(https://i.imgur.com/8qciQZ1.png)
               •   ถ้า 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 ต้องถูกใช้.
Title: Re: 8 HAL ADC Extension Driver
Post by: tha on July 09, 2022, 09:45:10 am
(https://i.imgur.com/GuOOiQP.png)
Title: Re: 8 HAL ADC Extension Driver
Post by: tha on July 09, 2022, 09:46:19 am
(https://i.imgur.com/f6SuZE4.png)
(https://i.imgur.com/PeZJ00L.png)
Title: Re: 8 HAL ADC Extension Driver
Post by: tha on July 09, 2022, 10:42:11 am
(https://i.imgur.com/u9C7X9O.png)
               •   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 อย่างเหมาะสม.
Title: Re: 8 HAL ADC Extension Driver
Post by: tha on July 09, 2022, 11:20:48 am
(https://i.imgur.com/5BgyBAq.png)
(https://i.imgur.com/dLsGt4w.png)
               •   การอ่าน 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).
Title: Re: 8 HAL ADC Extension Driver
Post by: tha on July 09, 2022, 11:55:16 am
(https://i.imgur.com/a8NysMk.png)
Title: Re: 8 HAL ADC Extension Driver
Post by: tha on July 09, 2022, 11:56:00 am
(https://i.imgur.com/3Yr0PKj.png)
Title: Re: 8 HAL ADC Extension Driver
Post by: tha on July 09, 2022, 12:06:26 pm
(https://i.imgur.com/PcLFPiV.png)
                 •   ความสามารถในการอัปเดตพารามิเตอร์ได้ทันที: function นี้กำหนดค่าเริ่มต้น injected group, การตามติดการเรียกถึงฟังชั่น
                      นี้สามารถถูกใช้เพื่อกำหนดค่าใหม่บาง parameters of structure "ADC_InjectionConfTypeDef" ได้ทันที, โดยไม่มี
                      การรีเซ็ต the ADC. The setting ของ parameters เหล่านี้ถูกปรับสภาพเป็น ADC state. : ฟังชั่นนี้ต้องถูกเรียกเมื่อ
                      ADC ไม่ได้อยู่ภายใต้การแปลง.
Title: Re: 8 HAL ADC Extension Driver
Post by: tha on July 09, 2022, 12:21:21 pm
(https://i.imgur.com/kYCRStg.png)
               •   ความสามารถในการอัปเดตพารามิเตอร์ได้ทันที: function นี้กำหนดค่าเริ่มต้น multimode parameters, การตามติดการเรียก
                    ถึงฟังชั่นนี้สามารถถูกใช้เพื่อกำหนดค่าใหม่บาง parameters of structure "ADC_MultiModeTypeDef" ได้ทันที, โดยไม่มี
                    การรีเซ็ต the ADCs (ทั้งสอง ADCs of the common group). The setting ของ parameters เหล่านี้ถูกปรับสภาพเป็น
                    ADC state. สำหรับ parameters constraints, ดู comments of structure "ADC_MultiModeTypeDef".
               •   เพื่อเปลี่ยนกลับ configuration จาก multimode ไปเป็น single mode, ADC ต้องถูกรีเซ็ต (โดยใช้ function
                    HAL_ADC_Init() ).
Title: Re: 8 HAL ADC Extension Driver
Post by: tha on July 09, 2022, 12:33:39 pm
(https://i.imgur.com/reTGqoL.png)
(https://i.imgur.com/B08n5TN.png)
(https://i.imgur.com/U2y0Zeu.png)
(https://i.imgur.com/zNOSk6o.png)
(https://i.imgur.com/mj63mKu.png)