Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование встроенных приложений STM23F10xxx_Keil_uVision-4

.pdf
Скачиваний:
32
Добавлен:
06.01.2021
Размер:
2.41 Mб
Скачать

СПБГУАП группа 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

= 69 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