Recent Posts

Pages: [1] 2 3 ... 10
1
ไฟล์เต็มเอาได้ที่ไหน ครับ
2
ARM Processors / Re: STM32F1 USART
« Last post by tha on January 21, 2021, 08:47:46 am »
27.3.8 LIN (local interconnection network) mode

The LIN mode ถูกเลือกโดยการเซ็ต the LINEN bit in the USART_CR2 register. In LIN mode, บิตต่อไปนี้ต้องถูกเก็บที่เคลียร์:
•    STOP[1:0], CLKEN in the USART_CR2 register
•    SCEN, HDSEL and IREN in the USART_CR3 register.

LIN transmission

ขั้นตอนเดียวกันที่อธิบายไว้ใน Section 27.3.2 ต้องถูกประยุกต์ใช้สำหรับ LIN Master transmission มากกว่าสำหรับ normal USART transmission มีข้อแตกต่างดังนี้:
•    เคลียร์ the M bit เพื่อกำหนดค่า 8-bit word length.
•    เซ็ต the LINEN bit เพื่อเข้าสู่ LIN mode. ในกรณีนี้, เซ็ต the SBK bit ส่ง 13 ‘0’ bits เป็น a break character. หลังจากนั้น a
      bit ของค่า ‘1’ ถูกส่งเพื่อยอมให้ the next start detection.

LIN reception

A break detection circuit มีให้ใช้ใน the USART. The detection เป็นอิสระโดยสิ้นเชิงจาก the normal USART receiver. A break สามารถถูกตรวจพบเมื่อไหร่ก็ตามที่มันเกิดขึ้น, ในระหว่าง idle state หรือในระหว่าง a frame.

เมื่อ the receiver ถูกเปิดการใช้งาน (RE=1 in USART_CR1), the circuit มองไปที่ the RX input สำหรับ a start signal. วิธีสำหรับการตรวจพบ start bits คือวิธีเดียวกันเมื่อค้นหา break characters หรือ data. หลังจาก a start bit ถูกตรวจพบแล้ว, the circuit จะสุ่ม the next bits เหมือนกันเป๊ะสำหรับ the data (on the 8th, 9th and 10th samples). ถ้า 10 (เมื่อ the LBDL = 0 in
USART_CR2) หรือ 11 (เมื่อ LBDL=1 in USART_CR2) บิตซึ่งตามกันมาถูกตรวจพบว่าเป็น ‘0’, และถูกตามด้วย a delimiter character, the LBD flag ถูก set in USART_SR. ถ้า the LBDIE bit=1, an interrupt ถูกสร้างขึ้น. ก่อนที่จะตรวจสอบความถูกต้อง the break, the delimiter ถูกเช็คสำหรับดังมันบ่งชี้ว่า the RX line กลับคืนสู่ a high level.

ถ้า a ‘1’ ถูกสุ่มก่อน the 10 or 11 เกิดขึ้น, the break detection circuit ยกเลิก the current detection และค้นหาสำหรับ a start bit อีกครั้ง.

ถ้า the LIN mode ถูก disabled (LINEN=0), the receiver ทำงานต่อไปดั่ง normal USART, โดยปราศจากการคำนึงถึง the break detection.

ถ้า the LIN mode ถูก enabled (LINEN=1), ทันทีที่ a framing error เกิดขึ้น (เช่น stop bit ถูกตรวจพบที่ ‘0’, ซึ่งจะเป็นกรณีของ break frame ใดๆ), the receiver หยุดจนกระทั่ง the break detection circuit รับอย่างใดอย่างหนึ่ง a ‘1’, ถ้า the break word ไม่เสร็จสมบูรณ์, หรือ a delimiter character ถ้า a break ถูกตรวจพบแล้ว.

The behavior of the break detector state machine และ the break flag ถูกแสดงบน the Figure 287. Examples of break frames ถูกให้ไว้บน Figure 288.



3
ARM Processors / Re: STM32F1 USART
« Last post by tha on January 21, 2021, 07:25:03 am »
27.3.7 Parity control

Parity control (การสร้างขึ้นของ parity bit in transmission และ parity checking in reception) สามารถถูกเปิดการใช้งานโดยการเซ็ต the PCE bit in the USART_CR1 register. ขึ้นอยู่กับ the frame length ที่กำหนดโดย the M bit, the possible USART frame formats เป็นอย่างที่รายการใน Table 195.



Note: ในกรณีของ wake up โดย an address mark, the MSB bit ของ the data ถูกคำนึงถึงและไม่มี the parity bit

Even parity: the parity bit ถูกคำนวณเพื่อให้ได้จำนวนคู่ของ “1s” ภายใน the frame ที่ทำมาจาก the 7 or 8 LSB bits (ขึ้นอยู่กับว่า M เท่ากันกับ 0 or 1) และ the parity bit.

Ex: data=00110101; 4 bits set => parity bit จะเป็น 0 ถ้า even parity ถูกเลือก (PS bit in USART_CR1 = 0).

Odd parity: the parity bit ถูกคำนวณเพื่อให้ได้จำนวนคี่ของ “1s” ภายใน the frame ที่ทำมาจาก the 7 or 8 LSB bits (ขึ้นอยู่กับว่า M เท่ากันกับ 0 or 1) และ the parity bit.

Ex: data=00110101; 4 bits set => parity bit จะเป็น 0 ถ้า odd parity ถูกเลือก (PS bit in USART_CR1 = 1).

Transmission mode: ถ้า the PCE bit ถูก set ใน USART_CR1, หลังจากนั้น the MSB bit ของ the data ที่เขียนใน the data register ถูกส่งแต่ถูกเปลี่ยนโดย the parity bit (จำนวนคู่ของ “1s” ถ้า even parity ถูกเลือก (PS=0) หรือจำนวนคี่ของ “1s” ถ้า odd parity ถูกเลือก (PS=1)). ถ้า the parity check ล้มเหลว, the PE flag ถูก set ใน the USART_SR register และ an interrupt ถูกสร้างขึ้นถ้า PEIE ถูก set ใน the USART_CR1 register.
4
ARM Processors / Re: STM32F1 USART
« Last post by tha on January 20, 2021, 10:35:25 am »
Address mark detection (WAKE=1)

ในโหมดนี้, bytes ถูกรับรู้เป็น addresses ถ้า MSB ของมันเป็น ‘1’ ถ้าเป็นอย่างอื่นพวกมันถูกพิจารณาว่าเป็น data. ใน an address byte, the address ของ the targeted receiver ถูกใส่บน the 4 LSB. 4-bit word นี้ถูกเปรียบเทียบโดย the receiver กับ address ของมันซึ่งถูกโปรแกรมใน the ADD bits ใน the USART_CR2 register.

The USART เข้าสู่ mute mode เมื่อ an address character ที่ถูกรับซึ่งไม่ตรงกันกับ programmed address ของมัน. ในกรณีนี้, the RWU bit ถูก set โดย hardware. The RXNE flag ไม่ถูก set สำหรับ address byte นี้และไม่มี interrupt หรือ DMA request ถูกปล่อยออกเพราะ the USART จะเข้าสู่ mute mode.

มันออกจาก mute mode เมื่อ an address character ที่ถูกรับซึ่งตรงกันกับ the programmed address. หลังจากนั้น the RWU bit ถูกเคลียร์และ bytes ที่ตามมาถูกรับตามปกติ. The RXNE bit ถูก set สำหรับ the address character ตั้งแต่ the RWU bit ถูกเคลียร์แล้ว.

The RWU bit สามารถถูกเขียนให้เป็น 0 หรือ 1 เมื่อ the receiver buffer บรรจุ no data (RXNE=0 ใน the USART_SR register). มิฉะนั้น the write attempt จะถูกเพิกเฉย.

ตัวอย่างของ mute mode behavior โดยใช้ address mark detection ถูกให้ไว้ใน Figure 286.

5
ARM Processors / Re: STM32F1 USART
« Last post by tha on January 20, 2021, 09:32:59 am »
Idle line detection (WAKE=0)

The USART เข้าสู่ mute mode เมื่อ the RWU bit ถูกเขียนเป็น 1.

มัน wakes up เมื่อ an Idle frame ถูกตรวจพบ. แล้ว the RWU bit ถูกเคลียร์โดย hardware แต่ the IDLE bit ไม่ถูก set ใน the USART_SR register. RWU สามารถถูกเขียนเป็น 0 โดย software ได้อีกด้วย.

ตัวอย่างของ mute mode behavior โดยใช้ idle line detection ถูกให้ไว้ใน Figure 285.


6
ARM Processors / Re: STM32F1 USART
« Last post by tha on January 20, 2021, 08:15:28 am »
27.3.6 Multiprocessor communication

มีความเป็นไปได้ของ performing multiprocessor communication ด้วย the USART (หลาย USARTs ถูกต่อกันใน a network). ตัวอย่างเช่น, หนึ่งของ the USARTs สามารถเป็น the master, TX output ของมันถูกต่อถึง the RX input ของ the other USART. USART อื่นๆเป็น slaves,  TX outputs ตามลำดับของพวกมันถูกลอจิก AND เข้าด้วยกันและต่อถึง the RX input of the master.

ใน multiprocessor configurations มันมักจะเป็นที่น่าพอใจว่าเฉพาะ the intended message recipient ควรรับอย่างแข็งขัน the full message contents, ดังนั้นจึงลด redundant USART service overhead สำหรับทุก non addressed receivers.

The non addressed devices อาจถูกวางใน mute mode โดยวิธีของ the muting function. ใน mute mode:
•    ไม่มี the reception status bits ที่สามารถถูก set.
•    ทุก the receive interrupts ถูกยับยั้ง.
•    The RWU bit ใน USART_CR1 register ถูก set เป็น 1. RWU สามารถถูกควบคุมโดยอัตโนมัติโดย hardware หรือถูกเขียนโดย
      software ภายใต้เงื่อนไขบางประการ.

The USART สามารถเข้าสู่หรือออกจาก mute mode โดยใช้หนึ่งในสอง methods, ขึ้นอยู่กับ the WAKE bit ใน the USART_CR1 register:
•    Idle Line detection ถ้า the WAKE bit ถูก reset,
•    Address Mark detection ถ้า the WAKE bit ถูก set.
7
ARM Processors / Re: STM32F1 USART
« Last post by tha on January 20, 2021, 06:17:10 am »
27.3.5 USART receiver’s tolerance to clock deviation

The USART’s asynchronous receiver ทำงานได้อย่างถูกต้องเฉพาะถ้า the total clock system deviation มีขนาดเล็กกว่า the USART receiver tolerance. สาเหตุที่ทำให้เกิดผลรวม the total deviation คือ:
•    DTRA: Deviation เนื่องจาก the transmitter error (ซึ่งรวมถึง the deviation of the transmitter local oscillator อีกด้วย)
•    DQUANT: Error เนื่องจาก the baud rate quantization of the receiver
•    DREC: Deviation of the receiver’s local oscillator
•    DTCL: Deviation เนื่องจาก the transmission line (โดยทั่วไปเนื่องจาก the transceivers ที่สามารถทำให้เกิดความไม่สมมาตร
      ระหว่าง the low-to-high transition timing และ the high-to-low transition timing)

      DTRA + DQUANT + DREC + DTCL < USART receiver tolerance

The USART receiver tolerance ในการรับ data อย่างถูกต้องคือเท่ากับ the maximum tolerated deviation และขึ้นอยู่กับตัวเลือกต่อไปนี้:
•    10- or 11-bit character length ถูกกำหนดโดย the M bit ใน the USART_CR1 register
•    ใช้ fractional baud rate หรือไม่



Note: ตัวเลขที่ระบุใน Table 193 and Table 194 อาจแตกต่างกันเล็กน้อยในกรณีพิเศษเมื่อ the received frames บรรจุ some Idle frames ของ 10-bit ครั้งพอดิบพอดีเมื่อ M=0 (11-bit ครั้งเมื่อ M=1).
8
ARM Processors / Re: STM32F1 USART
« Last post by tha on January 19, 2021, 11:25:29 am »
27.3.4 Fractional baud rate generation

The baud rate สำหรับ the receiver and transmitter (Rx and Tx) ทั้งคู่ถูกเซ็ตที่ค่าเดียวกันดังที่โปรแกรมใน the Mantissa and Fraction values of USARTDIV.



USARTDIV คือ an unsigned fixed point number ที่ถูกโค้ดใน the USART_BRR register.

Note: The baud counters ถูกอัปเดตด้วย the new value of the Baud registers หลังจากการเขียนไปยัง USART_BRR. ด้วยเหตุนี้
           the Baud rate register value ไม่ควรถูกเปลี่ยนในระหว่าง communication.

How to derive USARTDIV from USART_BRR register values

Example 1:
ถ้า DIV_Mantissa = 0d27 and DIV_Fraction = 0d12 (USART_BRR = 0x1BC), ดังนั้น
Mantissa (USARTDIV) = 0d27
Fraction (USARTDIV) = 12/16 = 0d0.75
ดังนั้น USARTDIV = 0d27.75

Example 2:
เพื่อโปรแกรม USARTDIV = 0d25.62
นี้นำไปสู่ :
DIV_Fraction = 16*0d0.62 = 0d9.92
จำนวนจริงที่ใกล้ที่สุดคือ 0d10 = 0xA
DIV_Mantissa = mantissa (0d25.620) = 0d25 = 0x19
ดังนั้น, USART_BRR = 0x19A ด้วยเหตุนี้ USARTDIV = 0d25.625

Example 3:
เพื่อโปรแกรม USARTDIV = 0d50.99
นี้นำไปสู่ :
DIV_Fraction = 16*0d0.99 = 0d15.84
จำนวนจริงที่ใกล้ที่สุดคือ 0d16 = 0x10 => overflow of DIV_frac[3:0] => ตัวทศต้องถูกบวกขึ้นไปยัง the mantissa
DIV_Mantissa = mantissa (0d50.990 + carry) = 0d51 = 0x33
ดังนั้น, USART_BRR = 0x330 ด้วยเหตุนี้ USARTDIV = 0d51.000



Note: ยิ่ง the CPU clock ต่ำลงเท่าไหร่การต่ำลงนี้จะเป็นความแม่นยำสำหรับ a particular Baud rate. ค่าจำกัดบนของ the
           achievable baud rate สามารถถูกคงที่ด้วย data นี้.
           เฉพาะ USART1 ถูก clocked ด้วย PCLK2 (72 MHz max). USARTs อื่นถูก clocked ด้วย PCLK1 (36 MHz max).
9
ARM Processors / Re: STM32F1 USART
« Last post by tha on January 19, 2021, 10:02:17 am »
Configurable stop bits during reception

จำนวนของ stop bits ที่ถูกรับสามารถถูกกำหนดค่าผ่านทาง the control bits ของ Control Register 2 - มันสามารถเป็นอย่างใดอย่างหนึ่ง 1 or 2 in normal mode และ 0.5 or 1.5 in Smartcard mode.
1.    0.5 stop bit (reception in Smartcard mode): ไม่มีการสุ่มถูกทำสำหรับ 0.5 stop bit. เป็นผลให้, ไม่มี framing error และ
       ไม่มี break frame สามารถถูกตรวจพบเมื่อ 0.5 stop bit ถูกเลือก.
2.    1 stop bit: การสุ่มสำหรับ 1 stop Bit ถูกทำบน the 8th, 9th and 10th samples
3.    1.5 stop bits (Smartcard mode): เมื่อส่งใน Smartcard mode, the device ต้องเช็คว่า the data ถูกส่งอย่างถูกต้อง. ดังนั้น
       the receiver block ต้องถูกเปิดการใช้งาน(RE =1 in the USART_CR1 register) และ the stop bit ถูกเช็คเพื่อ test ถ้า the
       smartcard ถูกตรวจพบ a parity error. ในกรณีของ a parity error, the smartcard บังคับให้ the data signal low ใน
       ระหว่างการสุ่ม - NACK signal-, ซึ่งถูกป้ายชื่อว่าเป็น a framing error. ดังนั้น, the FE flag ถูก set พร้อมด้วย the RXNE ที่ the
       end of the 1.5 stop bit. การสุ่มสำหรับ 1.5 stop bits ถูกทำบน the 16th, 17th and 18th samples (1 baud clock
       period หลังจากการเริ่มต้นของ the stop bit). The 1.5 stop bit สามารถถูกแยกออกเป็นส่วนลงใน 2 ส่วน: one 0.5 baud clock
       period ในระหว่างซึ่งไม่มีอะไรเกิดขึ้น, ตามด้วย 1 normal stop bit period ในระหว่างซึ่งการสุ่มเกิดขึ้นครึ่งทางผ่านไป. Refer to
       Section 27.3.11 for more details.
4.    2 stop bits: Sampling สำหรับ 2 stop bits ถูกทำบน the 8th, 9th and 10th samples of the first stop bit. ถ้า a
       framing error ถูกตรวจพบในระหว่าง the first stop bit the framing error flag จะถูก set. The second stop bit ไม่ถูกเช็ค
       สำหรับ framing error. The RXNE flag จะถูก set ที่ the end of the first stop bit.
10
ARM Processors / Re: STM32F1 USART
« Last post by tha on January 19, 2021, 09:09:38 am »
Framing error

A framing error ถูกตรวจพบเมื่อ :

The stop bit ไม่ถูกรับรู้บน reception ในเวลาที่คาดไว้, ตามด้วยอย่างใดอย่างหนึ่ง a desynchronization หรือ excessive noise.

เมื่อ the framing error ถูกตรวจพบ:
•    The FE bit ถูก set โดย hardware
•    The invalid data ถูกส่งถ่ายจาก the Shift register ไปยัง the USART_DR register.
•    ไม่มี interrupt ถูกสร้างขึ้นในกรณีของ single byte communication. อย่างไรก็ตามบิตนี้ rises ในเวลาเดียวกันกับ the RXNE bit
      ซึ่งสร้าง an interrupt ของมันเอง. ในกรณีของ multibuffer communication an interrupt จะถูกปล่อยออกมาถ้า the EIE bit
      ถูก set ใน the USART_CR3 register.

The FE bit ถูก reset โดย a USART_SR register read operation ตามด้วย a USART_DR register read operation.
Pages: [1] 2 3 ... 10