Electoday 4.0

ไมโครคอนโทรลเลอร์ => ARM Processors => Topic started by: tha on September 01, 2022, 06:48:47 am

Title: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 01, 2022, 06:48:47 am
https://www.st.com/resource/en/reference_manual/dm00124865-stm32f75xxx-and-stm32f74xxx-advanced-arm-based-32-bit-mcus-stmicroelectronics.pdf (https://www.st.com/resource/en/reference_manual/dm00124865-stm32f75xxx-and-stm32f74xxx-advanced-arm-based-32-bit-mcus-stmicroelectronics.pdf)

15 Analog-to-digital converter (ADC)

15.1 ADC introduction

The 12-bit ADC เป็น a successive approximation analog-to-digital converter. มันมีสูงถึง 19 multiplexed channels ช่วยให้มันวัด signals จาก 16 external sources, two internal sources, และ the VBAT channel. The A/D conversion of the channels สามารถถูกดำเนินการใน single, continuous, scan or discontinuous mode. The result of the ADC ถูกเก็บลงในชิดซ้ายหรือชิดขวา 16-bit data register.

The analog watchdog feature ช่วยให้ the application ตรวจพบหาก the input voltage เกินกว่าที่ผู้ใช้กำหนด, สูงกว่าหรือต่ำกว่าขอบเขต.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 01, 2022, 09:23:44 am
15.2 ADC main features

•   กำหนดค่าความละเอียดได้ 12-bit, 10-bit, 8-bit or 6-bit
•   การสร้างอินเตอร์รัพท์ที่ the end of conversion, end of injected conversion, และในกรณีของ analog watchdog หรือ
     overrun events
•   Single และ continuous conversion modes
•   Scan mode สำหรับการแปลงโดยอัตโนมัติของ channel 0 ถึง channel ‘n’
•   Data alignment ด้วย in-built data coherency
•   Channel-wise programmable sampling time
•   ตัวเลือก External trigger ที่มีขั้วที่กำหนดค่าได้สำหรับทั้ง regular และ injected conversions
•   Discontinuous mode
•   Dual/Triple mode (บน devices ที่มี 2 ADCs หรือมากกว่า)
•   Configurable DMA data storage ใน Dual/Triple ADC mode
•   Configurable delay ระหว่างการแปลงใน Dual/Triple interleaved mode
•   ADC supply requirements: 2.4 V ถึง 3.6 V ที่ full speed และลดลงเป็น 1.8 V ที่ slower speed
•   ADC input range: VREF– ? VIN ? VREF+
•   DMA request generation ในระหว่าง regular channel conversion

Figure 70 แสดง the block diagram of the ADC.

Note:  VREF–, ถ้ามีให้ใช้งาน available (ขึ้นอยู่กับ package), ต้องถูกต่อถึง VSSA.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 01, 2022, 09:33:29 am
15.3 ADC functional description

Figure 70 แสดง a single ADC block diagram และ Table 93 ให้ the ADC pin description

(https://i.imgur.com/1gMgoCp.png)
(https://i.imgur.com/AjD2p1R.png)

(https://i.imgur.com/x7FwQAj.png)
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 01, 2022, 10:02:25 am
15.3.1 ADC on-off control

The ADC ถูก power on โดยการเซ็ต the ADON bit ใน the ADC_CR2 register. เมื่อ the ADON bit ถูกเซ็ตเป็นครั้งแรก, มันจะปลุก the ADC จาก the Power-down mode.

The conversion จะสตาร์ทเมื่ออย่างใดอย่างหนึ่ง the SWSTART หรือ the JSWSTART bit ถูกเซ็ต.

ผู้ใช้สามารถหยุด conversion และทำให้ the ADC อยู่ใน power down mode โดยการเคลียร์ the ADON bit. ในโหมดนี้ the ADC แทบไม่ใช้พลังงานเลย (เพียงไม่กี่ μA)
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 01, 2022, 10:18:30 am
15.3.2 ADC1/2 and ADC3 connectivity

ADC1, ADC2 and ADC3 ถูกเชื่อมต่ออย่างแน่นหนาและใช้ external channels บางส่วนร่วมกันตามที่อธิบายไว้ใน Figure 71, Figure 72 and Figure 73.

(https://i.imgur.com/W5z51zS.png)
(https://i.imgur.com/2DPliQH.png)

(https://i.imgur.com/hEYcEpe.png)
(https://i.imgur.com/qus5kQO.png)

(https://i.imgur.com/KDeI2Au.png)
(https://i.imgur.com/8QQjwCX.png)
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 01, 2022, 10:49:49 am
15.3.3 ADC clock

The ADC features มีสอง clock schemes:
•   Clock สำหรับ the analog circuitry: ADCCLK, ใช้กับทุก ADCs
     clock นี้ถูกสร้างจาก the APB2 clock ที่หารด้วย a programmable prescaler ที่ยอมให้ the ADC ทำงานที่ fPCLK2/2, /4, /6 or
     /8. ดูที่ the datasheets สำหรับค่าสูงสุดของ ADCCLK.
•   Clock สำหรับ the digital interface (ที่ใช้สำหรับ registers read/write access)
     clock นี้จะเท่ากับ the APB2 clock. The digital interface clock สามารถถูก enabled/disabled เฉพาะรายสำหรับแต่ละ ADC ผ่าน
     ทาง the RCC APB2 peripheral clock enable register (RCC_APB2ENR).
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 02, 2022, 07:08:33 am
15.3.4 Channel selection

มีอยู่ 16 multiplexed channels. มันสามารถจัดระเบียบการแปลงเป็นสองกลุ่ม: regular และ injected. A group ประกอบด้วยลำดับของการแปลงที่สามารถทำได้กับช่องใดก็ได้และตามลำดับใด ๆก็ได้ ตัวอย่างเช่นสามารถทำได้ที่จะทำการแปลงในลำดับต่อไปนี้: ADC_IN3, ADC_IN8, ADC_IN2, ADC_IN2, ADC_IN0,ADC_IN2, ADC_IN2, ADC_IN15.
•   The regular group ประกอบด้วยการแปลงสูงสุดถึง 16 การแปลง. The regular channels และลำดับการแปลงของมันต้องถูกเลือกใน
     the ADC_SQRx registers. จำนวณของการแปลงทั้งหมดใน the regular group ต้องถูกเขียนลงใน the L[3:0] bits ใน the
     ADC_SQR1 register.
•   The injected group ประกอบด้วยการแปลงสูงสุดถึง 4 การแปลง. The injected channels และลำดับการแปลงของมันต้องถูกเลือก
     ใน the ADC_JSQR register. จำนวณของการแปลงทั้งหมดใน the injected group ต้องถูกเขียนลงใน the L[1:0] bits ใน the
     ADC_JSQR register.

ถ้า the ADC_SQRx or ADC_JSQR registers ถูกแก้ไขในระหว่างการแปลง, การแปลงปัจจุบันจะถูกยกเลิก(reset)และ a new start pulse จะถูกส่งไปยัง the ADC เพื่อการแปลงกลุ่มใหม่ที่เลือก

Temperature sensor, VREFINT and VBAT internal channels

•   The temperature sensor ถูกเชื่อมต่อภายในถึง ADC1_IN18 channel ซึ่งถูกใช้ร่วมกันกับ VBAT. เฉพาะ one conversion,
     temperature sensor หรือ VBAT, ต้องถูกเลือกในแต่ละครั้ง. เมื่อ the temperature sensor และ VBAT conversion ถูกเซ็ต
     พร้อมกัน, เฉพาะ the VBAT conversion เท่านั้นที่ถูกดำเนินการ.

The internal reference voltage VREFINT ถูกเชื่อมต่อถึง  ADC1_IN17.

The VBAT channel ถูกเชื่อมต่อถึง ADC1_IN18 channel. มันสามารถถูกแปลงเป็น an injected หรือ regular channel ได้ด้วย.

Note: The temperature sensor, VREFINT และ the VBAT channel มีให้ใช้งานเฉพาะบน the master ADC1 peripheral.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 02, 2022, 08:08:14 am
15.3.5 Single conversion mode

ใน Single conversion mode the ADC จะทำหนึ่งการแปลง. โหมดนี้ถูกสตาร์ทด้วย the CONT bit ที่ 0 โดยอย่างใดอย่างหนึ่ง:
•   การเซ็ต the SWSTART bit ใน the ADC_CR2 register (สำหรับ a regular channel เท่านั้น)
•   การเซ็ต the JSWSTART bit (สำหรับ an injected channel)
•   external trigger (สำหรับ a regular หรือ injected channel)

เมื่อการแปลงของชาแนลที่เลือกเสร็จสมบูรณ์
•   ถ้า a regular channel ถูกแปลงแล้ว:
     –   The converted data จะถูกเก็บลงใน the 16-bit ADC_DR register
     –   The EOC (end of conversion) flag จะถูกเซ็ต
     –   An interrupt จะถูกสร้างขึ้นถ้า the EOCIE bit ถูกเซ็ต
•   ถ้า an injected channel ถูกแปลงแล้ว:
     –   The converted data จะถูกเก็บลงใน the 16-bit ADC_JDR1 register
     – The JEOC (end of conversion injected) flag จะถูกเซ็ต
     – An interrupt จะถูกสร้างขึ้นถ้า the JEOCIE bit ถูกเซ็ต

จากนั้น the ADC จะหยุด.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 02, 2022, 09:03:14 am
15.3.6 Continuous conversion mode

ใน continuous conversion mode, the ADC จะสตาร์ท a new conversion ทันทีที่มันสำเร็จการแปลงหนึ่งแล้ว. โหมดนี้ถูกสตาร์ทด้วย the CONT bit ที่ 1 อย่างใดอย่างหนึ่ง โดย external trigger หรือโดยการเซ็ต the SWSTRT bit ใน the ADC_CR2 register (สำหรับ regular channels เท่านั้น).

หลังจากการแปลงแต่ละครั้ง :
•   ถ้า a regular group of channels ถูกแปลงเสร็จแล้ว:
     –   The last converted data ถูกเก็บไว้ใน the 16-bit ADC_DR register
     –   The EOC (End Of Conversion) flag ถูก set
     –   An interrupt จะถูกสร้างขึ้นถ้า the EOCIE bit ถูกเซ็ต

Note: Injected channels ไม่สามารถถูกแปลงอย่างต่อเนื่องได้. ข้อยกเว้นเดียวคือเมื่อ an injected channel ถูกกำหนดค่าให้ถูกแปลง
         โดยอัตโนมัติหลังจาก regular channels ใน continuous mode (โดย JAUTO bit), โปรดดู Auto-injection section).

Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 02, 2022, 09:13:42 am
15.3.7 Timing diagram

ดังแสดงในรูป Figure 74, the ADC ต้องการ a stabilization time tSTAB ก่อนที่มันจะสตาร์ทการแปลงอย่างเที่ยงตรง. หลังจากการสตาร์ทของ ADC conversion และหลังจากนั้นอีก 15 clock cycles, the EOC flag จะถูกเซ็ตและ the 16-bit ADC Data register บรรจุผลของการแปลง.

(https://i.imgur.com/QNuUZQg.png)
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 02, 2022, 09:58:10 am
15.3.8 Analog watchdog

The AWD analog watchdog status bit ถูกเซ็ตถ้า the analog voltage ที่แปลงโดย the ADC อยู่ต่ำกว่าขอบเขตทางต่ำ( low threshold)หรืออยู่เหนือกว่าขอบเขตทางสูง( high threshold). thresholds เหล่านี้ถูกโปรแกรมใน the 12 least significant bits(12 บิตทางต่ำ) ของ the ADC_HTR และ ADC_LTR 16-bit registers. An interrupt สามารถถูกเปิดการใช้งานโดยการใช้ the AWDIE bit ใน the ADC_CR1 register.

ค่าของขอบเขตเป็นอิสระจากการวางแนว(ชิดขวา/ชิดซ้าย)ที่เลือกโดย the ALIGN bit ใน the ADC_CR2 register. The analog voltage ถูกเปรียบเทียบกับ the lower and higher thresholds ก่อนที่จะวางแนว.

Table 94 แสดงวิธีที่ the ADC_CR1 register ควรถูกกำหนดค่าเพื่อเปิดใช้งาน the analog watchdog บนหนึ่งชาแนลหรือมากกว่า.

(https://i.imgur.com/j99RfE7.png)
(https://i.imgur.com/5F8H6x0.png)
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 02, 2022, 10:53:31 am
15.3.9 Scan mode

mode นี้ถูกใช้สแกนกลุ่มของ analog channels.

Scan mode ถูกเลือกโดยการเซ็ต the SCAN bit ใน the ADC_CR1 register. เมื่อบิตนี้ถูกเซ็ต, ADC จะสแกน the channels ทั้งหมดที่ถูกเลือกใน the ADC_SQRx registers (สำหรับ regular channels) หรือใน the ADC_JSQR (สำหรับ injected channels). การแปลงเพียงครั้งเดียวถูกกระทำสำหรับแต่ละชาแนลของกลุ่ม. หลังจากจบแต่ละการแปลง ชาแนลถัดไปของกลุ่มจะถูกแปลงโดยอัตโนมัติ. ถ้า the CONT bit ถูกเซ็ต, conversion จะไม่หยุดที่่ชาแนลสุดท้ายที่เลือกของกลุ่ม แต่จะทำการแปลงต่ออีกจากชาแนลแรกที่เลือกของกลุ่ม

ถ้า DMA bit ต้องถูกเซ็ตและ the direct memory access controller ถูกใช้เพื่อส่งถ่าย the data ที่แปลงแล้วจาก regular group ของ channels ไปยัง SRAM หลังจากแต่ละ regular channel conversion.

The EOC bit ถูกเซ็ตใน the ADC_SR register:
•   ที่ the end ของแต่ละ regular group sequence ถ้า the EOCS bit ถูกเคลียร์เป็น 0
•   ที่ the end ของแต่ละ regular channel conversion ถ้า the EOCS bit ถูกเซ็ตเป็น 1

The data ที่แปลงแล้วจาก an injected channel จะถูกเก็บไว้ใน the ADC_JDRx registers เสมอ.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 03, 2022, 07:22:40 am
15.3.10 Injected channel management

Triggered injection

เพื่อใช้ triggered injection, the JAUTO bit ต้องถูกเคลียร์ใน the ADC_CR1 register.
1.   สตาร์ทการแปลงของกลุ่มของ regular channels อย่างใดอย่างหนึ่งโดย external trigger หรือโดยการเซ็ต the SWSTART bit ใน
      the ADC_CR2 register .
2.   ถ้า an external injected trigger เกิดขึ้นหรือถ้า the JSWSTART bit ถูกเซ็ตในระหว่าง the conversion of a regular group
      of channels, การแปลงปัจจุบันจะถูกรีเซ็ตและ the injected channel sequence จะสลับไปเป็น Scan once mode.
3.  จากนั้น, the regular conversion of the regular group of channels จะถูกกลับมาทำงานต่อจาก the last interrupted
     regular conversion.
     ถ้า a regular event เกิดขึ้นในระหว่าง an injected conversion, the injected conversion จะไม่ถูกอินเตอร์รัพท์แต่ the
     regular sequence จะถูกปฏิบัติที่ the end ของ the injected sequence. Figure 76 แสดง the corresponding timing
     diagram.

Note: เมื่อใช้ triggered injection, ช่วงเวลาระหว่าง trigger events ต้องยาวนานกว่า the injection sequence. ตัวอย่างเช่น, ถ้า
         the sequence length เป็น 30 ADC clock cycles (นั่นคือมี 2 conversions ที่มีเวลาสุ่ม 3 clock periods), ช่วงเวลาที่สั้น
         ที่สุดระหว่าง triggers ต้องเป็น 31 ADC clock cycles.


Auto-injection

ถ้า the JAUTO bit ถูกเซ็ต, เมื่อนั้น the channels ใน the injected group ถูกแปลงโดยอัตโนมัติหลังจาก the regular group of channels.. นี้สามารถถูกใช้เพื่อแปลง a sequence ได้มากถึง 20 conversions ที่โปรแกรมใน the ADC_SQRx and ADC_JSQR registers.

ใน mode นี้, external trigger บน injected channels ต้องถูกปิดการใช้งาน.

ถ้า the CONT bit ถูกเซ็ตด้วยพร้อมกันกับ the JAUTO bit, regular channels ถูกตามโดย injected channels จะถูกแปลงอย่างต่อเนื่อง

Note: มันเป็นไปไม่ได้ที่จะใช้ทั้ง the auto-injected และ discontinuous modes พร้อมกัน.

(https://i.imgur.com/1FuLoum.png)
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 03, 2022, 09:04:29 am
15.3.11 Discontinuous mode

Regular group

โหมดนี้ถูกเปิดการใช้งานโดยการเซ็ต the DISCEN bit ใน the ADC_CR1 register. มันสามารถถูกใช้เพื่อแปลงลำดับสั้นๆของการแปลงจำนวน n (n <=8) ซึ่งเป็นส่วนหนึ่งของลำดับของการแปลงที่ถูกเลือกใน in the ADC_SQRx registers. ค่าของ n ถูกระบุโดยการเขียนไปยัง the DISCNUM[2:0] bits ใน the ADC_CR1 register.

เมื่อ an external trigger เกิดขึ้น, มันจะสตาร์ทการแปลงจำนวน n ถัดไปที่ถูกเลือกใน the ADC_SQRx registers จนกระทั่งการแปลงทั้งหมดใน the sequence ถูกกระทำแล้วเสร็จ. The total sequence length ถูกกำหนดโดย the L[3:0] bits ใน the ADC_SQR1 register.

ตัวอย่างเช่น:
     n = 3, channels ที่จะถูกแปลง = 0, 1, 2, 3, 6, 7, 9, 10
     1st trigger: ลำดับการแปลง 0, 1, 2. An EOC event ถูกสร้างที่แต่ละการแปลง
     2nd trigger: ลำดับการแปลง 3, 6, 7. An EOC event ถูกสร้างที่แต่ละการแปลง
     3rd trigger: ลำดับการแปลง 9, 10. An EOC event ถูกสร้างที่แต่ละการแปลง
     4th trigger: ลำดับการแปลง 0, 1, 2. An EOC event ถูกสร้างที่แต่ละการแปลง

Note: เมื่อ a regular group ถูกแปลงใน discontinuous mode, การวนรอบจะไม่เกิดขึ้น.
          เมื่อกลุ่มย่อยทั้งหมดถูกแปลง, การทริกถัดไปจะสตาร์ทการแปลงของกลุ่มย่อยแรก. ในตัวอย่างข้างบน, การทริกครั้งที่ 4 จะแปลงซ้ำ
          กลุ่มย่อยแรก channels 0, 1 และ 2.


Injected group

โหมดนี้ถูกเปิดการใช้งานโดยการเซ็ต the JDISCEN bit ใน the ADC_CR1 register. มันสามารถถูกใช้เพื่อแปลง the sequence ที่เลือกใน the ADC_JSQR register, ทีละ channel, หลังจาก an external trigger event.

เมื่อ an external trigger เกิดขึ้น, มันจะสตาร์ท the next channel conversions ที่เลือกใน the ADC_JSQR registers จนกระทั่ง the conversions ทั้งหมดใน the sequence ถูกกระทำแล้วเสร็จ. The total sequence length ถูกกำหนดโดย the JL[1:0] bits ใน the ADC_JSQR register.

ตัวอย่าง:
     n = 1, channels ที่ถูกแปลง = 1, 2, 3
     1st trigger: channel 1 ถูกแปลง
     2nd trigger: channel 2 ถูกแปลง
     3rd trigger: channel 3 ถูกแปลงและ EOC และ JEOC events ถูกสร้างขึ้น
     4th trigger: channel 1

Note: เมื่อ injected channels ทั้งหมดถูกแปลง, the next trigger จะสตาร์ทการแปลงของ the first injected channel. ในตัวอย่าง
          ข้างบน, the fourth trigger จะแปลงซ้ำใหม่ the first injected channel 1.

          มันไม่สามารถใช้ทั้ง auto-injected และ discontinuous modes ได้พร้อมกัน.

         Discontinuous mode ต้องไม่ถูกเซ็ตสำหรับ regular and injected groups ในเวลาเดียวกัน.
         Discontinuous mode ต้องถูกเปิดใช้งานเฉพาะสำหรับ the conversion of one group.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 03, 2022, 10:35:18 am
15.4 Data alignment

ALIGN bit ใน the ADC_CR2 register เลือกการวางแนวของ data ที่เก็บหลังจาก conversion. Data สามารถวางแนวชิดซ้ายหรือชิดขวาดังแสดงใน Figure 77 and Figure 78.

The converted data value จาก the injected group of channels ถูกลดลงโดย the user-defined offset(ค่าหักลงที่ผู้ใช้กำหนด) ที่ถูกเขียนไว้ใน the ADC_JOFRx registers ดังนั้นผลที่ได้สามารถถูกทำให้เป็นค่าลบ. The SEXT bit เป็น the extended sign value.(ค่าเครื่องหมายที่เพิ่มมา)

สำหรับ regular group channels ไม่มี offset มาลบ ดังนั้นมีเพียง 12 bits เป็นนัยสำคัญ.
(https://i.imgur.com/UDVHsqh.png)

กรณีพิเศษ: เมื่อจัดชิดซ้าย, the data จะถูกจัดเรียงบน a half-word basis ยกเว้นเมื่อ the resolution ถูกเซ็ตเป็น 6-bit. ในกรณีนั้น, the data จะถูกจัดเรียงบน a byte basis ดังแสดงใน Figure 79.
(https://i.imgur.com/Wpbtzfo.png)
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 03, 2022, 10:45:03 am
15.5 Channel-wise programmable sampling time

The ADC จะสุ่ม the input voltage เป็นเวลาจำนวนของ ADCCLK cycles ที่สามารถถูกแก้ไขโดยใช้ the SMP[2:0] bits ใน the ADC_SMPR1 and ADC_SMPR2 registers. แต่ละ channel สามารถถูกสุ่มด้วยเวลาสุ่มที่แตกต่างกัน.

The total conversion time ถูกคำนวณดังต่อไปนี้:

       Tconv = Sampling time + 12 cycles

Example:

       ด้วย ADCCLK = 30 MHz และ sampling time = 3 cycles:

       Tconv = 3 + 12 = 15 cycles = 0.5 μs ด้วย APB2 ที่ 60 MHz
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 04, 2022, 07:48:46 am
15.6 Conversion on external trigger and trigger polarity

Conversion สามารถถูกทริกโดย an external event (เช่น timer capture, EXTI line). ถ้า the EXTEN[1:0] control bits (สำหรับ a regular conversion) หรือ JEXTEN[1:0] bits (สำหรับ an injected conversion) แตกต่างจาก “0b00”, จากนั้น external events จะสามารถทริก a conversion ด้วย the selected polarity. Table 95 จัดให้มีความตรงกันระหว่าง the EXTEN[1:0] และ JEXTEN[1:0] values และ the trigger polarity.

Note: The polarity of the external trigger สามารถถูกเปลี่ยนได้ทันที.

The EXTSEL[3:0] and JEXTSEL[3:0] control bits ถูกใช้เพื่อเลือกจาก 16 possible events ที่สามารถทริก conversion สำหรับ the regular และ injected groups.

Table 96 ให้ the possible external trigger สำหรับ regular conversion.
(https://i.imgur.com/uUa92Xa.png)

Table 97 ให้ the possible external trigger สำหรับ injected conversion.
(https://i.imgur.com/geeRfEI.png)

Software source trigger events สามารถถูกสร้างโดยการเซ็ต SWSTART (สำหรับ regular conversion) หรือ JSWSTART (สำหรับ injected conversion) ใน ADC_CR2.

A regular group conversion สามารถถูกอินเตอร์รัพท์โดย an injected trigger.

Note: The trigger selection สามารถถูกเปลี่ยนได้ทันที อย่างไรก็ตาม, เมื่อ the selection เปลี่ยน, จะมีกรอบเวลา 1 APB clock cycle
         ในระหว่างที่ the trigger detection ถูกปิดใช้งาน. นี้เพื่อหลีกเลี่ยง spurious detection ในระหว่าง transitions.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 04, 2022, 08:34:18 am
15.7 Fast conversion mode

มันสามารถเป็นได้ที่จะดำเนินการ faster conversion โดยการลด the ADC resolution. The RES bits ถูกใช้เพื่อเลือกจำนวนของ bits มีให้ใช้งานใน the data register. The minimum conversion time สำหรับแต่ละ resolution เป็นดังต่อไปนี้:
•   12 bits: 3 + 12 = 15 ADCCLK cycles
•   10 bits: 3 + 10 = 13 ADCCLK cycles
•   8 bits: 3 + 8 = 11 ADCCLK cycles
•   6 bits: 3 + 6 = 9 ADCCLK cycles
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 04, 2022, 09:05:37 am
15.8 Data management

15.8.1 Using the DMA

เนื่องจากการแปลง regular channel values จะถูกเก็บลงใน a unique data register, มันจะมีประโยชน์ที่จะใช้ DMA สำหรับ conversion ของมากกว่าหนึ่ง regular channel. นี้หลีกเลี่ยงการสูญหายของ the data ที่ถูกเก็บใน the ADC_DR register แล้ว.

เมื่อ the DMA mode ถูกเปิดใช้งาน (DMA bit ถูกเซ็ตเป็น 1 ใน the ADC_CR2 register), หลังจากแต่ละ conversion ของ a regular channel, a DMA request ถูกสร้างขึ้น. นี้ยอมให้ the transfer ของ the converted data จาก the ADC_DR register ไปยัง the destination location ที่เลือกโดย the software.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 04, 2022, 09:41:47 am
อย่างไรก็ตาม, ถ้า data สูญหาย (overrun), the OVR bit ใน the ADC_SR register จะถูกเซ็ตและ an interrupt ถูกสร้างขึ้น (ถ้า the OVRIE enable bit ถูกเซ็ต). DMA transfers ดังนั้นถูกปิดใช้งานและ DMA requests ไม่ถูกยอมรับอีกต่อไป. ในกรณีนี้, ถ้า a DMA request ถูกทำ, the regular conversion ที่กำลังดำเนินการอยู่จะถูกทิ้งและ regular triggers อันต่อไปจะถูกเพิกเฉย. ดังนั้นจำเป็นต้องเคลียร์ the OVR flag และ the DMAEN bit ใน the used DMA stream, และเพื่อเริ่มต้นใหม่ทั้ง the DMA และ the ADC เพื่อที่ the wanted converted channel data ถูกส่งถ่ายไปยัง the right memory location. เท่านั้นจึงจะสามารถ the conversion ถูกทำให้กลับคืนมาทำงานต่อและ the data transfer, ถูกเปิดใช้งานอีกครั้ง. Injected channel conversions ไม่ถูกกระทบโดย overrun errors.

เมื่อ OVR = 1 ใน DMA mode, the DMA requests จะถูกบล็อกหลังจาก the last valid data ถูกส่งถ่ายแล้ว, ซึ่งหมายความว่าทุก the data ที่ส่งถ่ายไปยัง the RAM สามารถถูกพิจารณาได้ว่าถูกต้อง.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 04, 2022, 10:11:15 am
ที่ the end ของ the last DMA transfer (จำนวนของ transfers ที่กำหนดค่าใน the DMA controller’s DMA_SxNTR register):
•   ไม่มี new DMA request ถูกป่อยออกไปยัง to the DMA controller ถ้า the DDS bit ถูกเคลียร์เป็น 0 ใน the ADC_CR2 register
     (สิ่งนี้หลีกเลี่ยงการสร้าง an overrun error). อย่างไรก็ตาม the DMA bit จะไม่ถูกเคลียร์โดย hardware. มันต้องถูกเขียนเป็น 0, จาก
     นั้นเป็น 1 เพื่อสตาร์ท a new transfer.
•   Requests สามารถถูกสร้างต่อไปได้ถ้า the DDS bit ถูกเซ็ตเป็น 1. สิ่งนี้ยอมให้กำหนดค่า the DMA ใน double-buffer circular
     mode.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 04, 2022, 10:21:54 am
เพื่อกู้คืน the ADC จาก OVR state เมื่อ the DMA ถูกใช้, ทำตามขั้นตอนข้างล่าง:
1.   กำหนดค่าเริ่มต้นใหม่e the DMA (ปรับ destination address และ NDTR counter)
2.   เคลียร์ the ADC OVR bit ใน ADC_SR register
3.   ทริก the ADC เพื่อสตาร์ท the conversion.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 05, 2022, 07:20:36 am
15.8.2 Managing a sequence of conversions without using the DMA

ถ้า the conversions ช้าพอ, the conversion sequence สามารถถูกจัดการโดย the software. ในกรณีนี้ the EOCS bit ต้องถูกเซ็ตใน the ADC_CR2 register สำหรับ the EOC status bit ที่จะถูกเซ็ตที่ the end ของแต่ละ conversion, และไม่เฉพาะที่ the end ของ the sequence. เมื่อ EOCS = 1, overrun detection ถูกเปิดใช้งานโดยอัตโนมัติ. ดังนั้น, แต่ละครั้งที่ a conversion หนึ่งเสร็จสมบูรณ์, EOC จะถูกเซ็ตและ the ADC_DR register สามารถถูกอ่าน. The overrun management เป็นอย่างเดียวกันกับเมื่อ the DMA ถูกใช้.

ในการกู้คืน the ADC จาด OVR state เมื่อ the EOCS ถูกเซ็ต, ทำตามขั้นตอนข้างล่าง:
1.   เคลียร์ the ADC OVR bit ใน ADC_SR register
2.   ทริก the ADC เพื่อสตาร์ท the conversion.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 05, 2022, 07:55:26 am
15.8.3 Conversions without DMA and without overrun detection

มันอาจเป็นประโยชน์ที่ปล่อยให้ the ADC แปลงหนึ่งชาแนลหรือมากกว่าโดยไม่มีการอ่าน the data ในแต่ละครั้ง (เช่นถ้ามี an analog watchdog ). สำหรับสิ่งนั้น, the DMA ต้องถูกปิดการใช้งาน (DMA = 0) และ the EOC bit ต้องถูกเซ็ตที่ the end ของ a sequence เท่านั้น (EOCS = 0). ในการกำหนดค่านี้, overrun detection ถูกปิดใช้งาน
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 05, 2022, 09:45:38 am
15.9 Multi ADC mode

ใน devices ที่มีสอง ADCs หรือมากกว่า, the Dual (ที่มีสอง ADCs) และ Triple (ที่มีสาม ADCs) ADC modes สามารถถูกใช้ (ดู Figure 80).

ใน multi ADC mode, the start of conversion ถูกทริกสลับกันหรือพร้อมกันโดย the ADC1 master ไปยัง the ADC2 and ADC3 slaves, ขึ้นอยู่กับ the mode ที่เลือกโดย the MULTI[4:0] bits ใน the ADC_CCR register.

Note: ใน multi ADC mode, เมื่อกำหนดค่า conversion trigger โดย an external event, the application ต้องเซ็ต trigger โดย
           the master เท่านั้นและปิดการใช้งาน trigger โดย slaves เพื่อป้องกัน spurious triggers ที่อาจจะสตาร์ท unwanted slave
           conversions.


The four possible modes ข้างล่างถูกจัดให้มีใช้:
•   Injected simultaneous mode
•   Regular simultaneous mode
•   Interleaved mode
•   Alternate trigger mode

นอกจากนี้ยังสามารถใช้โหมดก่อนหน้ารวมกันด้วยวิธีต่อไปนี้:
•   Injected simultaneous mode + Regular simultaneous mode
•   Regular simultaneous mode + Alternate trigger mode

Note: ใน multi ADC mode, the converted data สามารถถูกอ่านที่ the multi-mode data register (ADC_CDR). The status
           bits สามารถถูกอ่านใน the multi-mode status register (ADC_CSR).


(https://i.imgur.com/CfkoxVO.png)
(https://i.imgur.com/gzPJFIe.png)
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 05, 2022, 03:15:10 pm
•   DMA requests in Multi ADC mode:

     ใน Multi ADC mode the DMA อาจถูกกำหนดค่าเพื่อส่งถ่าย converted data ในโหมดที่แตกต่างกันสามโหมด. ในทุกกรณี, the
     DMA streams ที่ใช้คือสตรีมที่เชื่อมต่อกับ the ADC:

     –   DMA mode 1: ในแต่ละ DMA request (one data item มีให้ใช้งาน), a half-word แสดง an ADC-converted data
          item ที่จะถูกส่งถ่าย.

          ใน Dual ADC mode, ADC1 data ถูกส่งถ่ายใน the first request, ADC2 data ถูกส่งถ่ายใน the second request และต่อ
          ไป.

          ใน Triple ADC mode, ADC1 data ถูกส่งถ่ายใน the first request, ADC2 data ถูกส่งถ่ายใน the second request และ
          ADC3 data ถูกส่งถ่ายใน the third request; ลำดับถูกทำซ้ำ. ดังนั้น the DMA first ส่งถ่าย ADC1 data ถูกตามโดย ADC2
          data ถูกตามโดย ADC3 data และต่อไป.

          DMA mode 1 ถูกใช้ใน regular simultaneous triple mode.

          Example:
          Regular simultaneous triple mode: 3 consecutive DMA requests ถูกสร้าง (one สำหรับแต่ละ converted data
          item)
          1st request: ADC_CDR[31:0] = ADC1_DR[15:0]
          2nd request: ADC_CDR[31:0] = ADC2_DR[15:0]
          3rd request: ADC_CDR[31:0] = ADC3_DR[15:0]
          4th request: ADC_CDR[31:0] = ADC1_DR[15:0]
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 05, 2022, 04:38:02 pm
     –   DMA mode 2: ในแต่ละ DMA request (two data items มีให้ใช้งาน) two halfwords แสดง two ADC-
          converted data items ที่ถูกส่งถ่ายเป็น a word.

          ใน Dual ADC mode, ทั้ง ADC2 and ADC1 data ถูกส่งถ่ายใน the first request (ADC2 data ใช้ the upper half-word
          และ ADC1 data ใช้ the lower half-word) เป็นต้น.

          ใน Triple ADC mode, three DMA requests ถูกสร้าง. ใน the first request, ทั้ง ADC2 and ADC1 data ถูกส่งถ่าย
          (ADC2 data ใช้ the upper half-word และ ADC1 data ใช้ the lower half-word). ใน the second request, ทั้ง
          ADC1 and ADC3 data ถูกส่งถ่าย (ADC1 data ใช้ the upper half-word และ ADC3 data ใช้ the lower half-word).
          ใน the third request, ทั้ง ADC3 and ADC2 data ถูกส่งถ่าย (ADC3 data ใช้ the upper half-word และ ADC2 data
          ใช้ the lower half-word) และต่อไป.

          DMA mode 2 ถูกใช้ใน interleaved mode และใน regular simultaneous mode (สำหรับ Dual ADC mode เท่านั้น).

          Example:
     a)  Interleaved dual mode: a DMA request ถูกสร้างแต่ละครั้งที่ 2 data items มีให้ใช้งาน:
          1st request: ADC_CDR[31:0] = ADC2_DR[15:0] | ADC1_DR[15:0]
          2nd request: ADC_CDR[31:0] = ADC2_DR[15:0] | ADC1_DR[15:0]

     b)  Interleaved triple mode: a DMA request ถูกสร้างแต่ละครั้งที่ 2 data items มีให้ใช้งาน:
          1st request: ADC_CDR[31:0] = ADC2_DR[15:0] | ADC1_DR[15:0]
          2nd request: ADC_CDR[31:0] = ADC1_DR[15:0] | ADC3_DR[15:0]
          3rd request: ADC_CDR[31:0] = ADC3_DR[15:0] | ADC2_DR[15:0]
          4th request: ADC_CDR[31:0] = ADC2_DR[15:0] | ADC1_DR[15:0]
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 06, 2022, 07:52:09 am
     –   DMA mode 3: โหมดนี้คล้ายกับ the DMA mode 2. ความแตกต่างเพียงอย่างเดียวคือว่าในแต่ละ DMA request (two
          data items มีให้ใช้งาน) two bytes แสดง two ADC converted data items ที่ถูกส่งถ่ายเป็น a half-word. The data
          transfer order คล้ายกับของ the DMA mode 2. DMA mode 3 จะถูกใช้ใน interleaved mode ใน 6-bit and 8-bit
          resolutions.

          Example:
     a)  Interleaved dual mode: a DMA request ถูกสร้างแต่ละครั้งที่ 2 data items มีให้ใช้งาน:
          1st request: ADC_CDR[15:0] = ADC2_DR[7:0] | ADC1_DR[7:0]
          2nd request: ADC_CDR[15:0] = ADC2_DR[7:0] | ADC1_DR[7:0]
     b)  Interleaved triple mode: a DMA request ถูกสร้างแต่ละครั้งที่ 2 data items มีให้ใช้งาน:
          1st request: ADC_CDR[15:0] = ADC2_DR[7:0] | ADC1_DR[7:0]
          2nd request: ADC_CDR[15:0] = ADC1_DR[7:0] | ADC3_DR[15:0]
          3rd request: ADC_CDR[15:0] = ADC3_DR[7:0] | ADC2_DR[7:0]
          4th request: ADC_CDR[15:0] = ADC2_DR[7:0] | ADC1_DR[7:0]

Overrun detection: ถ้า an overrun ถูกตรวจพบใน ADCs ที่เกี่ยวข้องตัวใดตัวหนึ่ง (ADC1 and ADC2 ใน dual and triple modes, ADC3 ใน triple mode เท่านั้น), the DMA requests ไม่ถูกปล่อยออกอีกต่อไป เพื่อให้แน่ใจว่าทุก the data ที่ส่งถ่ายไปยัง the RAM ถูกต้อง. มันอาจเกิดขึ้นที่ the EOC bit ที่ตรงกันกับ ADC หนึ่งรายการยังคงถูกเซ็ตเนื่องจาก the data register ของ ADC ตัวนี้บรรจุ valid data.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 07, 2022, 05:29:15 am
15.9.1 Injected simultaneous mode

โหมดนี้แปลง an injected group of channels. The external trigger source มาจาก the injected group multiplexer of ADC1 (ที่เลือกโดย the JEXTSEL[3:0] bits ใน the ADC1_CR2 register). A simultaneous trigger ถูกจัดให้กับ ADC2 and ADC3.

Note: ห้ามแปลงชาแนลเดียวกันบน the two/three ADCs (ไม่มี overlapping sampling times สำหรับ the two/three ADCs เมื่อ
          แปลงชาแนลเดียวกัน).

         ใน simultaneous mode, ตัวหนึ่งต้องแปลง sequences ที่มีความยาวเท่ากันหรือทำให้แน่ใจว่าช่วงเวลาระหว่าง triggers นานกว่า
         the 2 sequences (Dual ADC mode) /3 sequences (Triple ADC mode). มิฉะนั้น, the ADC ที่มี the shortest
         sequence อาจสตาร์ทซ้ำในขณะที่ the ADC ที่มี the longest sequence กำลังเสร็จสมบูรณ์ the previous conversions.

         Regular conversions สามารถถูกดำเนินการบนหนึ่งหรือทุก ADCs. ในกรณีนั้น, พวกมันถูกทำให้เป็นอิสระจากกันและถูก           
         อินเตอร์รัพท์เมื่อ an injected event เกิดขึ้น. พวกมันกลับมาทำงานต่อที่ the end ของ the injected conversion group.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 07, 2022, 05:55:07 am
Dual ADC mode

ที่ the end of conversion event บน ADC1 or ADC2:
•   The converted data ถูกเก็บลงใน the ADC_JDRx registers ของแต่ละ ADC interface.
•   A JEOC interrupt ถูกสร้าง (ถ้าเปิดใช้งานบนอันใดอันหนึ่งจาก the two ADC interfaces) เมื่อ the ADC1/ADC2’s injected
     channels ถูกแปลงแล้วทั้งหมด.

(https://i.imgur.com/mc8YYP5.png)
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 07, 2022, 06:01:43 am
Triple ADC mode

ที่ the end of conversion event บน ADC1, ADC2 or ADC3:
•   The converted data ถูกเก็บลงใน the ADC_JDRx registers ของแต่ละ ADC interface.
•   A JEOC interrupt ถูกสร้าง (ถ้าเปิดใช้งานบนอันใดอันหนึ่งจาก the three ADC interfaces) เมื่อ the ADC1/ADC2/ADC3’s
     injected channels ถูกแปลงแล้วทั้งหมด.

(https://i.imgur.com/ohKnR1b.png)
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 07, 2022, 06:47:11 am
15.9.2 Regular simultaneous mode

โหมดนี้ถูกดำเนินการบน a regular group of channels. The external trigger source มาจาก the regular group multiplexer of ADC1 (ที่เลือกโดย the EXTSEL[3:0] bits ใน the ADC1_CR2 register). A simultaneous trigger ถูกจัดให้ไปยัง ADC2 and ADC3.

Note: ห้ามแปลงชาแนลเดียวกันบน the two/three ADCs (ไม่มี overlapping sampling times สำหรับ the two/three ADCs เมื่อ
          แปลงชาแนลเดียวกัน).

         ใน regular simultaneous mode, ตัวหนึ่งต้องแปลง sequences ที่มีความยาวเท่ากันหรือทำให้แน่ใจว่าช่วงเวลาระหว่าง triggers
         นานกว่า the long conversion time ของ the 2 sequences (Dual ADC mode) /3 sequences (Triple ADC mode).   
         มิฉะนั้น, the ADC ที่มี the shortest sequence อาจสตาร์ทซ้ำในขณะที่ the ADC ที่มี the longest sequence กำลังเสร็จ
         สมบูรณ์ the previous conversions.

         Injected conversions ต้องถูกปิดใช้งาน.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 07, 2022, 07:18:46 am
Dual ADC mode

ที่ the end of conversion event บน ADC1 or ADC2:
•   A 32-bit DMA transfer request ถูกสร้าง (ถ้า DMA[1:0] bits ใน the ADC_CCR register เท่ากับ 0b10). การร้องขอนี้จะส่ง
     ถ่าย the ADC2 converted data ที่เก็บใน the upper half-word อขง the ADC_CDR 32-bit register ไปยัง the SRAM และ
     จากนั้น the ADC1 converted data ที่เก็บใน the lower half-word ของ ADC_CCR ไปยัง the SRAM.
•   A EOC interrupt ถูกสร้าง (ถ้าเปิดใช้งานบนอันใดอันหนึ่งจาก the two ADC interfaces) เมื่อ the ADC1/ADC2’s regular
     channels ถูกแปลงแล้วทั้งหมด.

(https://i.imgur.com/tJxLrVB.png)
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 07, 2022, 08:25:25 am
Triple ADC mode

ที่ the end of conversion event บน ADC1, ADC2 or ADC3:
•   Three 32-bit DMA transfer requests ถูกสร้าง (ถ้า DMA[1:0] bits ใน the ADC_CCR register เท่ากับ 0b01). Three
     transfers ดังนั้นแทนที่จาก the ADC_CDR 32-bit register ไปยัง SRAM: first the ADC1 converted data, จากนั้น the
     ADC2 converted data และสุดท้าย the ADC3 converted data. The process ถูกทำซ้ำสำหรับแต่ละ new three
     conversions.
•   A EOC interrupt ถูกสร้าง (ถ้าเปิดใช้งานบนอันใดอันหนึ่งจาก the three ADC interfaces) เมื่อ the ADC1/ADC2/ADC3’s
     regular channels ถูกแปลงแล้วทั้งหมด.

(https://i.imgur.com/2qU1eo4.png)
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 08, 2022, 05:50:57 am
15.9.3 Interleaved mode

โหมดนี้สามารถถูกสตาร์ทเฉพาะบน a regular group (โดยปกติ one channel). The external trigger source มาจาก the regular channel multiplexer of ADC1.

Dual ADC mode

หลังจาก an external trigger เกิดขึ้น:
•   ADC1 สตาร์ททันที
•   ADC2 สตาร์ทหลังจากการหน่วงเวลาของหลาย ADC clock cycles

The minimum delay ซึ่งแยก 2 conversions ใน interleaved mode ถูกกำหนดค่าใน the DELAY bits ใน the ADC_CCR register. อย่างไรก็ตาม, an ADC ไม่สามารถสตาร์ท a conversion ได้ถ้า the complementary ADC ยังคงกำลังสุ่มอินพุทของมัน (มีเพียงหนึ่ง ADC เท่านั้นที่สามารถสุ่ม the input signal ที่เวลาที่กำหนด). ในกรณีนี้, the delay จะกลายเป็น the sampling time + 2 ADC clock cycles. ตัวอย่างเช่น, ถ้า DELAY = 5 clock cycles และ the sampling ใช้เวลา 15 clock cycles บนทั้งสอง ADCs, ดังนั้น 17 clock cycles จะแยก conversions บน ADC1 และ ADC2).

ถ้า the CONT bit ถูกเซ็ตบนทั้ง ADC1 and ADC2, the selected regular channels ของทั้งสอง ADCs จะถูกแปลงอย่างต่อเนื่องไป.

Note: ถ้า the conversion sequence ถูกอินเตอร์รัพท์ (ตัวอย่างเช่นเมื่อ DMA end of transfer เกิดขึ้น), the multi-ADC
         sequencer ต้องถูกรีเซ็ตโดยการกำหนดค่ามันใน independent mode ก่อน (bits DUAL[4:0] = 00000) ก่อนที่จะโปรแกรม
         ใหม่เป็น the interleaved mode.


หลังจาก an EOC interrupt ถูกสร้างโดย ADC2 (ถ้าถูกเปิดใช้งานผ่านทาง the EOCIE bit) a 32-bit DMA transfer request จะถูกสร้าง (ถ้า the DMA[1:0] bits ใน ADC_CCR เท่ากับ 0b10). request จะส่งถ่าย the ADC2 converted data ที่เก็บใน the upper half-word ของ the ADC_CDR 32-bit register ลงใน SRAM ก่อน, จากนั้น the ADC1 converted data ที่เก็บใน the register’s lower half-word ลงใน SRAM.

(https://i.imgur.com/wopYeXZ.png)
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 08, 2022, 10:07:53 am
Triple ADC mode

หลังจาก an external trigger เกิดขึ้น:
•   ADC1 สตาร์ททันทีและ
•   ADC2 สตาร์ทหลังจากการหน่วงเวลาของหลาย ADC clock cycles
•   ADC3 สตาร์ทหลังจากการหน่วงเวลาของหลาย ADC clock cycles ที่อ้างอิงจาก the ADC2 conversion

The minimum delay ซึ่งแยก 2 conversions ใน interleaved mode ถูกกำหนดค่าใน the DELAY bits ใน the ADC_CCR register. อย่างไรก็ตาม, an ADC ไม่สามารถสตาร์ท a conversion ได้ถ้า the complementary ADC ยังคงกำลังสุ่มอินพุทของมัน (มีเพียงหนึ่ง ADC เท่านั้นที่สามารถสุ่ม the input signal ที่เวลาที่กำหนด). ในกรณีนี้, the delay จะกลายเป็น the sampling time + 2 ADC clock cycles. ตัวอย่างเช่น, ถ้า DELAY = 5 clock cycles และ the sampling ใช้เวลา 15 clock cycles บน the three ADCs, ดังนั้น 17 clock cycles จะแยก conversions บน ADC1, ADC2 and ADC3).

ถ้า the CONT bit ถูกเซ็ตบนทั้ง ADC1, ADC2 and ADC3, the selected regular channels ของทุก ADCs จะถูกแปลงอย่างต่อเนื่องไป.

Note: ถ้า the conversion sequence ถูกอินเตอร์รัพท์ (ตัวอย่างเช่นเมื่อ DMA end of transfer เกิดขึ้น), the multi-ADC
         sequencer ต้องถูกรีเซ็ตโดยการกำหนดค่ามันใน independent mode ก่อน (bits DUAL[4:0] = 00000) ก่อนที่จะโปรแกรม
         ใหม่เป็น the interleaved mode.


ในโหมดนี้ a DMA request ถูกสร้างแต่ละครั้งที่ 2 data items มีให้ใช้งาน, (ถ้า the DMA[1:0] bits ใน the ADC_CCR register เท่ากับ 0b10). The request ก่อนอื่นจะส่งถ่าย the first converted data ที่เก็บใน the lower half-word ของ the ADC_CDR 32-bit register ไปยัง SRAM, จากนั้นมันจะส่งถ่าย the second converted data ที่เก็บใน ADC_CDR’s upper half-word to SRAM.

ลำดับเป็นดังต่อไปนี้ :
•   1st request: ADC_CDR[31:0] = ADC2_DR[15:0] | ADC1_DR[15:0]
•   2nd request: ADC_CDR[31:0] = ADC1_DR[15:0] | ADC3_DR[15:0]
•   3rd request: ADC_CDR[31:0] = ADC3_DR[15:0] | ADC2_DR[15:0]
•   4th request: ADC_CDR[31:0] = ADC2_DR[15:0] | ADC1_DR[15:0], ...

(https://i.imgur.com/cfohuRY.png)
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 09, 2022, 07:01:21 am
15.9.4 Alternate trigger mode

โหมดนี้สามารถถูกสตาร์ทเฉพาะบน an injected group. The source of external trigger มาจาก the injected group multiplexer of ADC1

Note: Regular conversions สามารถถูกเปิดใช้งานบน ADCs หนึ่งหรือทั้งหมด. ในกรณีนี้ the regular conversions เป็นอิสระจากกัน.
          A regular conversion ถูกอินเตอร์รัพท์เมื่อ the ADC ต้องกระทำ an injected conversion. มันจะกลับมาทำงานต่อเมื่อ the
          injected conversion สำเร็จ.

          ถ้า the conversion sequence ถูกอินเตอร์รัพท์ (ตัวอย่างเช่นเมื่อ DMA end of transfer เกิดขึ้น), the multi-ADC
          sequencer ต้องถูกรีเซ็ตโดยการกำหนดค่ามันใน independent mode ก่อน (bits DUAL[4:0] = 00000) ก่อนที่จะโปรแกรม
          ใหม่เป็น the interleaved mode.

          The time interval ระหว่าง 2 trigger events ต้องมากกว่าหรือเท่ากับ 1 ADC clock period. The minimum time
          interval ระหว่าง 2 trigger events ที่สตาร์ท conversions บน the same ADC เป็นอย่างเดียวกันกับใน the single ADC
          mode.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 09, 2022, 07:51:29 am
Dual ADC mode

•   เมื่อ the 1st trigger เกิดขึ้น, ทุก injected ADC1 channels ใน the group ถูกแปลง
•   เมื่อ the 2nd trigger เกิดขึ้น, ทุก injected ADC2 channels ใน the group ถูกแปลง
•   และต่อไป

A JEOC interrupt, ถ้าเปิดใช้งาน, ถูกสร้างหลังจากทุก injected ADC1 channels ใน the group ถูกแปลงแล้ว.

A JEOC interrupt, ถ้าเปิดใช้งาน, ถูกสร้างหลังจากทุก injected ADC2 channels ใน the group ถูกแปลงแล้ว.

ถ้า external trigger อื่นอีกตัวหนึ่งเกิดขึ้นหลังจากทุก injected channels ใน the group ถูกแปลงแล้วจากนั้น the alternate trigger process จะสตาร์ทใหม่โดยการแปลง the injected ADC1 channels ใน the group.
(https://i.imgur.com/kSOjBzp.png)

ถ้า the injected discontinuous mode ถูกเปิดใช้งานสำหรับทั้ง ADC1 and ADC2:
•   เมื่อ the 1st trigger เกิดขึ้น, the first injected ADC1 channel ถูกแปลง.
•   เมื่อ the 2nd trigger เกิดขึ้น, the first injected ADC2 channel ถูกแปลง.
•   และต่อไป

A JEOC interrupt, ถ้าเปิดใช้งาน, ถูกสร้างหลังจากทุก injected ADC1 channels ใน the group ถูกแปลงแล้ว.

A JEOC interrupt, ถ้าเปิดใช้งาน, ถูกสร้างหลังจากทุก injected ADC2 channels ใน the group ถูกแปลงแล้ว.

ถ้า external trigger อื่นอีกตัวหนึ่งเกิดขึ้นหลังจากทุก injected channels ใน the group ถูกแปลงแล้วจากนั้น the alternate trigger process จะสตาร์ทใหม่.
(https://i.imgur.com/UPYj5nF.png)
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 09, 2022, 08:50:07 am
Triple ADC mode

•   เมื่อ the 1st trigger เกิดขึ้น, ทุก injected ADC1 channels ใน the group ถูกแปลง
•   เมื่อ the 2nd trigger เกิดขึ้น, ทุก injected ADC2 channels ใน the group ถูกแปลง
•   เมื่อ the 3rd trigger เกิดขึ้น, ทุก injected ADC3 channels ใน the group ถูกแปลง
•   และต่อไป

A JEOC interrupt, ถ้าเปิดใช้งาน, ถูกสร้างหลังจากทุก injected ADC1 channels ใน the group ถูกแปลงแล้ว.

A JEOC interrupt, ถ้าเปิดใช้งาน, ถูกสร้างหลังจากทุก injected ADC2 channels ใน the group ถูกแปลงแล้ว.

A JEOC interrupt, ถ้าเปิดใช้งาน, ถูกสร้างหลังจากทุก injected ADC3 channels ใน the group ถูกแปลงแล้ว.

ถ้า external trigger อื่นอีกตัวหนึ่งเกิดขึ้นหลังจากทุก injected channels ใน the group ถูกแปลงแล้วจากนั้น the alternate trigger process จะสตาร์ทใหม่โดยการแปลง the injected ADC1 channels ใน the group.
(https://i.imgur.com/a1pBgfg.png)
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 09, 2022, 09:42:41 am
15.9.6 Combined regular simultaneous + alternate trigger mode

มันเป็นไปได้ที่จะอินเตอร์รัพท์ the simultaneous conversion of a regular group เพื่อสตาร์ท the alternate trigger conversion of an injected group. Figure 90 แสดงพฤติกรรมของ an alternate trigger อินเตอร์รัพท์  a simultaneous regular conversion.

The injected alternate conversion ถูกสตาร์ททันทีหลังจาก the injected event. ถ้า regular conversion กำลังรันอยู่แล้ว, เพื่อให้แน่ใจว่า synchronization หลังจาก the injected conversion, the regular conversion ของทุก (master/slave) ADCs จะถูกหยุดและกลับมาทำงานต่ออย่างซิงโครไนส์ที่ the end of the injected conversion.

Note: ใน combined regular simultaneous + alternate trigger mode, ตัวหนึ่งต้องแปลง sequences ที่มีความยาวเท่ากันหรือ
          ทำให้แน่ใจว่าช่วงเวลาระหว่าง triggers นานกว่า the long conversion time ของ the 2 sequences (Dual ADC mode) /3
          sequences (Triple ADC mode). มิฉะนั้น, the ADC ที่มี the shortest sequence อาจสตาร์ทซ้ำในขณะที่ the ADC ที่มี
          the longest sequence กำลังเสร็จสมบูรณ์ the previous conversions.

          ถ้า the conversion sequence ถูกอินเตอร์รัพท์ (ตัวอย่างเช่นเมื่อ DMA end of transfer เกิดขึ้น), the multi-ADC
          sequencer ต้องถูกรีเซ็ตโดยการกำหนดค่ามันใน independent mode ก่อน (bits DUAL[4:0] = 00000) ก่อนที่จะโปรแกรม
          ใหม่เป็น the interleaved mode.

(https://i.imgur.com/Ttr0g8O.png)

ถ้า a trigger เกิดขึ้นในระหว่าง an injected conversion ที่อินเตอร์รัพท์ a regular conversion แล้ว, มันจะถูกเพิกเฉย. Figure 91 แสดง the behavior ในกรณีนี้ (2nd trigger ถูกเพิกเฉย).
(https://i.imgur.com/GEUBkte.png)
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 10, 2022, 11:19:23 am
15.10 Temperature sensor

The temperature sensor สามารถถูกใช้วัด the ambient temperature (TA) ของ the device.
•   บน STM32F75xxx and STM32F74xxx devices, the temperature sensor ถูกต่อภายในไปยัง input channel,
     ADC1_IN18, เช่นเดียวกันกับ VBAT: ADC1_IN18 ถูกใช้เพื่อแปลง the sensor output voltage หรือ VBAT ไปเป็น a digital
     value. มีเพียง one conversion, temperature sensor หรือ VBAT, ต้องถูกเลือกในแต่ละครั้ง. เมื่อ the temperature sensor
     และ the VBAT conversion ถูกเซ็ตพร้อมกัน, มีเพียง the VBAT conversion เท่านั้นที่ถูกดำเนินการ.

Figure 92 แสดง the block diagram ของ the temperature sensor.

เมื่อไม่ถูกใช้, the sensor สามารถถูกเอาไว้อยู่ใน power down mode.

Note: The TSVREFE bit ต้องถูกเซ็ตเพื่อเปิดใช้งาน the conversion ของทั้งสอง internal channels: the ADC1_IN18
          (temperature sensor) และ the ADC1_IN17 (VREFINT).


Main features

•   Supported temperature range: –40 to 125 °C
•   Precision: ±1.5 °C
(https://i.imgur.com/Iw2LNUE.png)

Reading the temperature

เพื่อใช้ the sensor:
3.   เลือก ADC1_IN18 input channel.
4.   เลือก a sampling time ให้ใหญ่กว่า the minimum sampling time ที่ระบุใน the datasheet.
5.   เซ็ต the TSVREFE bit ใน the ADC_CCR register เพื่อปลุก the temperature sensor จาก power down mode
6.   สตาร์ท the ADC conversion โดยการเซ็ต the SWSTART bit (หรือโดย external trigger)
7.   อ่าน the resulting VSENSE data ใน the ADC data register
8.   คำนวณ the temperature โดยใช้ the following formula:
          Temperature (in °C) = {(VSENSE – V25) / Avg_Slope} + 25
           โดยที่ :
     –   V25 = VSENSE value สำหรับ 25° C
     –   Avg_Slope = ความชันเฉลี่ยของ the temperature เทียบ VSENSE curve (ถูกให้เป็น mV/°C หรือ μV/°C)
     อ้างอิงถึง the datasheet electrical characteristics section สำหรับ the actual values ของ V25 และ Avg_Slope.

Note: The sensor มี a startup time หลังจากการปลุกจาก power down mode ก่อนมันสามารถเอาท์พุท VSENSE ที่ the correct
          level. The ADC มี a startup time หลังจาก power-on ด้วย, ดังนั้นเพื่อให้ the delay ต่ำที่สุด, the ADON and TSVREFE
          bits ควรถูกเซ็ตที่ the same time.


The temperature sensor output voltage จะเปลี่ยนเป็นเส้นตรงตาม temperature. The offset ของ linear function นี้ขึ้นอยู่กับแต่ละ chip เนื่องจาก process variation (สูงถึง 45 °C จาก chip หนึ่งไปยัง chip อื่น).

The internal temperature sensor เหมาะมากกว่าสำหรับ applications ที่ตรวจจับ temperature variations แทน absolute temperatures. ถ้า accurate temperature reading ถูกต้องการ, an external temperature sensor ควรถูกใช้.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 10, 2022, 11:21:43 am
15.11 Battery charge monitoring

The VBATE bit ใน the ADC_CCR register ถูกใช้เพื่อสวิทช์ไปยัง the battery voltage. ตามที่ VBAT voltage ควรสูงกว่า VDDA, เพื่อให้แน่ใจว่า the correct operation ของ the ADC, the VBAT pin ถูกต่อภายในไปยัง a bridge divider.

เมื่อ the VBATE ถูกเซ็ต, the bridge ถูกเปิดใช้งานโดยอัตโนมัติเพื่อต่อ:
•   VBAT/4 เข้ากับ the ADC1_IN18 input channel

Note: The VBAT และ temperature sensor ถูกต่อไปยัง the same ADC internal channel (ADC1_IN18). มีเพียง one
          conversion, อย่างใดอย่างหนึ่ง temperature sensor หรือ VBAT, ต้องถูกเลือกในแต่ละครั้ง. เมื่อทั้งสอง conversion ถูกเปิดใช้
          งานพร้อมกัน, มีเพียง the VBAT conversion เท่านั้นที่ถูกดำนินการ.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 10, 2022, 11:22:44 am
15.12 ADC interrupts

An interrupt สามารถถูกสร้างบน the end of conversion สำหรับ regular and injected groups, เมื่อ the analog watchdog status bit ถูกเซ็ตและเมื่อ the overrun status bit ถูกเซ็ต. interrupt enable bits ที่แยกกันมีให้ใช้งานเพื่อให้มีความยืดหยุ่น.

มีแฟล็กอื่นอีกสองแฟล็กอยู่ใน the ADC_SR register, แต่ไม่มีอินเตอร์รัปต์ใดที่เกี่ยวข้องกับพวกมัน:
(https://i.imgur.com/SxcQIvU.png)
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 11, 2022, 07:14:36 am
15.13 ADC registers

อ้างถึง Section 1.2 ในหน้า 62 สำหรับรายการตัวย่อที่ใช้ใน register descriptions.

The peripheral registers ต้องถูกเขียนที่ word level (32 bits). Read accesses สามารถถูกทำโดย bytes (8 bits), half-words (16 bits) or words (32 bits).

15.13.1 ADC status register (ADC_SR)

Address offset: 0x00
Reset value: 0x0000 0000

(https://i.imgur.com/XHmSTuT.png)

Bits 31:6 สงวนไว้, ต้องถูกเก็บไว้ที่ reset value.

Bit 5 OVR: Overrun
     บิตนี้ถูกเซ็ตโดย hardware เมื่อ data สูญหาย (อย่างใดอย่างหนึ่งใน single mode หรือใน dual/triple mode). มันถูกเคลียร์โดย
     software. Overrun detection ถูกเปิดใช้งานเฉพาะเมื่อ DMA = 1 หรือ EOCS = 1.
     0: ไม่มี overrun เกิดขึ้น
     1: Overrun เกิดขึ้นแล้ว

Bit 4 STRT: Regular channel start flag
     บิตนี้ถูกเซ็ตโดย hardware เมื่อ regular channel conversion สตาร์ท. มันถูกเคลียร์โดย software.
     0: ไม่มี regular channel conversion สตาร์ท
     1: Regular channel conversion สตาร์ทแล้ว

Bit 3 JSTRT: Injected channel start flag
     บิตนี้ถูกเซ็ตโดย hardware เมื่อ injected group conversion สตาร์ท. มันถูกเคลียร์โดย software.
     0: ไม่มี injected group conversion สตาร์ท
     1: Injected group conversion สตาร์ทแล้ว

Bit 2 JEOC: Injected channel end of conversion
     บิตนี้ถูกเซ็ตโดย hardware ที่ the end of the conversion ของ all injected channels ใน the group. มันถูกเคลียร์โดย
     software.
     0: Conversion ไม่เสร็จสมบูรณ์
     1: Conversion เสร็จสมบูรณ์

Bit 1 EOC: Regular channel end of conversion
     บิตนี้ถูกเซ็ตโดย hardware ที่ the end of the conversion ของ a regular group ของ channels. มันถูกเคลียร์โดย software
     หรือโดยการอ่าน the ADC_DR register.
     0: Conversion ไม่เสร็จสมบูรณ์ (EOCS=1), หรือ sequence of conversions ไม่เสร็จสมบูรณ์ (EOCS=0)
     1: Conversion เสร็จสมบูรณ์ (EOCS=1), หรือ sequence of conversions เสร็จสมบูรณ์ (EOCS=0)

Bit 0 AWD: Analog watchdog flag
     บิตนี้ถูกเซ็ตโดย hardware เมื่อ the converted voltage ข้าม the values ที่โปรแกรมใน the ADC_LTR and ADC_HTR
     registers. มันถูกเคลียร์โดย software.
     0: ไม่มี analog watchdog event เกิดขึ้น
     1: Analog watchdog event เกิดขึ้นแล้ว
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 11, 2022, 10:24:16 am
15.13.2 ADC control register 1 (ADC_CR1)

Address offset: 0x04
Reset value: 0x0000 0000

(https://i.imgur.com/dTeMoXn.png)

Bits 31:27 Reserved, must be kept at reset value.

Bit 26 OVRIE: Overrun interrupt enable
     บิตนี้ถูกเซ็ตและเคลียร์โดย software เพื่อเปิดใช้งาน/ปิดใช้งาน the Overrun interrupt.
     0: Overrun interrupt ถูกปิดใช้งาน
     1: Overrun interrupt ถูกเปิดใช้งาน. An interrupt ถูกสร้างเมื่อ the OVR bit ถูกเซ็ต.

Bits 25:24 RES[1:0]: Resolution
     บิตเหล่านี้ถูกเขียนโดย software เพื่อเลือก the resolution of the conversion.
     00: 12-bit (minimum 15 ADCCLK cycles)
     01: 10-bit (minimum 13 ADCCLK cycles)
     10: 8-bit (minimum 11 ADCCLK cycles)
     11: 6-bit (minimum 9 ADCCLK cycles)

Bit 23 AWDEN: Analog watchdog enable on regular channels
     บิตนี้ถูกเซ็ตและเคลียร์โดย software.
     0: Analog watchdog ถูกปิดใช้งานบน regular channels
     1: Analog watchdog ถูกเปิดใช้งานบน regular channels

Bit 22 JAWDEN: Analog watchdog enable on injected channels
     บิตนี้ถูกเซ็ตและเคลียร์โดย software.
     0: Analog watchdog ถูกปิดใช้งานบน injected channels
     1: Analog watchdog ถูกเปิดใช้งานบน injected channels

Bits 21:16 Reserved, must be kept at reset value.

Bits 15:13 DISCNUM[2:0]: Discontinuous mode channel count
     บิตเหล่านี้ถูกเขียนโดย software เพื่อกำหนดจำนวนของ regular channels ที่จะถูกแปลงใน discontinuous mode, หลังจากการรับ
     an external trigger.
     000: 1 channel
     001: 2 channels
     ...
     111: 8 channels

Bit 12 JDISCEN: Discontinuous mode on injected channels
     บิตนี้ถูกเซ็ตและเคลียร์โดย software เพื่อเปิดใช้งาน/ปิดใช้งาน discontinuous mode บน the injected channels ของ a group.
     0: Discontinuous mode on injected channels ถูกปิดใช้งาน
     1: Discontinuous mode on injected channels ถูกเปิดใช้งาน
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 11, 2022, 11:00:14 am
Bit 11 DISCEN: Discontinuous mode on regular channels
     บิตนี้ถูกเซ็ตและเคลียร์โดย software เพื่อเปิดใช้งาน/ปิดใช้งาน Discontinuous mode บน regular channels.
     0: Discontinuous mode on regular channels ถูกปิดใช้งาน
     1: Discontinuous mode on regular channels ถูกเปิดใช้งาน

Bit 10 JAUTO: Automatic injected group conversion
     บิตนี้ถูกเซ็ตและเคลียร์โดย software เพื่อเปิดใช้งาน/ปิดใช้งาน automatic injected group conversion หลังจาก regular group
     conversion.
     0: Automatic injected group conversion ถูกปิดใช้งาน
     1: Automatic injected group conversion ถูกเปิดใช้งาน

Bit 9 AWDSGL: Enable the watchdog on a single channel in scan mode
     บิตนี้ถูกเซ็ตและเคลียร์โดย software เพื่อเปิดใช้งาน/ปิดใช้งาน the analog watchdog บน the channel ที่ระบุโดย the
     AWDCH[4:0] bits.
     0: Analog watchdog ถูกเปิดใช้งานบนทุก channels
     1: Analog watchdog ถูกเปิดใช้งานบน a single channel

Bit 8 SCAN: Scan mode
     บิตนี้ถูกเซ็ตและเคลียร์โดย software เพื่อเปิดใช้งาน/ปิดใช้งาน the Scan mode. ใน Scan mode, the inputs ที่เลือกผ่านทาง the
     ADC_SQRx or ADC_JSQRx registers จะถูกแปลง.
     0: Scan mode ถูกปิดใช้งาน
     1: Scan mode ถูกเปิดใช้งาน
     Note: An EOC interrupt ถูกสร้างถ้า the EOCIE bit ถูกเซ็ต:
     –   ที่ the end ของแต่ละ regular group sequence ถ้า the EOCS bit ถูกเคลียร์เป็น 0
     –   ที่ the end ของแต่ละ regular channel conversion ถ้า the EOCS bit ถูกเซ็ตเป็น 1
     Note: A JEOC interrupt ถูกสร้างเฉพาะบน the end of conversion ของ the last channel ถ้า the JEOCIE bit ถูกเซ็ต.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 11, 2022, 11:27:37 am
Bit 7 JEOCIE: Interrupt enable for injected channels
     บิตนี้ถูกเซ็ตและเคลียร์โดย software เพื่อเปิดใช้งาน/ปิดใช้งาน the end of conversion interrupt สำหรับ injected channels.
     0: JEOC interrupt ถูกปิดใช้งาน
     1: JEOC interrupt ถูกเปิดใช้งาน. An interrupt ถูกสร้างเมื่อ the JEOC bit ถูกเซ็ต.

Bit 6 AWDIE: Analog watchdog interrupt enable
     บิตนี้ถูกเซ็ตและเคลียร์โดย software เพื่อเปิดใช้งาน/ปิดใช้งาน the analog watchdog interrupt.
     0: Analog watchdog interrupt ถูกปิดใช้งาน
     1: Analog watchdog interrupt ถูกเปิดใช้งาน

Bit 5 EOCIE: Interrupt enable for EOC
     บิตนี้ถูกเซ็ตและเคลียร์โดย software เพื่อเปิดใช้งาน/ปิดใช้งาน the end of conversion interrupt.
     0: EOC interrupt ถูกปิดใช้งาน
     1: EOC interrupt ถูกเปิดใช้งาน. An interrupt ถูกสร้างเมื่อ the EOC bit ถูกเซ็ต.

Bits 4:0 AWDCH[4:0]: Analog watchdog channel select bits
     บิตเหล่านี้ถูกเซ็ตและเคลียร์โดย software. พวกมันเลือก the input channel ที่จะถูกป้องกันโดย the analog watchdog.
     Note: 00000: ADC analog input Channel0
                00001: ADC analog input Channel1
                ...
                01111: ADC analog input Channel15
                10000: ADC analog input Channel16
                10001: ADC analog input Channel17
                10010: ADC analog input Channel18
                ค่าอื่นถูกสงวนไว้
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 12, 2022, 06:01:46 am
15.13.3 ADC control register 2 (ADC_CR2)

Address offset: 0x08
Reset value: 0x0000 0000

(https://i.imgur.com/5BXqArR.png)

Bit 31 Reserved, must be kept at reset value.

Bit 30 SWSTART: Start conversion of regular channels
     บิตนี้ถูกเซ็ตโดย software เพื่อสตาร์ท conversion และถูกเคลียร์โดย hardware ทันทีที่ the conversion สตาร์ท.
     0: Reset state
     1: สตาร์ท conversion of regular channels
   Note: บิตนี้สามารถถูกเซ็ตเฉพาะเมื่อ ADON = 1 มิฉะนั้นจะไม่มี conversion ถูกเริ่มงาน.

Bits 29:28 EXTEN: External trigger enable for regular channels
     บิตเหล่านี้ถูกเซ็ตและเคลียร์โดย software เพื่อเลือก the external trigger polarity และเปิดใช้งาน the trigger of a regular
     group.
     00: Trigger detection disabled
     01: Trigger detection on the rising edge
     10: Trigger detection on the falling edge
     11: Trigger detection on both the rising and falling edges

Bits 27:24 EXTSEL[3:0]: External event select for regular group
     บิตเหล่านี้เลือก the external event ที่ใช้เพื่อทริก the start of conversion ของ a regular group:
     0000: Timer 1 CH1
     0001: Timer 1 CH2
     0010: Timer 1 CH3
     0011: Timer 2 CH2
     0100: Timer 5 TRGO
     0101: Timer 4 CH4
     0110: Timer 3 CH4
     0111: Timer 8 TRGO
     1000: Timer 8 TRGO(2)
     1001: Timer 1 TRGO
     1010: Timer 1 TRGO(2)
     1011: Timer 2 TRGO
     1100: Timer 4 TRGO
     1101: Timer 6 TRGO
     1110: Reserved
     1111: EXTI line11

Bit 23 Reserved, must be kept at reset value.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 12, 2022, 07:28:05 am
Bit 22 JSWSTART: Start conversion of injected channels
     บิตนี้ถูกเซ็ตโดย software เพื่อสตาร์ท conversion และถูกเคลียร์โดย hardware ทันทีที่ the conversion สตาร์ท.
     0: Reset state
     1: สตาร์ท conversion of injected channels
   Note: บิตนี้สามารถถูกเซ็ตเฉพาะเมื่อ ADON = 1 มิฉะนั้นจะไม่มี conversion ถูกเริ่มงาน.

Bits 21:20 JEXTEN: External trigger enable for injected channels
     บิตเหล่านี้ถูกเซ็ตและเคลียร์โดย software เพื่อเลือก the external trigger polarity และเปิดใช้งาน the trigger of an injected
     group.
     00: Trigger detection disabled
     01: Trigger detection on the rising edge
     10: Trigger detection on the falling edge
     11: Trigger detection on both the rising and falling edges

Bits 19:16 JEXTSEL[3:0]: External event select for injected group
     บิตเหล่านี้เลือก the external event ที่ใช้เพื่อทริก the start of conversion ของ an injected group:
     0000: Timer 1 TRGO
     0001: Timer 1 CH4
     0010: Timer 2 TRGO
     0011: Timer 2 CH1
     0100: Timer 3 CH4
     0101: Timer4 TRGO
     0110: Reserved
     0111: Timer 8 CH4
     1000: Timer 1 TRGO(2)
     1001: Timer 8 TRGO
     1010: Timer 8 TRGO(2)
     1011: Timer 3 CH3
     1100: Timer 5 TRGO
     1101: Timer 3 CH1
     1110: Timer 6 TRGO
     1111: Reserved

Bits 15:12 Reserved, must be kept at reset value.

Bit 11 ALIGN: Data alignment
     บิตนี้ถูกเซ็ตและเคลียร์โดย software. ดูที่ Figure 77 and Figure 78.
     0: Right alignment
     1: Left alignment

Bit 10 EOCS: End of conversion selection
     บิตนี้ถูกเซ็ตและเคลียร์โดย software.
     0:The EOC bit ถูกเซ็ตที่ the end ของแต่ละ sequence of regular conversions. Overrun detection ถูกเปิดใช้งานเฉพาะถ้า
         DMA=1.
     1: The EOC bit ถูกเซ็ตที่ the end ของแต่ละ regular conversion. Overrun detection ถูกเปิดใช้งาน.

Bit 9 DDS: DMA disable selection (for single ADC mode)
     บิตนี้ถูกเซ็ตและเคลียร์โดย software.
     0: ไม่มี new DMA request ถูกปล่อยออกหลังจาก the last transfer (ตามที่กำหนดค่าใน the DMA controller)
     1: DMA requests ถูกปล่อยออกตราบเท่าที่ data ถูกแปลงและ DMA=1
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 12, 2022, 08:35:21 am
Bit 8 DMA: Direct memory access mode (for single ADC mode)
     บิตนี้ถูกเซ็ตและเคลียร์โดย software. ดูที่ the DMA controller chapter สำหรับรายละเอียดที่มากขึ้น.
     0: DMA mode ถูกปิดใช้งาน
     1: DMA mode ถูกเปิดใช้งาน

Bits 7:2 Reserved, must be kept at reset value.

Bit 1 CONT: Continuous conversion
     บิตนี้ถูกเซ็ตและเคลียร์โดย software. ถ้ามันถูกเซ็ต, conversion จะเกิดขึ้นอย่างต่อเนื่องจนกระทั่งมันถูกเคลียร์.
     0: Single conversion mode
     1: Continuous conversion mode

Bit 0 ADON: A/D Converter ON / OFF
     บิตนี้ถูกเซ็ตและเคลียร์โดย software.
     0: ปิดใช้งาน ADC conversion และไปยัง power down mode
     1: เปิดใช้งาน ADC
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 13, 2022, 06:46:16 am
15.13.4 ADC sample time register 1 (ADC_SMPR1)

Address offset: 0x0C
Reset value: 0x0000 0000

(https://i.imgur.com/4yHj4xc.png)

Bits 31: 27 Reserved, must be kept at reset value.

Bits 26:0 SMPx[2:0]: Channel x sampling time selection
      บิตเหล่านี้ถูกเขียนโดย software เพื่อเลือก the sampling time เป็นรายตัวสำหรับแต่ละ channel. ในระหว่าง sampling cycles,
      the channel selection bits ต้องยังคงไม่ถูกเปลี่ยน.
Note: 000: 3 cycles
           001: 15 cycles
           010: 28 cycles
           011: 56 cycles
           100: 84 cycles
           101: 112 cycles
           110: 144 cycles
           111: 480 cycles
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 13, 2022, 06:54:03 am
15.13.5 ADC sample time register 2 (ADC_SMPR2)

Address offset: 0x10
Reset value: 0x0000 0000

(https://i.imgur.com/6EpJRcR.png)

Bits 31:30 Reserved, must be kept at reset value.

Bits 29:0 SMPx[2:0]: Channel x sampling time selection
     บิตเหล่านี้ถูกเขียนโดย software เพื่อเลือก the sampling time เป็นรายตัวสำหรับแต่ละ channel. ในระหว่าง sampling cycles,
     the channel selection bits ต้องยังคงไม่ถูกเปลี่ยน.
Note: 000: 3 cycles
           001: 15 cycles
           010: 28 cycles
           011: 56 cycles
           100: 84 cycles
           101: 112 cycles
           110: 144 cycles
           111: 480 cycles
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 13, 2022, 08:08:28 am
15.13.6 ADC injected channel data offset register x (ADC_JOFRx) (x=1..4)

Address offset: 0x14-0x20
Reset value: 0x0000 0000

(https://i.imgur.com/d0eKtTc.png)

Bits 31:12 Reserved, must be kept at reset value.

Bits 11:0 JOFFSETx[11:0]: Data offset for injected channel x
     บิตเหล่านี้ถูกเขียนโดย software เพื่อกำหนด the offset ที่จะลบออกจาก the raw converted data เมื่อแปลง injected
     channels. The conversion result สามารถถูกอ่านจากใน the ADC_JDRx registers.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 14, 2022, 05:43:37 am
15.13.7 ADC watchdog higher threshold register (ADC_HTR)

Address offset: 0x24
Reset value: 0x0000 0FFF

(https://i.imgur.com/TgHPmtL.png)

Bits 31:12 Reserved, must be kept at reset value.

Bits 11:0 HT[11:0]: Analog watchdog higher threshold
     บิตเหล่านี้ถูกเขียนโดย software เพื่อกำหนดขอบเขตบนสำหรับ the analog watchdog.

Note: The software สามารถเขียนไปยังรีจิสเตอร์เหล่านี้ได้เมื่อ an ADC conversion กำหนดดำเนินการอยู่. The programmed value
          จะมีผลเมื่อ the next conversion เสร็จสมบูรณ์. การเขียนไปยัง register นี้ถูกดำเนินการด้วย a write delay ที่สามารถสร้าง
          ความไม่แน่นอนเกี่ยวกับ the effective time ที่ซึ่ง the new value ถูกโปรแกรม.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 14, 2022, 05:50:43 am
15.13.8 ADC watchdog lower threshold register (ADC_LTR)

Address offset: 0x28
Reset value: 0x0000 0000

(https://i.imgur.com/chLiqGX.png)

Bits 31:12 Reserved, must be kept at reset value.

Bits 11:0 LT[11:0]: Analog watchdog lower threshold
     บิตเหล่านี้ถูกเขียนโดย software เพื่อกำหนดขอบเขตล่างสำหรับ the analog watchdog.

Note: The software สามารถเขียนไปยังรีจิสเตอร์เหล่านี้ได้เมื่อ an ADC conversion กำหนดดำเนินการอยู่. The programmed value
          จะมีผลเมื่อ the next conversion เสร็จสมบูรณ์. การเขียนไปยัง register นี้ถูกดำเนินการด้วย a write delay ที่สามารถสร้าง
          ความไม่แน่นอนเกี่ยวกับ the effective time ที่ซึ่ง the new value ถูกโปรแกรม.

Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 14, 2022, 07:27:07 am
15.13.9 ADC regular sequence register 1 (ADC_SQR1)

Address offset: 0x2C
Reset value: 0x0000 0000

(https://i.imgur.com/Whba4Ep.png)

Bits 31:24 Reserved, must be kept at reset value.

Bits 23:20 L[3:0]: Regular channel sequence length
     บิตเหล่านี้ถูกเขียนโดย software เพื่อกำหนดจำนวนทั้งหมดของ conversions ใน the regular channel conversion sequence.
     0000: 1 conversion
     0001: 2 conversions
     ...
     1111: 16 conversions

Bits 19:15 SQ16[4:0]: 16th conversion in regular sequence
     บิตเหล่านี้ถูกเขียนโดย software ด้วย the channel number (0..18) ที่กำหนดเป็นลำดับที่ 16 ใน the conversion sequence.

Bits 14:10 SQ15[4:0]: 15th conversion in regular sequence

Bits 9:5 SQ14[4:0]: 14th conversion in regular sequence

Bits 4:0 SQ13[4:0]: 13th conversion in regular sequence
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 14, 2022, 07:36:25 am
15.13.10 ADC regular sequence register 2 (ADC_SQR2)

Address offset: 0x30
Reset value: 0x0000 0000

(https://i.imgur.com/SpWN36C.png)

Bits 31:30 Reserved, must be kept at reset value.

Bits 29:26 SQ12[4:0]: 12th conversion in regular sequence
     บิตเหล่านี้ถูกเขียนโดย software ด้วย the channel number (0..18) ที่กำหนดเป็นลำดับที่ 12 ใน the sequence ที่จะถูกแปลง.

Bits 24:20 SQ11[4:0]: 11th conversion in regular sequence

Bits 19:15 SQ10[4:0]: 10th conversion in regular sequence

Bits 14:10 SQ9[4:0]: 9th conversion in regular sequence

Bits 9:5 SQ8[4:0]: 8th conversion in regular sequence

Bits 4:0 SQ7[4:0]: 7th conversion in regular sequence
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 14, 2022, 07:41:49 am
15.13.11 ADC regular sequence register 3 (ADC_SQR3)

Address offset: 0x34
Reset value: 0x0000 0000

(https://i.imgur.com/mtEWKf1.png)

Bits 31:30 Reserved, must be kept at reset value.

Bits 29:25 SQ6[4:0]: 6th conversion in regular sequence
     บิตเหล่านี้ถูกเขียนโดย software ด้วย the channel number (0..18) ที่กำหนดเป็นลำดับที่ 6 ใน the sequence ที่จะถูกแปลง.

Bits 24:20 SQ5[4:0]: 5th conversion in regular sequence

Bits 19:15 SQ4[4:0]: 4th conversion in regular sequence

Bits 14:10 SQ3[4:0]: 3rd conversion in regular sequence

Bits 9:5 SQ2[4:0]: 2nd conversion in regular sequence

Bits 4:0 SQ1[4:0]: 1st conversion in regular sequence
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 14, 2022, 08:52:45 am
15.13.12 ADC injected sequence register (ADC_JSQR)

Address offset: 0x38
Reset value: 0x0000 0000

(https://i.imgur.com/FA2cXYN.png)

Bits 31:22 Reserved, must be kept at reset value.

Bits 21:20 JL[1:0]: Injected sequence length
     บิตเหล่านี้ถูกเขียนโดย software เพื่อกำหนดจำนวนทั้งหมดของ conversions ใน the injected channel conversion sequence.
     00: 1 conversion
     01: 2 conversions
     10: 3 conversions
     11: 4 conversions

Bits 19:15 JSQ4[4:0]: 4th conversion in injected sequence (when JL[1:0]=3, see note below)
     บิตเหล่านี้ถูกเขียนโดย software ด้วย the channel number (0..18) ที่กำหนดเป็นลำดับที่ 4 ใน the sequence ที่จะถูกแปลง.

Bits 14:10 JSQ3[4:0]: 3rd conversion in injected sequence (เมื่อ JL[1:0]=3, ดู note ข้างล่าง)

Bits 9:5 JSQ2[4:0]: 2nd conversion in injected sequence (เมื่อ JL[1:0]=3, ดู note ข้างล่าง)

Bits 4:0 JSQ1[4:0]: 1st conversion in injected sequence (เมื่อ JL[1:0]=3, ดู note ข้างล่าง)

Note: เมื่อ JL[1:0]=3 (4 injected conversions in the sequencer), the ADC จะแปลง the channels ในลำดับต่อไปนี้:
          JSQ1[4:0], JSQ2[4:0], JSQ3[4:0], and JSQ4[4:0].

          เมื่อ JL=2 (3 injected conversions in the sequencer), the ADC จะแปลง the channels ในลำดับต่อไปนี้: JSQ2[4:0],
          JSQ3[4:0], and JSQ4[4:0].

          เมื่อ JL=1 (2 injected conversions in the sequencer), the ADC จะแปลง the channels โดยเริ่มจาก JSQ3[4:0], และ
          จากนั้น JSQ4[4:0].

          เมื่อ JL=0 (1 injected conversion in the sequencer), the ADC จะแปลงเฉพาะ JSQ4[4:0] channel เท่านั้น.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 14, 2022, 09:08:24 am
15.13.13 ADC injected data register x (ADC_JDRx) (x= 1..4)

Address offset: 0x3C - 0x48
Reset value: 0x0000 0000

(https://i.imgur.com/EFeC2aA.png)

Bits 31:16 Reserved, must be kept at reset value.

Bits 15:0 JDATA[15:0]: Injected data
     บิตเหล่านี้อ่านได้เพียงอย่างเดียว. พวกมันบรรจุ the conversion result จาก injected channel x. The data ถูกวางแนวชิดซ้ายหรือชิดขวา
     ตามที่แสดงใน Figure 77 และ Figure 78.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 14, 2022, 09:24:32 am
15.13.14 ADC regular data register (ADC_DR)

Address offset: 0x4C
Reset value: 0x0000 0000

(https://i.imgur.com/BhpMWA9.png)

Bits 31:16 Reserved, must be kept at reset value.

Bits 15:0 DATA[15:0]: Regular data
     บิตเหล่านี้อ่านได้เพียงอย่างเดียว. พวกมันบรรจุ the conversion result จาก the regular channels. The data ถูกวางแนวชิดซ้าย
     หรือชิดขวาตามที่แสดงใน Figure 77 และ Figure 78.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 15, 2022, 08:42:37 am
15.13.15 ADC Common status register (ADC_CSR)

Address offset: 0x00 (offset address นี้สัมพันธ์กับ ADC1 base address + 0x300)
Reset value: 0x0000 0000

รีจิสเตอร์นี้จัดให้มี an image ของ the status bits ของ ADCs ต่างๆ. อย่างไรก็ตาม มันอ่านได้เพียงอย่างเดียวและไม่อนุญาตให้เคลียร์  the different status bits. แทนด้วยแต่ละ status bit ต้องถูกเคลียร์โดยการเขียนมันเป็น 0 ใน the corresponding ADC_SR register.

(https://i.imgur.com/y5u5rdH.png)

Bits 31:22 Reserved, must be kept at reset value.

Bit 21 OVR3: Overrun flag of ADC3
     บิตนี้เป็น a copy of the OVR bit in the ADC3_SR register.

Bit 20 STRT3: Regular channel Start flag of ADC3
     บิตนี้เป็น a copy of the STRT bit in the ADC3_SR register.

Bit 19 JSTRT3: Injected channel Start flag of ADC3
     This bit is a copy of the JSTRT bit in the ADC3_SR register.

Bit 18 JEOC3: Injected channel end of conversion of ADC3
     This bit is a copy of the JEOC bit in the ADC3_SR register.

Bit 17 EOC3: End of conversion of ADC3
     This bit is a copy of the EOC bit in the ADC3_SR register.

Bit 16 AWD3: Analog watchdog flag of ADC3
     This bit is a copy of the AWD bit in the ADC3_SR register.

Bits 15:14 Reserved, must be kept at reset value.

Bit 13 OVR2: Overrun flag of ADC2
     This bit is a copy of the OVR bit in the ADC2_SR register.

Bit 12 STRT2: Regular channel Start flag of ADC2
     This bit is a copy of the STRT bit in the ADC2_SR register.

Bit 11 JSTRT2: Injected channel Start flag of ADC2
     This bit is a copy of the JSTRT bit in the ADC2_SR register.

Bit 10 JEOC2: Injected channel end of conversion of ADC2
     This bit is a copy of the JEOC bit in the ADC2_SR register.

Bit 9 EOC2: End of conversion of ADC2
     This bit is a copy of the EOC bit in the ADC2_SR register.

Bit 8 AWD2: Analog watchdog flag of ADC2
     This bit is a copy of the AWD bit in the ADC2_SR register.

Bits 7:6 Reserved, must be kept at reset value.

Bit 5 OVR1: Overrun flag of ADC1
     This bit is a copy of the OVR bit in the ADC1_SR register.

Bit 4 STRT1: Regular channel Start flag of ADC1
     This bit is a copy of the STRT bit in the ADC1_SR register.

Bit 3 JSTRT1: Injected channel Start flag of ADC1
     This bit is a copy of the JSTRT bit in the ADC1_SR register.

Bit 2 JEOC1: Injected channel end of conversion of ADC1
     This bit is a copy of the JEOC bit in the ADC1_SR register.

Bit 1 EOC1: End of conversion of ADC1
     This bit is a copy of the EOC bit in the ADC1_SR register.

Bit 0 AWD1: Analog watchdog flag of ADC1
     This bit is a copy of the AWD bit in the ADC1_SR register.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 15, 2022, 10:17:24 am
15.13.16 ADC common control register (ADC_CCR)

Address offset: 0x04 (offset address นี้สัมพันธ์กับ ADC1 base address + 0x300)
Reset value: 0x0000 0000

(https://i.imgur.com/gfbVhes.png)

Bits 31:24 Reserved, must be kept at reset value.

Bit 23 TSVREFE: Temperature sensor and VREFINT enable
     บิตนี้ถูกเซ็ตและเคลียร์โดย software เพื่อเปิดใช้งาน/ปิดใช้งาน the temperature sensor และ the VREFINT channel.
     0: Temperature sensor and VREFINT channel ถูกปิดใช้งาน
     1: Temperature sensor and VREFINT channel ถูกเปิดใช้งาน
   Note: VBATE ต้องถูกปิดใช้งานเมื่อ TSVREFE ถูกเซ็ต. ถ้าทั้งสอง bits ถูกเซ็ต, มีเพียง the VBAT conversion ที่ถูกทำ.

Bit 22 VBATE: VBAT enable
     บิตนี้ถูกเซ็ตและเคลียร์โดย software เพื่อเปิดใช้งาน/ปิดใช้งาน the VBAT channel.
     0: VBAT channel ถูกปิดใช้งาน
     1: VBAT channel ถูกเปิดใช้งาน

Bits 21:18 Reserved, must be kept at reset value.

Bits 17:16 ADCPRE: ADC prescaler
     ถูกเซ็ตและเคลียร์โดย software เพื่อเลือก the frequency ของ the clock ไปยัง the ADC. The clock ใช้ร่วมกันสำหรับทุก the
     ADCs.
     Note: 00: PCLK2 ถูกหารด้วย 2
               01: PCLK2 divided by 4
               10: PCLK2 divided by 6
               11: PCLK2 divided by 8

Bits 15:14 DMA: Direct memory access mode for multi ADC mode
     bit-field นี้ถูกเซ็ตและเคลียร์โดย software. อ้างอิงถึง the DMA controller section สำหรับรายละเอียดที่มากขึ้น.
     00: DMA mode ถูกปิดการใช้งาน
     01: DMA mode 1 enabled (2 / 3 half-words ที่ละหนึ่ง - 1 จากนั้น 2 จากนั้น 3)
     10: DMA mode 2 enabled (2 / 3 half-words ทีละคู่ - 2&1 จากนั้น 1&3 จากนั้น 3&2)
     11: DMA mode 3 enabled (2 / 3 bytes ทีละคู่ - 2&1 จากนั้น 1&3 จากนั้น 3&2)

Bit 13 DDS: DMA disable selection (for multi-ADC mode)
     บิตนี้ถูกเซ็ตและเคลียร์โดย software.
     0: ไม่มี new DMA request ถูกปล่อยออกหลังจาก the last transfer (ตามที่กำหนดค่าใน the DMA controller). DMA bits ไม่
          ถูกเคลียร์โดย hardware, อย่างไรก็ตามพวกมันต้องถูกเคลียร์แล้วและเซ็ตเป็นโหมดที่ต้องการโดย software ก่อน new DMA
          requests สามารถถูกสร้าง.
     1: DMA requests ถูกปล่อยออกตราบใดที่ data ถูกแปลงและ DMA = 01, 10 or 11.

Bit 12 Reserved, must be kept at reset value.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 15, 2022, 10:34:27 am
Bits 11:8 DELAY: Delay between 2 sampling phases
     ถูกเซ็ตและเคลียร์โดย software. บิตเหล่านี้ถูกใช้ใน dual or triple interleaved modes.
     0000: 5 * TADCCLK
     0001: 6 * TADCCLK
     0010: 7 * TADCCLK
     ...
     1111: 20 * TADCCLK

Bits 7:5 Reserved, must be kept at reset value.

Bits 4:0 MULTI[4:0]: Multi ADC mode selection
     บิตเหล่านี้ถูกเขียนโดย software เพื่อเลือก the operating mode.
  – ทุก the ADCs เป็นอิสระ:
     00000: Independent mode
  – 00001 ถึง 01001: Dual mode, ADC1 and ADC2 ทำงานร่วมกัน, ADC3 เป็นอิสระ
     00001: Combined regular simultaneous + injected simultaneous mode
     00010: Combined regular simultaneous + alternate trigger mode
     00011: Reserved
     00101: Injected simultaneous mode only
     00110: Regular simultaneous mode only
     00111: interleaved mode only
     01001: Alternate trigger mode only
  – 10001 ถึง 11001: Triple mode: ADC1, 2 and 3 ทำงานร่วมกัน
     10001: Combined regular simultaneous + injected simultaneous mode
     10010: Combined regular simultaneous + alternate trigger mode
     10011: Reserved
     10101: Injected simultaneous mode only
     10110: Regular simultaneous mode only
     10111: interleaved mode only
     11001: Alternate trigger mode only
     ชุดค่าผสมอื่น ๆ ทั้งหมดถูกสงวนไว้และต้องไม่ถูกโปรแกรมไว้
     Note: In multi mode, การเปลี่ยน channel configuration จะสร้าง an abort ที่สามารถเป็นเหตให้เกิด a loss of
               synchronization. ขอแนะนำให้ปิดใช้งาน the multi ADC mode ก่อนการเปลี่ยนการกำหนดค่าใดๆ.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 15, 2022, 10:57:20 am
15.13.17 ADC common regular data register for dual and triple modes (ADC_CDR)

Address offset: 0x08 (offset address นี้สัมพันธ์กับ ADC1 base address + 0x300)
Reset value: 0x0000 0000

(https://i.imgur.com/l1mnSm0.png)

Bits 31:16 DATA2[15:0]: 2nd data item of a pair of regular conversions
     – ใน dual mode, บิตเหล่านี้บรรจุ the regular data of ADC2. ดูที่ Dual ADC mode.
     – ใน triple mode, บิตเหล่านี้บรรจุ the regular data of ADC2, ADC1 and ADC3 สลับกัน. ดูที่ Triple ADC mode.

Bits 15:0 DATA1[15:0]: 1st data item of a pair of regular conversions
     – In dual mode, บิตเหล่านี้บรรจุ the regular data of ADC1. Refer to Dual ADC mode
     – In triple mode, บิตเหล่านี้บรรจุ the regular data of ADC1, ADC3 and ADC2 สลับกัน. ดูที่ Triple ADC mode.
Title: Re: STM32F7 15 Analog-to-digital converter (ADC)
Post by: tha on September 15, 2022, 11:07:12 am
15.13.18 ADC register map

ตารางต่อไปนี้สรุป the ADC registers.

(https://i.imgur.com/75kV2t3.png)

(https://i.imgur.com/FGj4gEy.png)

(https://i.imgur.com/6nThp7u.png)
(https://i.imgur.com/4jTTILK.png)

(https://i.imgur.com/WBFzhVk.png)