प्रौद्योगिकी साझेदारी

STM32 क्रमिक पोर्ट कार्यसिद्धान्त

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

STM32 सीरियल पोर्ट् अत्यन्तं समृद्धः अस्ति तथा च शक्तिशालिनः कार्याणि सन्ति । इदं 5 सीरियल पोर्ट् पर्यन्तं प्रदातुं शक्नोति, यत्र फ्रैक्शनल बाउड् रेट् जनरेटर् भवति, एकल-रेखा-ऑप्टिकल-सञ्चारं तथा अर्ध-डुप्लेक्स-एक-रेखा-सञ्चारं समर्थयति, LIN, स्मार्ट-कार्ड-प्रोटोकॉलं तथा IrDA SIRENDEC-विनिर्देशं (केवलं सीरियल-पोर्ट् 3 द्वारा समर्थितम्), DMA समर्थयति , इत्यादि।

सीरियल पोर्ट् इत्यस्य मूलभूततमं सेटिङ्ग् बाउड् रेट् सेटिङ्ग् अस्ति । STM32 सीरियल पोर्ट् इत्यस्य उपयोगः अत्यन्तं सरलः अस्ति यावत् भवान् सीरियल पोर्ट् घड़ीं चालू करोति, तत्सम्बद्धस्य IO पोर्ट् इत्यस्य मोड् सेट् करोति, ततः baud rate, data bit length, parity bit इत्यादीनि सूचनां विन्यस्यति, तावत् भवन्तः उपयोक्तुं शक्नुवन्ति इदम्‌। अधः वयं संक्षेपेण एतेषां रजिस्टर्-सम्बद्धानां परिचयं करिष्यामः ये सीरियल-पोर्ट्-इत्यस्य मूलभूत-विन्यासेन सह प्रत्यक्षतया सम्बद्धाः सन्ति ।

1. सीरियल पोर्ट् घड़ी सक्षमं कुर्वन्तु। STM32 इत्यस्य परिधीयरूपेण, सीरियल पोर्ट् इत्यस्य घड़ी परिधीयेन सदैव सक्षमीकरणपञ्जिकायाः ​​द्वारा नियन्त्रिता भवति यत् वयं अत्र उपयुञ्ज्महे सीरियल पोर्ट् 1 APB2ENR रजिस्टरस्य बिट् 14 अस्ति । APB2ENR रजिस्टर् मध्ये सीरियल पोर्ट् 1 इत्यस्य क्लॉक् एनेबलं विहाय अन्येषां सीरियल् पोर्ट् इत्यस्य क्लॉक् एनेबल बिट् सर्वे APB1ENR मध्ये सन्ति ।

2. क्रमिक पोर्ट रीसेट् . यदा परिधीयस्य असामान्यता भवति तदा रीसेट् रजिस्टर् मध्ये तत्सम्बद्धं बिट् सेट् कृत्वा परिधीयस्य रीसेट् कर्तुं शक्यते, ततः परिधीयस्य पुनः कार्यं कर्तुं पुनः विन्यस्तं कर्तुं शक्यतेसामान्यतया यदा प्रणाली प्रथमवारं परिधीयसामग्रीः विन्यस्यति तदा प्रथमं करिष्यति
एतत् परिधीयम् पुनः सेट् कर्तुं एकं ऑपरेशनं कुर्वन्तु । APB2RSTR रजिस्टरस्य बिट् 14 विन्यस्तं कृत्वा सीरियल पोर्ट् 1 इत्यस्य रीसेट् प्राप्तं भवति ।

3. क्रमिक पोर्ट बाउड दर सेटिंग्। प्रत्येकं सीरियल पोर्ट् स्वकीयः स्वतन्त्रः baud rate register USART BRR अस्ति एतत् रजिस्टरं सेट् कृत्वा, भवान् भिन्नानि baud rates विन्यस्तुं शक्नोति । अस्य रजिस्टरस्य बिट् विवरणानि निम्नलिखितरूपेण सन्ति ।

 

4. क्रमिक पोर्ट नियन्त्रण। STM32 इत्यस्य प्रत्येकं सीरियल पोर्ट् इत्यस्य त्रयः नियन्त्रणपञ्जिकाः USART CR1~3 सन्ति ।

5. दत्तांशप्रेषणं ग्रहणं च। STM32 इत्यस्य प्रेषणं प्राप्तिः च आँकडा-पञ्जिकायाः ​​USART _DR इत्यस्य माध्यमेन साकारं भवति, यत्र TDR तथा RDR इत्यादीनि सन्ति
समयः, अस्मिन् पञ्जिकायां अपि संगृहीतः भवति ।

द्रष्टुं शक्यते यत् यद्यपि ३२-बिट् रजिस्टर् अस्ति तथापि केवलं निम्न ९ बिट् (DR[8:0]) उपयुज्यते, अन्ये च आरक्षिताः सन्ति । DR[8:0] इति क्रमिक-पोर्ट्-दत्तांशः, यत्र प्रेषितः अथवा प्राप्तः दत्तांशः अपि अस्ति । यतः एतत् द्वयोः रजिस्टर्-द्वयेन निर्मितं भवति, एकः प्रेषणार्थं (TDR) अपरः च प्राप्तुं (RDR) अतः अस्य रजिस्टरस्य पठन-लेखन-कार्यं भवति । TDR रजिस्टरः आन्तरिकबसस्य आउटपुट् शिफ्ट रजिस्टरस्य च मध्ये समानान्तरं अन्तरफलकं प्रदाति । आरडीआर रजिस्टर् इनपुट् शिफ्ट रेजिस्टरस्य आन्तरिकबसस्य च मध्ये समानान्तरं अन्तरफलकं प्रदाति ।

चेकबिट् सक्षमं कृत्वा प्रसारणं कुर्वन् (USART CR1 PCE बिट् सेट् भवति), तदा MSB मध्ये लिखितं मूल्यं (MSB आँकडानां दीर्घतायाः आधारेण 7तमः अथवा 8तमः बिट् अस्ति) अनन्तरं चेक् बिट् इत्यनेन परिवर्तितं भविष्यति यदा स्वागतार्थं समता बिट् सक्षमः भवति तदा MSB बिट् पठितः प्राप्तः समता बिट् भवति ।

6. सीरियल पोर्ट् इत्यस्य स्थितिः स्थितिपञ्जिकायाः ​​USART SR इत्यस्य माध्यमेन पठितुं शक्यते ।

अत्र वयं द्वौ बिट्, बिट् ५ तथा ६ RXNE तथा TC इत्येतयोः विषये ध्यानं दद्मः ।
RXNE (read data register रिक्तं नास्ति), यदा एतत् बिट् 1 इति सेट् भवति तदा एतत् सूचयति यत् data प्राप्तः अस्ति, पठितुं शक्यते च । अस्मिन् समये अस्माभिः किं कर्तव्यं यत् USART DR इत्येतत् यथाशीघ्रं पठितव्यं USART DR पठित्वा वयं एतत् बिट् स्वच्छं कर्तुं शक्नुमः, अथवा प्रत्यक्षतया स्वच्छं कर्तुं अस्मिन् बिट् मध्ये 0 इति लिखितुं शक्नुमः ।
TC (send completed), यदा एतत् बिट् सेट् भवति तदा USARTDR मध्ये दत्तांशः प्रेषितः इति अर्थः । यदि अस्य बिट् कृते व्यत्ययः सेट् भवति तर्हि व्यत्ययः उत्पद्यते । अस्मिन् बिट् मध्ये द्वौ क्लियरिंग् मेथड् अपि सन्ति : 1: USART SR पठित्वा USARTDR इति लिखन्तु । 2: अस्मिन् बिट् मध्ये प्रत्यक्षतया 0 लिखन्तु ।

  1. void uart_init(u32 pclk2,u32 bound)
  2. {
  3. float temp;
  4. u16 mantissar
  5. u16 fraction;
  6. temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIV
  7. mantissa=temp;//得到整数部分
  8. fraction=(temp-mantissa)*16://得到小数部分
  9. mantissa<<=4;
  10. mantissa+=fraction;
  11. RCC->APB2ENRI=1<<2;//使能PORTA口时钟
  12. RCC->APB2ENRI=1<<14;//使能串口时钟
  13. GPIOA->CRH&=0XFFFFF00F;
  14. GPIOA->CRH|=0X000008B0;//IO状态设置
  15. RCC->APB2RSTRI=1<<14;//复位串口1
  16. RCC->APB2RSTR&=~(1<<14)://停止复位
  17. //波特率设置
  18. USART1->BRR=mantissa;//波特率设置
  19. USART1->CR1|=0X200C;//1位停止,无校验位,
  20. USART1->CR1|=1<<8;//PE中断使能
  21. USART1->CR11=1<<5;//接收缓冲区非空中断使能
  22. MY_NVIC_Init(3,3,USART1 IRQChannel,2);//组2,最低优先级
  23. }

क्रमाङ्क-पोर्ट् हार्डवेयर-यन्त्रं आरभ्य व्यत्ययान् सक्षमं कुर्वन्तु:

विन्यासपदार्थाः : १.

(1) GPI0 तथा USART1 इत्येतयोः घण्टाः चालू कुर्वन्तु
(2) USART1 पिनद्वयस्य GPI0 मोड् सेट् कुर्वन्तु
(3) USART1 आँकडा प्रारूपं, baud rate इत्यादीन् मापदण्डान् विन्यस्यताम्
(4) USART1 receive interrupt function सक्षमं कुर्वन्तु
(5)अन्ततः USART1 कार्यं सक्षमं कुर्वन्तु