
Программирование встроенных приложений STM23F10xxx_Keil_uVision-4
.pdf
СПБГУАП группа 4736 / https://new.guap.ru
13 |
CRCEN |
6)>$ CRC. |
|
|
0: } >. |
|
|
1: CRC )>$ $ ) $ $ . |
|
|
^ 8( (: † $ $ O = 7 $ |
|
|
) > SPI (= 7 SPE=0) . |
14 |
BIDIOE |
‰ 7 + 7 + . |
|
|
0: c % )]. |
|
|
1: c > )]. |
15 |
BIDIMODE |
6 > # )] )]. |
|
|
0: < ) ) ( $ $ 2 ).. |
|
|
1: < ) ) ( $ $ 1 ). |
|
|
^ 8( (: c + 7 # Master |
|
|
$ $ MOSI, # Slave (6 )+) – MISO. |
SPI->CR2 (O() E ,( 1 SPI) $ $ $7$ - 0x0000. ˆ ) $)
> $ .
ˆ |
‰ |
‰ > |
0 |
RXDMAEN |
8 9 $ DMA 7 * %. |
|
|
0: .. |
|
|
1: a $ DMA $ * = RXNE. |
77
СПБГУАП группа 4736 / https://new.guap.ru
1 |
TXDMAEN |
8 9 $ DMA 7 * >. |
|
|
0: .. |
|
|
1: a $ DMA $ * = TXE. |
2 |
SSOE |
Š )] SS (NSS) # Master. |
|
|
0: 6)] SS >, $ 7 Multimaster-$ $ . |
|
|
1: 6)] SS +$ , 7 $ $ , = |
|
|
7• ) $ F ] * +$ (Multimaster-$ $ ) |
3-4 |
- |
8 |
5 |
ERRIE |
8 9 ) 9 7 SPI (CRCERR, OVR, MODF ). |
|
|
0: .. |
|
|
1: a $ ) 7 # 9 7. |
6 |
RXNEIE |
8 9 ) 7 * %. |
|
|
0: .. |
|
|
1: a $ ) $ * = RXNE. |
7 |
TXEIE |
8 9 ) 7 * >. |
|
|
0: .. |
|
|
1: a $ ) $ * = TXE. |
8-15 |
- |
8 |
SPI->SR (O() 1 1 SPI) $ $ $7$ - 0x0002. ˆ ) $)
>, 7 4 (CRCERR) $ > $ “0”.
ˆ |
‰ |
|
‰ > |
|
|||
0 |
RXNE |
a = 7 * % SPI->DR. |
|
||||
|
|
0: ˆ * % $# )] )]. |
|||||
|
|
1: < ) ), F% > ). |
|
||||
1 |
TXE |
a = >$ 7 * > SPI->DR. |
|
||||
|
|
0: ˆ * > F% $7 # %, . . $# ) |
|||||
|
|
). |
|
|
|
|
|
|
|
1: ˆ * > $7 # %, . . # $) > ) |
|||||
|
|
) ). }, ) > SPI , . . |
|||||
|
|
$ O = * = > > >. |
|||||
2-3 |
- |
8 |
|
|
|
|
|
4 |
CRCERR |
a = 9 7 CRC. |
|
|
|
|
|
|
|
0: c > CRC $ $ $>% +, ] F +$ |
|||||
|
|
=$ SPI->RXCRCR. |
|
|
|
|
|
|
|
1: c CRC $ $ $>% +. |
|||||
5 |
MODF |
a = 9 7 #. |
|
|
|
|
|
|
|
1: }7 # 9 7, . . # Master ] NSS |
|||||
|
|
7 # + ( 7 SSI $ “0”). |
|||||
|
|
( . =$ SPI->CR1.) 7$ $ > ). |
|||||
6 |
OVR |
a = 7 * %. |
|
|
|||
|
|
1: ˆ * % ) ) ). 7$ |
|||||
|
|
$F$ $ $7 # 7 * % (>). |
|||||
7 |
BSY |
a = $ 9 ) SPI. Š$ $ $7$)$ |
|||||
|
|
. |
|
|
|
|
|
|
|
0: ‡ SPI $7 : |
|
|
|
|
|
|
|
- # Slave ] # >; |
|||||
|
|
- # Master % 1-+ . |
|||||
|
|
(6 O ] # ] $ SPI >9 $ |
|||||
|
|
* = RXEN TXE.) |
|
|
|
|
|
|
|
1: ‡ SPI ( $] % >). |
|||||
8-15 |
- |
8 |
|
|
|
|
|
78

СПБГУАП группа 4736 / https://new.guap.ru
SPI->DR (O() 0 49 SPI) C L 2 5ED(: 5ED( ( (0 T8.
c > / % 8-7 )] * + 9 7 % $ $
) =$ DR[7:0]. c > / % 8-7 )] * + $9 7
% $ $ ) =$ DR[15:8]. c > / % 16-7 )] * + $ $ $ ) =$ DR[15:0].
79

СПБГУАП группа 4736 / https://new.guap.ru
SPI->CRCPR (O() , 8 0,1 4 ,( 1 CRC).
8 =$ $# , 7] )+ )>$ CRC.
SPI->RXCRCR (O() 4 ,( 1 CRC 8 (849 0 49).
6 =$ $F$ $ )>$ CRC )] )]. 6)
)] $ $ ) )] * + = > =$ SPI->DR. c $ 7 SPI->CR1[CRCEN] $# =$ $7$)$ >$
)+ :$$ )>$ CRC. d $# = O = =$ $ $
) CRC, $ 7 SPI->CR1[CRCEN] $ , $ >$
> $ $ $ ( $ * = BSY). ‰ $ $
= CRC $* = =$ $ 9 >
$ $ 9 7 CRC ($ . * = SPI->SR[CRCERR]).
SPI->TXCRCR (O() 4 ,( 1 CRC ( (0 (849 0 49).
6 =$ $F$ $ )>$ CRC )] )]. 6)
)] $ $ ) )] * + = > =$ SPI->DR. c $ 7 SPI->CR1[CRCEN] $# =$ $7$)$ >$
)+ :$$ )>$ CRC. c > $* = CRC #
$F$ $ : > $= 7 + )]. < > > # $ $ $# O = =$ SPI->DR, >$+
> $ $ 7 SPI->CR1 [CRCNEXT]=1.
^ 8( (: Š$ SPI->CR1 [CRCNEXT] $ $ # $ F
$= 7 + )] SPI->DR.
_E9 0 4 0 E ,( 4 ( D( I2C.
Š$+$ , $F 9 I2C, = 7) F ), # = $F$ > %. † : 7 $ F
$+$ , * $= $] : SCL. r =
7]$ $ $ 7 ), F $+$
$ 9 ) $>, $ $7, * $ , $) $
= $+$ , $ ) # $ $ $ 7, $= $
> % ( $ 8 7 “0” – 7 >, “1” – %). 6
$9 + $ $+$ ) % # $+ =$ - ACK ( $ 9-= 7 9 SDA )$ “0”). < $] 7
). r # )+ )+ 7 + )] # #$ % + $+
$= ACK. c > 7 F $+$ * $= “ ”.
80

СПБГУАП группа 4736 / https://new.guap.ru
6 $ $ ] 7 9 7 (PEC), )+ = CRC- , 7 )+ : = )]. c O =
# SMBus, 9 7 #$
9 $ SMN, Host- $+$ , 7 $ $=
SMBALERT.
81
СПБГУАП группа 4736 / https://new.guap.ru
I2C->CR1 (O() E ,( 1 1) $ $ $7$ - 0x0000. ˆ ) $)
> $ .
ˆ |
‰ |
‰ > |
0 |
PE |
6 > I2C. |
|
|
0: 6) > |
|
|
1: 6 >. |
1 |
SMBUS |
6)7 # 7 ). |
|
|
0: # 7 ) I2C. |
|
|
1: # 7 ) SMBus. |
2 |
- |
8 |
3 |
SMBTYPE |
Š$ $ $ 9 SMBus. |
|
|
0: †$ >$ Device (> % $+$ ). |
|
|
1: †$ >$ Host (]) |
4 |
ENARP |
8 )+ $ $+$ (ARP). |
|
|
0: . $ ARP. |
|
|
1: 8 9 $ ARP. |
5 |
ENPEC |
6 > $ $) 9 7 (PEC), . . $ $) |
|
|
* CRC- . |
|
|
0: . 7 PEC. |
|
|
1: 8 9 7 PEC. |
6 |
ENGC |
8 9 7F = ). |
|
|
0: }7F + ) . |
|
|
1: }7F + ) 9. |
7 |
NO |
c$ $] : # Slave = = |
|
STRETCH |
$7$ * = I2C->ISR1[ADDR BTF] (: = ) |
|
|
> % $ > % / > 7 + |
|
|
)]). |
|
|
0: c$ . |
|
|
1: . $ . |
8 |
START |
G : $ . Š$ $ =, > F$ |
|
|
= $ ) $ $ , |
|
|
# $7$ 7 PE=0. |
|
|
6 # Master |
|
|
0: ‰ O**. |
|
|
1: G : = $ . |
|
|
6 # Slave |
|
|
0: ‰ O**. |
|
|
1: G : $ , $ 9 $7. |
9 |
STOP |
G : $ . Š$ $ > F$ =, |
|
|
> F$ , = ) $ $ , # |
|
|
# $ $ , = 7 # 9 7 +- |
|
|
. |
|
|
6 # Master |
|
|
0: ‰ O**. |
|
|
1: G : $ $ > F = 7 +. |
|
|
6 # Slave |
|
|
0: ‰ O**. |
|
|
1: }$7 # SDA SCL $ > F = 7 +. |
10 |
ACK |
c$) # ACK. Š$ $ > F$ |
|
|
=, # > F$ $+ 7 PE=0. |
|
|
0: ‰ $) ACK. |
|
|
1: c$ > 7 + )] $) ACK. |
82
СПБГУАП группа 4736 / https://new.guap.ru
11 |
POS |
c : CRC ( %). |
|
|
0: ‰ O**. |
|
|
1: ˆ +, $F + ), $$ CRC- . |
|
|
^ 8( (: 6 $> ) > PE=0 $7$)$ “0” |
|
|
. |
12 |
PEC |
c 9 7 PEC. Š$ $ =, > F$ |
|
|
$ > CRC- , $> $ 7 |
|
|
START, STOP, ) > I2C (PE=0), # |
|
|
=. |
|
|
0: . > % CRC- . |
|
|
1: < 7 > : = )] |
|
|
CRC- , # CRC- %. |
13 |
ALERT |
= “6” 9 SBus. |
|
|
0: c ) SMBALERT $ $ “1”. |
|
|
1: c ) SMBALERT $ $ “0”. |
|
|
^ 8( (: 6 $> ) > PE=0 $7$)$ “0” |
|
|
. |
14 |
- |
8 |
15 |
SWRST |
c = )+ $7$. |
|
|
0: $ 7 ). |
|
|
1: $ $7$ . ( $ “1” , “0”.) |
|
|
^ 8( (: 8$ $ , = 7 |
|
|
I2C->SR2[BUSY]=1 (9 7 9 )) $ . |
^ 8( (: t$ $) 7 ) START, STOP PEC 7 # 9 7
F$ = $# = =$ .
I2C->CR2 (O() E ,( 1 2) $ $ $7$ - 0x0000. ˆ ) $)
> $ .
ˆ |
‰ |
‰ > |
0 |
FREQ0 |
d$ $] : I2C. |
1 |
FREQ1 |
< STM32F100x # 7) 2 (000010) qG: |
2 |
FREQ2 |
24 (011000) qG:. |
3 |
FREQ3 |
< STM32F101xx-STM32F107xx # ]$ |
|
|
2 (000010) qG: 36 (100100) qG:. |
4 |
FREQ4 |
|
|
|
^ 8( (: d$ )$ > * ( |
5 |
FREQ5 |
|
|
|
$7 ]). |
6-7 |
- |
8 |
8 |
ITEREN |
8 9 ) 9 7. |
|
|
0: .. |
|
|
1: 8 9 $ ) $> $ = |
|
|
* = 9 7: |
|
|
- a = I2C->SR1[BERR]=1. |
|
|
- a = I2C->SR1[ARLO]=1. |
|
|
- a = I2C->SR1[AF]=1. |
|
|
- a = I2C->SR1[OVR]=1. |
|
|
- a = I2C->SR1[PECERR]=1. |
|
|
- a = I2C->SR1[TIMEOUT]= 1. |
|
|
- a = I2C->SR1[SMBALERT] =1. |
9 |
ITEVTEN |
8 9 $ ) $7). |
|
|
0: .. |
|
|
1: 8 9 $ ) $> = $7) +: |
83

СПБГУАП группа 4736 / https://new.guap.ru
|
|
- Š$ * = I2C->SR1[SB]=1 # Master. |
|
|
|
- Š$ * = I2C->SR1[ADDR]=1 # Master/Slave. |
|
|
|
- Š$ * = I2C->SR1[ADD10]=1 # Master. |
|
|
|
- Š$ * = I2C->SR1[STOPF]=1 # Slave. |
|
|
|
- Š$ * = I2C->SR1[BTF] = 1 7 % |
|
|
|
|
7 + >. |
|
|
- 6 |
$> 7 + > ITBUFEN=1. |
|
|
- 6 |
$> % 7 + I2C->DR ITBUFEN=1. |
10 |
ITBUFEN |
8 9 $7), ) ) F ) $ |
|
|
|
7 ITEVTEN=1 ( $ $ $ 7 DMAEN). |
|
|
|
0: .. |
|
|
|
1: a $ ), = 7 + )] # |
|
|
|
I2C->DR )$ F + =$ $=. |
|
11 |
DMAEN |
8 9 $ DMA. |
|
|
|
0: .. |
|
|
|
1: a $ DMA, = 7 + )] # |
|
|
|
I2C->DR )$ F + =$ $=. |
|
12 |
LAST |
c$ $) |
|
|
|
• 7 $ $ $ $+ 7 DMA |
|
|
|
I2C, 7 F = % # Master. DMA $ |
|
|
|
) ) . r = $= : ) + |
|
|
|
, DMA * ) EOT ( $ 9 |
|
|
|
) DMA->CCR[TCIE]=1), O |
|
|
|
$+$ I2C # % $F + # )+ 7 +. d 7) |
|
|
|
O 9, ) DMA EOT # 7) |
|
|
|
$* 9, . . $ $ |
|
|
|
$= 7 +. Ž 7, $ 7 LAST= |
|
|
|
0: .$ ) DMA EOT *$ 9. |
|
|
|
1: .$ ) *$ $ $ $= |
|
|
|
7 +, % # = 7 + #$ , . . $ |
|
|
|
ACK $ = % 7 ) NACK. |
|
13-15 |
- |
|
8 |
84

СПБГУАП группа 4736 / https://new.guap.ru
I2C->OAR1 (O() 5 ( ) ) 0 ( (P 8( Slave)
‰ |
‰ > |
7 |
|
ADD[9:0] |
10-7 )+ $. |
ADD[7:1] |
7-7 )+ $+ $. |
ADDMODE |
6)7 # $:, )+ # Slave 7 )$ |
|
. |
|
0: 7-7 $:. |
|
1: 10-7 $:. |
I2C->OAR2 (O() 5 ( ) 0E5, E67() 0 ( (P 8( Slave)
‰ |
‰ > |
7 |
|
ENDUAL |
8 9 + + $:. |
|
0: †$ $+ 7-7 )+ $ OAR1. |
|
1: †$ 7-7 ) $ OAR1, OAR2. |
ADD[7:1] |
7-7 )+ 7 F + $. |
I2C->DR (O() 0 49)
a >$ O =$ , $# )] $ .
}$7$ I2C->DR.
1.6 # Master $7$ :
-> )] >$ $ # $ F )] DR;
-# ) = > 7] $ # $
)] DR TxE $ DR ) );
-# ) = % 7] > DR
> )+ 7 + =, =$ RxNE $ > +.
-%, $> 7 # 9 ($7) ARLO)
#ACK $)$ , )+ 7 + RxNE DR $ $ .
2.6 # Slave )+ $ $ DR.
85
СПБГУАП группа 4736 / https://new.guap.ru
I2C->SR1 (O() 1 1 1) $ $ $7$ - 0x0000. 6$ 7 ) $)
>. ˆ ) 8 – 15 $) $ “0”. 7$ $] 7 + $F$ $
# ) > * +$ I2C, . . I2C->CR1[PE]=0.
ˆ |
‰ |
‰ > |
0 |
SB |
a = $ ( $ $ # Master). |
|
|
1: $ $ $=. |
|
|
+ 7 ( 1 , $ > I2C->SR1 $#$ |
|
|
$ I2C->DR.. |
1 |
ADDR |
a = $) / % $ . |
|
|
6 # Master |
|
|
1: b$ > # ACK.(t$ |
|
|
# >, 7 $ $ $ $ “0”.) |
|
|
6 # Slave |
|
|
1: c > $, $ $F + $+$ . |
|
|
+ 7 ( 1 , $ $ > I2C->SR1 |
|
|
$ > I2C->SR2. |
2 |
BTF |
a = > % / > 7 +. |
|
|
1: ˆ + )] > RxNE / TxE > |
|
|
# ACK. |
|
|
+ 7 ( 1 , $ $ > I2C->SR1 |
|
|
$ > / $ I2C->DR. |
|
|
^ 8( (: 1. Š$ O = * = > =$ |
|
|
I2C->DR > % = = 7 +. |
|
|
2: • 7 + $ $ , $ $ |
|
|
> > # ACK $F |
|
|
7 + 7 $ CRC. (CRC %$ , $ |
|
|
I2C->CR1[PEC=1, ENPEC=1] I2C->SR2[TRA=1]). |
3 |
ADD10 |
a = $) $9 + >$ 10-7 = =. |
|
|
1: 9 + 7 + = > ACK. |
|
|
+ 7 ( 1 , $ $ > I2C->SR1 |
|
|
$ $ I2C->DR 9 + >$ $ . |
4 |
STOPF |
a = > Stop # Slave. |
|
|
1: c > Stop. |
|
|
+ 7 ( 1 , $ $ > I2C->SR1 |
|
|
$ $ I2C->CR1. |
5 |
- |
8 |
6 |
RxNE |
a = % )]. |
|
|
1: < ) > ) I2C0>DR ACK. t$ |
|
|
:$$ % 9 $7) APLO ( 7 #), |
|
|
ACK $ * = $ $ . |
|
|
+ 7 ( 1 , $ $ > I2C->SR1 |
|
|
$ > I2C->DR. |
7 |
TxE |
a = > )]. |
|
|
1: < ) I2C0>DR F ) > TxE, =$ |
|
|
I2C0>DR = $ > = 7 + )]. t$ 7) |
|
|
> # ACK )+ 7 + |
|
|
$+ 7 + F% TxE, $F 7 + # |
|
|
7) CRC, * = $ $ . |
|
|
+ 7 ( 1 , $ $ > I2C->SR1 |
|
|
$ $ I2C->DR. |
8 |
BERR |
a = 9 7 9 ). |
|
|
1: ‰ $ $ $ Start Stop. |
86