Download as pdf or txt
Download as pdf or txt
You are on page 1of 1136

Machine Translated by Google

RM0008
Hướng dẫn tham khảo
STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx và
MCU 32-bit dựa trên Arm® tiên tiến STM32F107xx

Giới thiệu

Hướng dẫn tham khảo này được gửi đến các nhà phát triển ứng dụng.

Nó cung cấp thông tin đầy đủ về cách sử dụng bộ nhớ và thiết bị ngoại vi của bộ vi điều
khiển STM32F101xx, STM32F102xx, STM32F103xx và STM32F105xx/STM32F107xx.
Các thiết bị này, có kích thước bộ nhớ, gói và thiết bị ngoại vi khác nhau, được gọi là STM32F10xxx
trong toàn bộ tài liệu, trừ khi có quy định khác.

Để biết thông tin đặt hàng, các đặc tính cơ và thiết bị điện, hãy tham khảo bảng dữ liệu
STM32F101xx và STM32F103xx mật độ thấp, trung bình, mật độ cao và XL, bảng dữ liệu STM32F102xx
mật độ thấp và trung bình cũng như bảng dữ liệu đường kết nối STM32F105xx/STM32F107xx.

Để biết thông tin về lập trình, xóa và bảo vệ bộ nhớ Flash bên trong, hãy tham khảo:

• PM0075 cho các thiết bị đường dây kết nối STM32F10xxx mật độ thấp, trung bình-cao và

• PM0068 cho các thiết bị STM32F10xxx mật độ XL.

Để biết thông tin về lõi Arm® Cortex®-M3 , hãy tham khảo PM0056, STM32F10xxx Cortex®-M3
hướng dẫn lập trình.

Tài liệu liên quan

Có sẵn từ www.st.com:

• STM32F101xx, STM32F102xx, STM32F103xx và STM32F105xx/STM32F107xx


bảng dữ liệu

• Hướng dẫn lập trình STM32F10xxx Cortex®-M3 (PM0056)

• Hướng dẫn lập trình bộ nhớ Flash STM32F10xxx (PM0075)

• Hướng dẫn lập trình bộ nhớ Flash mật độ XL STM32F10xxx (PM0068)

tháng 2 năm 2021 RM0008 Phiên bản 21 1/1136

www.st.com 1
Machine Translated by Google

Nội dung RM0008

Nội dung

1 Tổng quan về hướng dẫn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

2 Các quy ước về tài liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.1 Thông tin chung . .. . . ...... . . . ...... . . ....... . . ....... . . . 45

2.2 Danh sách các chữ viết tắt cho sổ đăng ký. . . . ....... . . ....... . . . . . . . . . . . 45

2.3 Thuật ngữ . . . . ....... . . ................................. . . . . 46

2.4 Tính sẵn có của thiết bị ngoại vi. ......... . . ....... . . ....... . . ....... . . . 46

3 Kiến trúc bộ nhớ và bus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

3.1 Kiến trúc hệ thống. .................... . . ....... . . . . . . . . . . . 47

3.2 Tổ chức bộ nhớ . . . . ...... . . . ...... . . ....... . . ....... . . . 49

3.3 Bản đồ bộ nhớ. ....... . . ....... . . ....... . . ....... . . . . . . . . . . . 50

3.3.1 SRAM nhúng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

3.3.2 Dải bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

3.3.3 Bộ nhớ Flash nhúng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

3,4 Cấu hình khởi động . ... . . ....... . . ....... . . ....... . . . . . . . . . . . 60

4 Đơn vị tính CRC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

4.1 Giới thiệu CRC. ... . . ....... . . ....... . . ....... . . ...... . . . . 63

4.2 Các tính năng chính của CRC. . . . . . ...... . . . ...... . . ....... . . . . . . . . . . . . 63

4.3 Mô tả chức năng CRC. ...... . . ....... . . ....... . . . . . . . . . . . 64

4.4 Thanh ghi CRC . ....... . . ....... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

4.4.1 Thanh ghi dữ liệu (CRC_DR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

4.4.2 Thanh ghi dữ liệu độc lập (CRC_IDR). . . . . . . . . . . . . . . . . . . . . . . . . 65

4.4.3 Thanh ghi điều khiển (CRC_CR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

4.4.4 Sơ đồ đăng ký CRC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

5 Điều khiển công suất (PWR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

5.1 Nguồn điện . .............. . . ....... . . ....... . . ....... . . . 67

5.1.1 Nguồn cung cấp và điện áp tham chiếu của bộ chuyển đổi A/D và D/A độc lập. . . . 68

5.1.2 Tên miền dự phòng pin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

5.1.3 Bộ điều chỉnh điện áp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

5.2 Người giám sát cung cấp điện. ....... . . ....... . . ....... . . . . . . . . . . . 70

2/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Nội dung

5.2.1 Đặt lại khi bật nguồn (POR)/Đặt lại khi tắt nguồn (PDR). . . . . . . . . . . . . . . . . . 70

5.2.2 Máy dò điện áp lập trình được (PVD). . . . . . . . . . . . . . . . . . . . . . . . . 70

5.3 Chế độ năng lượng thấp . ... . . ...... . . . ...... . . ....... . . ....... . . . 72

5.3.1 Làm chậm đồng hồ hệ thống. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

5.3.2 Cổng đồng hồ ngoại vi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

5.3.3 Chế độ ngủ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

5.3.4 Chế độ dừng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

5.3.5 Chế độ chờ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

5.3.6 Tự động đánh thức (AWU) từ chế độ năng lượng thấp . . . . . . . . . . . . . . . . . . . . . . 77

5.4 Thanh ghi điều khiển nguồn . . . ...... . . . ...... . . ....... . . ....... . . . 77

5.4.1 Thanh ghi điều khiển công suất (PWR_CR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

5.4.2 Thanh ghi trạng thái/điều khiển nguồn (PWR_CSR) . . . . . . . . . . . . . . . . . . . . . . 79

5.4.3 Sơ đồ đăng ký PWR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

6 Các thanh ghi dự phòng (BKP). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

6.1 Giới thiệu BKP. ..... . . ...... . . . ...... . . ....... . . ....... . . . 81

6.2 Các tính năng chính của BKP. . . . . . . . . . . . . . . ....... . . ....... . . . . . . . . . . . 81

6.3 Mô tả chức năng BKP. ...... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

6.3.1 Phát hiện giả mạo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

6.3.2 Hiệu chuẩn RTC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

6.4 Thanh ghi BKP . ....... . . ...... . . . ...... . . ....... . . ....... . . . 83

6.4.1 Thanh ghi dữ liệu dự phòng x (BKP_DRx) (x=1..42). . . . . . . . . . . . . . . . . . . 83

6.4.2 Thanh ghi hiệu chuẩn đồng hồ RTC (BKP_RTCCR) . . . . . . . . . . . . . . . . . . . . 83

6.4.3 Thanh ghi điều khiển dự phòng (BKP_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

6.4.4 Thanh ghi trạng thái/điều khiển dự phòng (BKP_CSR) . . . . . . . . . . . . . . . . . . . . . . 84

6.4.5 Bản đồ đăng ký BKP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

7 Thiết lập lại và đồng hồ mật độ thấp, trung bình, cao và XL


điều khiển (RCC). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

7.1 Cài lại . . . . . . . ....... . . ...... . . . ...... . . ....... . . ....... . . . 90

7.1.1 Thiết lập lại hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

7.1.2 Đặt lại nguồn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

7.1.3 Sao lưu thiết lập lại tên miền . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

7.2 Đồng hồ . ..................... . . ....... . . ....... . . ....... . . . 92

7.2.1 Đồng hồ HSE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

7.2.2 Đồng hồ HSI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

RM0008 Phiên bản 21 3/1136

26
Machine Translated by Google

Nội dung RM0008

7.2.3 Xin vui lòng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

7.2.4 Đồng hồ LSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

7.2.5 Đồng hồ LSI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

7.2.6 Lựa chọn đồng hồ hệ thống (SYSCLK). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

7.2.7 Hệ thống bảo mật đồng hồ (CSS). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

7.2.8 Đồng hồ RTC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

7.2.9 Đồng hồ cơ quan giám sát. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

7.2.10 Khả năng bấm giờ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

7.3 Thanh ghi RCC . ....... . . ....... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

7.3.1 Thanh ghi điều khiển đồng hồ (RCC_CR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

7.3.2 Thanh ghi cấu hình đồng hồ (RCC_CFGR). . . . . . . . . . . . . . . . . . . . . 101

7.3.3 Thanh ghi ngắt đồng hồ (RCC_CIR). . . . . . . . . . . . . . . . . . . . . . . . . . . 104

7.3.4 Thanh ghi đặt lại ngoại vi APB2 (RCC_APB2RSTR) . . . . . . . . . . . . . . 106

7.3.5 Thanh ghi đặt lại ngoại vi APB1 (RCC_APB1RSTR) . . . . . . . . . . . . . . 109

7.3.6 Thanh ghi kích hoạt đồng hồ ngoại vi AHB (RCC_AHBENR) . . . . . . . . . . . 111

7.3.7 Thanh ghi kích hoạt đồng hồ ngoại vi APB2 (RCC_APB2ENR) . . . . . . . . . . 112

7.3.8 Thanh ghi kích hoạt đồng hồ ngoại vi APB1 (RCC_APB1ENR) . . . . . . . . . . 115

7.3.9 Thanh ghi kiểm soát miền dự phòng (RCC_BDCR) . . . . . . . . . . . . . . . . . . 118

7.3.10 Thanh ghi điều khiển/trạng thái (RCC_CSR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

7.3.11 Bản đồ đăng ký RCC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

số 8
Các thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC). . . . . . . . . 123

8.1 Cài lại . . . . . . . ....... . . ...... . . . ...... . . ....... . . . . . . . . . . . 123

8.1.1 Thiết lập lại hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

8.1.2 Đặt lại nguồn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

8.1.3 Sao lưu thiết lập lại tên miền . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

8.2 Đồng hồ . ..................... . . ....... . . ....... . . . . . . . . . . . 125

8.2.1 Đồng hồ HSE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

8.2.2 Đồng hồ HSI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

8.2.3 PLL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

8.2.4 Đồng hồ LSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

8.2.5 Đồng hồ LSI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

8.2.6 Lựa chọn đồng hồ hệ thống (SYSCLK). . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

8.2.7 Hệ thống bảo mật đồng hồ (CSS). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

8.2.8 Đồng hồ RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

8.2.9 Đồng hồ cơ quan giám sát. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

8.2.10 Khả năng bấm giờ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

4/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Nội dung

8.3 Thanh ghi RCC . ....... . . ....... . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

8.3.1 Thanh ghi điều khiển đồng hồ (RCC_CR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

8.3.2 Thanh ghi cấu hình đồng hồ (RCC_CFGR). . . . . . . . . . . . . . . . . . . . . 134

8.3.3 Thanh ghi ngắt đồng hồ (RCC_CIR). . . . . . . . . . . . . . . . . . . . . . . . . . . 137

8.3.4 Thanh ghi đặt lại ngoại vi APB2 (RCC_APB2RSTR) . . . . . . . . . . . . . . 141

8.3.5 Thanh ghi đặt lại ngoại vi APB1 (RCC_APB1RSTR) . . . . . . . . . . . . . . 142

8.3.6 Thanh ghi kích hoạt đồng hồ ngoại vi AHB (RCC_AHBENR) . . . . . . . . . . . 145

8.3.7 Thanh ghi kích hoạt đồng hồ ngoại vi APB2 (RCC_APB2ENR) . . . . . . . . . . 146

8.3.8 Thanh ghi kích hoạt đồng hồ ngoại vi APB1 (RCC_APB1ENR) . . . . . . . . . . 148

8.3.9 Thanh ghi kiểm soát miền dự phòng (RCC_BDCR) . . . . . . . . . . . . . . . . . . 150

8.3.10 Thanh ghi điều khiển/trạng thái (RCC_CSR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

8.3.11 Thanh ghi đặt lại đồng hồ ngoại vi AHB (RCC_AHBRSTR) . . . . . . . . . . . . 153

8.3.12 Thanh ghi cấu hình đồng hồ2 (RCC_CFGR2) . . . . . . . . . . . . . . . . . . . 154

8.3.13 Bản đồ đăng ký RCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

9 I/O có mục đích chung và chức năng thay thế


(GPIO và AFIO). . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . 159

9.1 Mô tả chức năng GPIO. ..... . . ....... . . ....... . . . . . . . . . . 159

9.1.1 I/O mục đích chung (GPIO). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

9.1.2 Đặt hoặc đặt lại bit nguyên tử . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

9.1.3 Đường ngắt/đánh thức bên ngoài. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

9.1.4 Các chức năng thay thế (AF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

9.1.5 Ánh xạ lại phần mềm của các chức năng thay thế I/O. . . . . . . . . . . . . . . . . . 162

9.1.6 Cơ chế khóa GPIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

9.1.7 Cấu hình đầu vào. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

9.1.8 Cấu hình đầu ra. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

9.1.9 Cấu hình chức năng thay thế. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

9.1.10 Cấu hình tương tự . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

9.1.11 Cấu hình GPIO cho thiết bị ngoại vi. . . . . . . . . . . . . . . . . . . . . 166

9.2 Thanh ghi GPIO . ..... . . ................ . . ....... . . . . . . . . . . . 171

9.2.1 Thanh ghi cấu hình cổng ở mức thấp (GPIOx_CRL) (x=A..G) . . . . . . . . . . . . 171

9.2.2 Thanh ghi cấu hình cổng cao (GPIOx_CRH) (x=A..G) . . . . . . . . . . . 172

9.2.3 Thanh ghi dữ liệu đầu vào cổng (GPIOx_IDR) (x=A..G) . . . . . . . . . . . . . . . . . . 172

9.2.4 Thanh ghi dữ liệu đầu ra cổng (GPIOx_ODR) (x=A..G) . . . . . . . . . . . . . . . . 173

9.2.5 Thanh ghi đặt/đặt lại bit cổng (GPIOx_BSRR) (x=A..G) . . . . . . . . . . . . . . . 173

9.2.6 Thanh ghi đặt lại bit cổng (GPIOx_BRR) (x=A..G) . . . . . . . . . . . . . . . . . . . 174

9.2.7 Thanh ghi khóa cấu hình cổng (GPIOx_LCKR) (x=A..G) . . . . . . . . . . 174

RM0008 Phiên bản 21 5/1136

26
Machine Translated by Google

Nội dung RM0008

9,3 Cấu hình gỡ lỗi và I/O chức năng thay thế (AFIO). .. . . . . . . . . . . 175

9.3.1 Sử dụng các chân OSC32_IN/OSC32_OUT làm cổng GPIO PC14/PC15 . . . . 175

9.3.2 Sử dụng các chân OSC_IN/OSC_OUT làm cổng GPIO PD0/PD1 . . . . . . . . . . 175

9.3.3 Ánh xạ lại chức năng thay thế CAN1. . . . . . . . . . . . . . . . . . . . . . . . . . . 176

9.3.4 Ánh xạ lại chức năng thay thế CAN2. . . . . . . . . . . . . . . . . . . . . . . . . . . 176

9.3.5 Ánh xạ lại chức năng thay thế JTAG/SWD . . . . . . . . . . . . . . . . . . . . . . 176

9.3.6 Ánh xạ lại chức năng thay thế ADC. . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

9.3.7 Ánh xạ lại chức năng thay thế hẹn giờ. . . . . . . . . . . . . . . . . . . . . . . . . . . 178

9.3.8 Ánh xạ lại chức năng thay thế USART. . . . . . . . . . . . . . . . . . . . . . . . . 180

9.3.9 Ánh xạ lại chức năng thay thế I2C1. . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

9.3.10 Ánh xạ lại chức năng thay thế SPI1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

9.3.11 Ánh xạ lại chức năng thay thế SPI3/I2S3 . . . . . . . . . . . . . . . . . . . . . . . 181

9.3.12 Ánh xạ lại chức năng thay thế Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . 181

9.4 Thanh ghi AFIO . .............. . . ....... . . ....... . . . . . . . . . . . 183

9.4.1 Thanh ghi điều khiển sự kiện (AFIO_EVCR). . . . . . . . . . . . . . . . . . . . . . . . . . 183

9.4.2 Bản ghi cấu hình I/O gỡ lỗi và ánh xạ lại AF (AFIO_MAPR) . . . . . 184

9.4.3 Thanh ghi cấu hình ngắt bên ngoài 1 (AFIO_EXTICR1) . . . . . . . . 191

9.4.4 Thanh ghi cấu hình ngắt bên ngoài 2 (AFIO_EXTICR2) . . . . . . . . 191

9.4.5 Thanh ghi cấu hình ngắt ngoài 3 (AFIO_EXTICR3) . . . . . . . . 192

9.4.6 Thanh ghi cấu hình ngắt bên ngoài 4 (AFIO_EXTICR4) . . . . . . . . 192

9.4.7 AF ánh xạ lại và gỡ lỗi thanh ghi cấu hình I/O2 (AFIO_MAPR2) . . . 193

9.5 Bản đồ đăng ký GPIO và AFIO . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

10 Sự gián đoạn và sự kiện. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

10.1 Bộ điều khiển ngắt vectơ lồng nhau (NVIC). .. . . ....... . . . . . . . . . . 197

10.1.1 Thanh ghi giá trị hiệu chuẩn SysTick. . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

10.1.2 Các vectơ ngắt và ngoại lệ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

10.2 Bộ điều khiển sự kiện/ngắt bên ngoài (EXTI) . .... . . . ...... . . . . . . . . . . 207

10.2.1 Các tính năng chính . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207

10.2.2 Sơ đồ khối. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207

10.2.3 Quản lý sự kiện đánh thức. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

10.2.4 Mô tả chức năng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

10.2.5 Ánh xạ dòng sự kiện/ngắt bên ngoài . . . . . . . . . . . . . . . . . . . . . . . . . 209

10.3 Thanh ghi EXTI . ....... . . ....... . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211

10.3.1 Thanh ghi mặt nạ ngắt (EXTI_IMR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

10.3.2 Thanh ghi mặt nạ sự kiện (EXTI_EMR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

6/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Nội dung

10.3.3 Thanh ghi lựa chọn kích hoạt tăng (EXTI_RTSR) . . . . . . . . . . . . . . . . . . 212

10.3.4 Thanh ghi lựa chọn kích hoạt rơi (EXTI_FTSR) . . . . . . . . . . . . . . . . . . 212

10.3.5 Thanh ghi sự kiện ngắt phần mềm (EXTI_SWIER) . . . . . . . . . . . . . . . . 213

10.3.6 Thanh ghi đang chờ xử lý (EXTI_PR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

10.3.7 Bản đồ đăng ký EXTI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

11 Bộ chuyển đổi tương tự sang số (ADC). . . . . . . . . . . . . . . . . . . . . . . . . . . . 215

11.1 Giới thiệu ADC. ... . . ....... . . ....... . . ....... . . . . . . . . . . . 215

11.2 Các tính năng chính của ADC. . . . . . ....... . . ....... . . ....... . . . . . . . . . . 216

11.3 Mô tả chức năng ADC. ...... . . ....... . . ....... . . . . . . . . . . 216

11.3.1 Điều khiển bật tắt ADC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218

11.3.2 Đồng hồ ADC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218

11.3.3 Lựa chọn kênh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218

11.3.4 Chế độ chuyển đổi đơn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

11.3.5 Chế độ chuyển đổi liên tục. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

11.3.6 Sơ đồ thời gian. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

11.3.7 Cơ quan giám sát tương tự . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220

11.3.8 Chế độ quét. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

11.3.9 Quản lý kênh được tiêm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

11.3.10 Chế độ không liên tục . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

11.4 Hiệu chuẩn . .................. . . ....... . . ....... . . . . . . . . . . 223

11.5 Căn chỉnh dữ liệu . .............. . . ....... . . ....... . . . . . . . . . . . 224

11.6 Thời gian lấy mẫu có thể lập trình theo từng kênh . ....... . . . . . . . . . . 225

11.7 Chuyển đổi kích hoạt bên ngoài. ... . . ............... . . . . . . . . . . . 225

Yêu cầu DMA 11.8 . . ....... . . ....... . . ....... . . ....... . . . . . . . . . . 227

11.9 Chế độ ADC kép . ..... . . ...... . . . ...... . . ....... . . . . . . . . . . . 228

11.9.1 Chế độ tiêm đồng thời. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

11.9.2 Chế độ đồng thời thông thường . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

11.9.3 Chế độ xen kẽ nhanh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231

11.9.4 Chế độ xen kẽ chậm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231

11.9.5 Chế độ kích hoạt thay thế . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232

11.9.6 Chế độ độc lập . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

11.9.7 Chế độ kết hợp đồng thời thông thường/được tiêm . . . . . . . . . . . . . . . . . . 233

11.9.8 Kết hợp chế độ kích hoạt đồng thời + luân phiên thường xuyên. . . . . . . . . . 233

11.9.9 Kết hợp tiêm đồng thời + xen kẽ . . . . . . . . . . . . . . . . . . 234

11.10 Cảm biến nhiệt độ . .................... . . ....... . . . . . . . . . . 235

RM0008 Phiên bản 21 7/1136

26
Machine Translated by Google

Nội dung RM0008

11.11 ADC ngắt. .............. . . ....... . . ....... . . . . . . . . . . . 236

11.12 Thanh ghi ADC . ................ . . ....... . . ....... . . . . . . . . . . 237

11.12.1 Thanh ghi trạng thái ADC (ADC_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

11.12.2 Thanh ghi điều khiển ADC 1 (ADC_CR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . 238

11.12.3 Thanh ghi điều khiển ADC 2 (ADC_CR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . 240

11.12.4 Thanh ghi thời gian mẫu ADC 1 (ADC_SMPR1) . . . . . . . . . . . . . . . . . . . . 244

11.12.5 Thanh ghi thời gian mẫu ADC 2 (ADC_SMPR2) . . . . . . . . . . . . . . . . . . . . 245

11.12.6 Thanh ghi bù dữ liệu kênh được bơm ADC x (ADC_JOFRx) (x=1..4) . . 245

11.12.7 Thanh ghi ngưỡng cao của cơ quan giám sát ADC (ADC_HTR) . . . . . . . . . . . . . . 246

11.12.8 Thanh ghi ngưỡng thấp của cơ quan giám sát ADC (ADC_LTR) . . . . . . . . . . . . . . . 246

11.12.9 Thanh ghi trình tự thông thường ADC 1 (ADC_SQR1) . . . . . . . . . . . . . . . . . 247

11.12.10 Thanh ghi trình tự thông thường ADC 2 (ADC_SQR2) . . . . . . . . . . . . . . . . . 248

11.12.11 Thanh ghi trình tự thông thường ADC 3 (ADC_SQR3) . . . . . . . . . . . . . . . . . 249

11.12.12 Thanh ghi trình tự được đưa vào ADC (ADC_JSQR) . . . . . . . . . . . . . . . . . . 250

11.12.13 Thanh ghi dữ liệu được đưa vào ADC x (ADC_JDRx) (x= 1..4) . . . . . . . . . . . . . . 251

11.12.14 Thanh ghi dữ liệu thông thường ADC (ADC_DR) . . . . . . . . . . . . . . . . . . . . . . . . . 251

12.15.15 Bản đồ đăng ký ADC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

12 Bộ chuyển đổi kỹ thuật số sang tương tự (DAC). . . . . . . . . . . . . . . . . . . . . . . . . . . . 254

12.1 DAC giới thiệu. ... . . ....... . . ....... . . ....... . . . . . . . . . . . 254

12.2 DAC tính năng chính. ... . . ...... . . . ...... . . ....... . . . . . . . . . . . 254

12.3 Mô tả chức năng DAC. ...... . . ....... . . ....... . . . . . . . . . . 256

12.3.1 Kích hoạt kênh DAC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256

12.3.2 Kích hoạt bộ đệm đầu ra DAC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256

12.3.3 Định dạng dữ liệu DAC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256

12.3.4 Chuyển đổi DAC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

12.3.5 Điện áp đầu ra DAC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258

12.3.6 Lựa chọn kích hoạt DAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258

12.3.7 Yêu cầu DMA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

12.3.8 Phát sinh tiếng ồn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

12.3.9 Sự tạo sóng tam giác. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260

12.4 Chuyển đổi kênh DAC kép . .. . . . ...... . . ....... . . . . . . . . . . . 261

12.4.1 Kích hoạt độc lập không tạo ra sóng. . . . . . . . . . . . . . . . . . . 261

12.4.2 Kích hoạt độc lập với cùng thế hệ LFSR. . . . . . . . . . . . . . . . 262

12.4.3 Kích hoạt độc lập với thế hệ LFSR khác nhau. . . . . . . . . . . . . . 262

12.4.4 Kích hoạt độc lập với cùng một thế hệ tam giác. . . . . . . . . . . . . . . 262

8/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Nội dung

12.4.5 Kích hoạt độc lập với việc tạo tam giác khác nhau. . . . . . . . . . . . . 263

12.4.6 Khởi động phần mềm đồng thời. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

12.4.7 Kích hoạt đồng thời không tạo sóng. . . . . . . . . . . . . . . . . . 263

12.4.8 Kích hoạt đồng thời với cùng thế hệ LFSR. . . . . . . . . . . . . . . 264

12.4.9 Kích hoạt đồng thời với thế hệ LFSR khác nhau. . . . . . . . . . . . . 264

12.4.10 Kích hoạt đồng thời với cùng một thế hệ tam giác . . . . . . . . . . . . . . 264

12.4.11 Kích hoạt đồng thời với các thế hệ tam giác khác nhau . . . . . . . . . . . . 265

12.5 thanh ghi DAC. ....... . . ....... . . ....... . . . . . . . . . . . . . . . . . . . 265

12.5.1 Thanh ghi điều khiển DAC (DAC_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265

12.5.2 Thanh ghi kích hoạt phần mềm DAC (DAC_SWTRIGR) . . . . . . . . . . . . . . . . 268

12.5.3 DAC kênh1 Thanh ghi giữ dữ liệu căn phải 12-bit

(DAC_DHR12R1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

12.5.4 DAC kênh1 Thanh ghi giữ dữ liệu căn trái 12-bit

(DAC_DHR12L1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

12.5.5 DAC kênh1 Thanh ghi giữ dữ liệu căn phải 8 bit

(DAC_DHR8R1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

12.5.6 DAC kênh2 Thanh ghi giữ dữ liệu căn phải 12-bit

(DAC_DHR12R2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270

12.5.7 DAC kênh2 Thanh ghi giữ dữ liệu căn trái 12-bit

(DAC_DHR12L2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270

12.5.8 DAC kênh2 Thanh ghi giữ dữ liệu căn phải 8 bit

(DAC_DHR8R2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270

12.5.9 Thanh ghi giữ dữ liệu căn phải 12 bit DAC kép

(DAC_DHR12RD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271

12.5.10 DUAL DAC 12-bit thanh ghi giữ dữ liệu căn trái

(DAC_DHR12LD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271

12.5.11 Thanh ghi giữ dữ liệu căn phải DUAL DAC 8 bit

(DAC_DHR8RD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272

12.5.12 Thanh ghi đầu ra dữ liệu DAC kênh1 (DAC_DOR1) . . . . . . . . . . . . . . . . 272

12.5.13 Thanh ghi đầu ra dữ liệu DAC kênh2 (DAC_DOR2) . . . . . . . . . . . . . . . . 272

12.5.14 Bản đồ thanh ghi DAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273

13 Bộ điều khiển truy cập bộ nhớ trực tiếp (DMA). . . . . . . . . . . . . . . . . . .. . . . 274

13.1 Giới thiệu DMA. .... . . ...... . . . ...... . . ....... . . . . . . . . . . . 274

13.2 Các tính năng chính của DMA. . . . . . ....... . . ....... . . ....... . . . . . . . . . . 274

13.3 Mô tả chức năng DMA. ...... . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

13.3.1 Giao dịch DMA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

13.3.2 Trọng tài . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

13.3.3 kênh DMA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

RM0008 Phiên bản 21 9/1136

26
Machine Translated by Google

Nội dung RM0008

13.3.4 Độ rộng dữ liệu có thể lập trình, căn chỉnh dữ liệu và phần cuối . . . . . . . . . . . 279

13.3.5 Quản lý lỗi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280

13.3.6 Ngắt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280

13.3.7 Ánh xạ yêu cầu DMA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281

13.4 thanh ghi DMA. ....... . . ...... . . . ...... . . ....... . . . . . . . . . . . 284

13.4.1 Thanh ghi trạng thái ngắt DMA (DMA_ISR) . . . . . . . . . . . . . . . . . . . . . . 284

13.4.2 Thanh ghi xóa cờ ngắt DMA (DMA_IFCR) . . . . . . . . . . . . . . . . . . 285

13.4.3 Kênh DMA x thanh ghi cấu hình (DMA_CCRx) (x = 1..7,

trong đó x = số kênh). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286

13.4.4 Kênh DMA x số thanh ghi dữ liệu (DMA_CNDTRx) (x = 1..7,

trong đó x = số kênh). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287

13.4.5 Kênh DMA x thanh ghi địa chỉ ngoại vi (DMA_CPARx) (x = 1..7,

trong đó x = số kênh). . . 288 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13.4.6 Kênh DMA x thanh ghi địa chỉ bộ nhớ (DMA_CMARx) (x = 1..7,

trong đó x = số kênh). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288

13.4.7 Bản đồ đăng ký DMA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

14 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8). . . . . . . . . . . . . . . . . . . . . 292

14.1 Giới thiệu TIM1 và TIM8. ..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292

14.2 Các tính năng chính của TIM1 và TIM8. . . . . . ....... . . ....... . . . . . . . . . . 293

14.3 Mô tả chức năng TIM1 và TIM8. ...... . . ....... . . . . . . . . . . 295

14.3.1 Đơn vị cơ sở thời gian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295

14.3.2 Chế độ bộ đếm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297

14.3.3 Bộ đếm lặp lại . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306

14.3.4 Lựa chọn đồng hồ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308

14.3.5 Chụp/so sánh các kênh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311

14.3.6 Chế độ chụp đầu vào . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314

14.3.7 Chế độ đầu vàoPWM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315

14.3.8 Chế độ đầu ra cưỡng bức . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316

14.3.9 Chế độ so sánh đầu ra. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316

14.3.10 Chế độPWM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

14.3.11 Đầu ra bổ sung và chèn thời gian chết . . . . . . . . . . . . . . . . 321

14.3.12 Sử dụng chức năng ngắt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322

14.3.13 Xóa tín hiệu OCxREF trên sự kiện bên ngoài . 14.3.14 Tạo xung điện 6 bước . . . . . . . . . . . . . . . 326

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327

14.3.15 Chế độ một xung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328

14.3.16 Chế độ giao diện bộ mã hóa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

14.3.17 Chức năng XOR đầu vào hẹn giờ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332

10/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Nội dung

14.3.18 Giao tiếp với cảm biến Hall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332

14.3.19 TIMx và đồng bộ hóa kích hoạt bên ngoài . . . . . . . . . . . . . . . . . . . . . . 334

14.3.20 Đồng bộ hóa hẹn giờ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337

14.3.21 Chế độ gỡ lỗi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337

14.4 Thanh ghi TIM1 và TIM8. ............... . . . ...... . . . . . . . . . . . 338

14.4.1 Thanh ghi điều khiển TIM1 và TIM8 1 (TIMx_CR1) . . . . . . . . . . . . . . . . . . 338

14.4.2 Thanh ghi điều khiển TIM1 và TIM8 2 (TIMx_CR2) . . . . . . . . . . . . . . . . . . 339

14.4.3 Thanh ghi điều khiển chế độ phụ TIM1 và TIM8 (TIMx_SMCR) . . . . . . . . 342

14.4.4 TIM1 và TIM8 DMA/thanh ghi cho phép ngắt (TIMx_DIER) . . . . . . . . 344

14.4.5 Thanh ghi trạng thái TIM1 và TIM8 (TIMx_SR) . . . . . . . . . . . . . . . . . . . . . . 346

14.4.6 Thanh ghi tạo sự kiện TIM1 và TIM8 (TIMx_EGR) . . . . . . . . . . . . 347

14.4.7 Thanh ghi chế độ chụp/so sánh TIM1 và TIM8 1 (TIMx_CCMR1) . . 349

14.4.8 Thanh ghi chế độ chụp/so sánh TIM1 và TIM8 2 (TIMx_CCMR2) . . 351

14.4.9 Thanh ghi cho phép chụp/so sánh TIM1 và TIM8 (TIMx_CCER) . . . . 353

14.4.10 Bộ đếm TIM1 và TIM8 (TIMx_CNT) . . . . . . . . . . . . . . . . . . . . . . . . . . 356

14.4.11 Bộ đếm gộp trước TIM1 và TIM8 (TIMx_PSC) . . . . . . . . . . . . . . . . . . . . . . . . 356

14.4.12 Thanh ghi tự động tải lại TIM1 và TIM8 (TIMx_ARR) . . . . . . . . . . . . . . . . 356

14.4.13 Thanh ghi bộ đếm lặp lại TIM1 và TIM8 (TIMx_RCR) . . . . . . . . . . . 357

14.4.14 Thanh ghi ghi/so sánh TIM1 và TIM8 1 (TIMx_CCR1) . . . . . . . . . 357

14.4.15 Thanh ghi ghi/so sánh TIM1 và TIM8 2 (TIMx_CCR2) . . . . . . . . . 358

14.4.16 Thanh ghi ghi/so sánh TIM1 và TIM8 3 (TIMx_CCR3) . . . . . . . . . 358

14.4.17 Thanh ghi ghi/so sánh TIM1 và TIM8 4 (TIMx_CCR4) . . . . . . . . . 359

14.4.18 Thanh ghi ngắt và thời gian chết TIM1 và TIM8 (TIMx_BDTR) . . . . . . . 359

14.4.19 Thanh ghi điều khiển DMA TIM1 và TIM8 (TIMx_DCR) . . . . . . . . . . . . . . . 361

14.4.20 Địa chỉ DMA TIM1 và TIM8 để truyền toàn bộ (TIMx_DMAR) . . . . . . . 362

14.4.21 Bản đồ đăng ký TIM1 và TIM8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363

15 Bộ hẹn giờ đa năng (TIM2 đến TIM5). . . . . . . . . . . . . . . . . . . . . . . . 365

15.1 Giới thiệu TIM2 đến TIM5 . ..... . . . .............. . . . . . . . . . . . . 365

Các tính năng chính của 15.2 TIMx . . . . . ...... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366

15.3 Mô tả chức năng TIMx. .... . . . . ..... . . . ...... . . . . . . . . . . . . 368

15.3.1 Đơn vị thời gian cơ bản. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368

15.3.2 Chế độ bộ đếm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369

15.3.3 Lựa chọn đồng hồ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379

15.3.4 Chụp/so sánh các kênh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382

15.3.5 Chế độ chụp đầu vào . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384

15.3.6 Chế độ đầu vàoPWM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385

RM0008 Phiên bản 21 11/11/1136

26
Machine Translated by Google

Nội dung RM0008

15.3.7 Chế độ đầu ra cưỡng bức . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386

15.3.8 Chế độ so sánh đầu ra. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386

15.3.9 Chế độPWM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387

15.3.10 Chế độ một xung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390

15.3.11 Xóa tín hiệu OCxREF trên sự kiện bên ngoài . . . . . . . . . . . . . . . 391

15.3.12 Chế độ giao diện bộ mã hóa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392

15.3.13 Chức năng XOR đầu vào hẹn giờ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395

15.3.14 Bộ hẹn giờ và đồng bộ hóa kích hoạt bên ngoài . . . . . . . . . . . . . . . . . . . . 395

15.3.15 Đồng bộ hóa bộ hẹn giờ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398

15.3.16 Chế độ gỡ lỗi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403

15.4 thanh ghi TIMx. .............. . . . ...... . . . ...... . . . . . . . . . . . . 404

15.4.1 Thanh ghi điều khiển TIMx 1 (TIMx_CR1) . . . . . . . . . . . . . . . . . . . . . . . . . . 404

15.4.2 Thanh ghi điều khiển TIMx 2 (TIMx_CR2) . . . . . . . . . . . . . . . . . . . . . . . . . . 406

15.4.3 Thanh ghi điều khiển chế độ nô lệ TIMx (TIMx_SMCR) . . . . . . . . . . . . . . . . . 407

15.4.4 TIMx DMA/Thanh ghi cho phép ngắt (TIMx_DIER) . . . . . . . . . . . . . . . . 409

15.4.5 Thanh ghi trạng thái TIMx (TIMx_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410

15.4.6 Thanh ghi tạo sự kiện TIMx (TIMx_EGR) . . . . . . . . . . . . . . . . . . . . 412

15.4.7 Thanh ghi chế độ chụp/so sánh TIMx 1 (TIMx_CCMR1) . . . . . . . . . . . 413

15.4.8 Thanh ghi chế độ chụp/so sánh TIMx 2 (TIMx_CCMR2) . . . . . . . . . . . 416

15.4.9 Đăng ký cho phép chụp/so sánh TIMx (TIMx_CCER) . . . . . . . . . . . . 417

15.4.10 Bộ đếm TIMx (TIMx_CNT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418

15.4.11 Bộ đếm gộp trước TIMx (TIMx_PSC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418

15.4.12 Thanh ghi tự động tải lại TIMx (TIMx_ARR) . . . . . . . . . . . . . . . . . . . . . . . . 419

15.4.13 Thanh ghi ghi/so sánh TIMx 1 (TIMx_CCR1) . . . . . . . . . . . . . . . . . 419

15.4.14 Thanh ghi chụp/so sánh TIMx 2 (TIMx_CCR2) . . . . . . . . . . . . . . . . . 420

15.4.15 Thanh ghi chụp/so sánh TIMx 3 (TIMx_CCR3) . . . . . . . . . . . . . . . . . 420

15.4.16 Thanh ghi chụp/so sánh TIMx 4 (TIMx_CCR4) . . . . . . . . . . . . . . . . . 420

15.4.17 Thanh ghi điều khiển TIMx DMA (TIMx_DCR) . . . . . . . . . . . . . . . . . . . . . . . 421

15.4.18 Địa chỉ TIMx DMA để truyền đầy đủ (TIMx_DMAR) . . . . . . . . . . . . . . . 421

15.4.19 Bản đồ đăng ký TIMx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423

16 Bộ hẹn giờ đa năng (TIM9 đến TIM14). . . . . . . . . . . . . . . .. . . . . . . 425

16.1 Giới thiệu TIM9 đến TIM14 . .... . . . ...... . . . ...... . . . . . . . . . . . 425

16.2 Các tính năng chính của TIM9 đến TIM14. ... . . . ...... . . . ...... . . . . . . . . . . . 426

16.2.1 Các tính năng chính của TIM9/TIM12. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426

16.2.2 Các tính năng chính của TIM10/TIM11 và TIM13/TIM14 . . . . . . . . . . . . . . . . . . 427

16.3 Mô tả chức năng TIM9 đến TIM14. . . . . . . . . . . . . . . . . . . . . . . . . . . 428

11/12/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Nội dung

16.3.1 Đơn vị cơ sở thời gian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428

16.3.2 Chế độ bộ đếm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430

16.3.3 Lựa chọn đồng hồ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433

16.3.4 Chụp/so sánh các kênh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435

16.3.5 Chế độ chụp đầu vào . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436

16.3.6 Chế độ đầu vàoPWM (chỉ dành cho TIM9/12) . . . . . . . . . . . . . . . . . . . . . . . . . . 438

16.3.7 Chế độ đầu ra cưỡng bức . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439

16.3.8 Chế độ so sánh đầu ra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439

Chế độ 16.3.9PWM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440

16.3.10 Chế độ một xung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441

16.3.11 Đồng bộ hóa kích hoạt bên ngoài TIM9/12 . . . . . . . . . . . . . . . . . . . . . . . 443

16.3.12 Đồng bộ hóa bộ hẹn giờ (TIM9/12) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446

16.3.13 Chế độ gỡ lỗi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446

16.4 Thanh ghi TIM9 và TIM12 . ...... . . ....... . . ....... . . . . . . . . . . 447

16.4.1 Thanh ghi điều khiển TIM9/12 1 (TIMx_CR1) . . . . . . . . . . . . . . . . . . . . . . . . 447

16.4.2 Thanh ghi điều khiển chế độ phụ TIM9/12 (TIMx_SMCR) . . . . . . . . . . . . . . 448

16.4.3 TIM9/12 Thanh ghi cho phép ngắt (TIMx_DIER) . . . . . . . . . . . . . . . . . 449

16.4.4 Thanh ghi trạng thái TIM9/12 (TIMx_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 450

16.4.5 Thanh ghi tạo sự kiện TIM9/12 (TIMx_EGR) . . . . . . . . . . . . . . . . . 451

16.4.6 Thanh ghi chế độ chụp/so sánh TIM9/12 1 (TIMx_CCMR1) . . . . . . . . 452

16.4.7 Thanh ghi cho phép chụp/so sánh TIM9/12 (TIMx_CCER) . . . . . . . . . . 455

Bộ đếm 16.4.8 TIM9/12 (TIMx_CNT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456

Bộ chia tỷ lệ trước 16.4.9 TIM9/12 (TIMx_PSC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456

16.4.10 Thanh ghi tự động tải lại TIM9/12 (TIMx_ARR) . . . . . . . . . . . . . . . . . . . . . 456

16.4.11 TIM9/12 chụp/so sánh thanh ghi 1 (TIMx_CCR1) . . . . . . . . . . . . . . 457

16.4.12 TIM9/12 chụp/so sánh thanh ghi 2 (TIMx_CCR2) . . . . . . . . . . . . . . 457

16.4.13 Bản đồ đăng ký TIM9/12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458

16,5 thanh ghi TIM10/11/13/14 . ....... . . ....... . . ....... . . . . . . . . . . 460

16.5.1 Thanh ghi điều khiển TIM10/11/13/14 1 (TIMx_CR1) . . . . . . . . . . . . . . . . . . 460

16.5.2 TIM10/11/13/14 Thanh ghi cho phép ngắt (TIMx_DIER) . . . . . . . . . . . . 461

16.5.3 Thanh ghi trạng thái TIM10/11/13/14 (TIMx_SR) . . . . . . . . . . . . . . . . . . . . . 461

16.5.4 Thanh ghi tạo sự kiện TIM10/11/13/14 (TIMx_EGR) . . . . . . . . . . . 462

16.5.5 TIM10/11/13/14 thanh ghi chế độ chụp/so sánh 1 (TIMx_CCMR1) . . 462

16.5.6 TIM10/11/13/14 đăng ký cho phép chụp/so sánh (TIMx_CCER) . . . . 465

Bộ đếm 16.5.7 TIM10/11/13/14 (TIMx_CNT) . . . . . . . . . . . . . . . . . . . . . . . . . 466

Bộ đếm gộp trước 16.5.8 TIM10/11/13/14 (TIMx_PSC) . . . . . . . . . . . . . . . . . . . . . . . . 466

16.5.9 Thanh ghi tự động tải lại TIM10/11/13/14 (TIMx_ARR) . . . . . . . . . . . . . . . . 466

RM0008 Phiên bản 21 13/1136

26
Machine Translated by Google

Nội dung RM0008

16.5.10 TIM10/11/13/14 chụp/so sánh thanh ghi 1 (TIMx_CCR1) . . . . . . . . . 467

16.5.11 Đăng ký bản đồ TIM10/11/13/14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468

17 Bộ hẹn giờ cơ bản (TIM6 và TIM7). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469

17.1 Giới thiệu TIM6 và TIM7 . ..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469

17.2 Các tính năng chính của TIM6 và TIM7 . . . . . . ....... . . ....... . . . . . . . . . . 469

17.3 Mô tả chức năng TIM6 và TIM7. ...... . . ....... . . . . . . . . . . 470

17.3.1 Đơn vị cơ sở thời gian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470

17.3.2 Chế độ đếm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472

17.3.3 Nguồn đồng hồ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475

17.3.4 Chế độ gỡ lỗi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476

17.4 Thanh ghi TIM6 và TIM7 . ................ . . ....... . . . . . . . . . . 476

17.4.1 Thanh ghi điều khiển TIM6 và TIM7 1 (TIMx_CR1) . . . . . . . . . . . . . . . . . . 476

17.4.2 Thanh ghi điều khiển TIM6 và TIM7 2 (TIMx_CR2) . . . . . . . . . . . . . . . . . . 478

17.4.3 TIM6 và TIM7 DMA/Thanh ghi kích hoạt ngắt (TIMx_DIER) . . . . . . . 478

17.4.4 Thanh ghi trạng thái TIM6 và TIM7 (TIMx_SR) . . . . . . . . . . . . . . . . . . . . . . 479

17.4.5 Thanh ghi tạo sự kiện TIM6 và TIM7 (TIMx_EGR) . . . . . . . . . . . . 479

17.4.6 Bộ đếm TIM6 và TIM7 (TIMx_CNT) . . . . . . . . . . . . . . . . . . . . . . . . . . 479

17.4.7 Bộ đếm gộp trước TIM6 và TIM7 (TIMx_PSC) . . . . . . . . . . . . . . . . . . . . . . . . 480

17.4.8 Thanh ghi tự động tải lại TIM6 và TIM7 (TIMx_ARR) . . . . . . . . . . . . . . . . 480

17.4.9 Bản đồ đăng ký TIM6 và TIM7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481

18 Đồng hồ thời gian thực (RTC). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482

18.1 Giới thiệu RTC . .... . . ...... . . . ...... . . ....... . . . . . . . . . . . 482

Các tính năng chính của 18.2 RTC. . . . . . ....... . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483

18.3 Mô tả chức năng RTC . ...... . . ....... . . ....... . . . . . . . . . . 484

18.3.1 Tổng quan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484

18.3.2 Đặt lại các thanh ghi RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485

18.3.3 Đọc các thanh ghi RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485

18.3.4 Cấu hình thanh ghi RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485

18.3.5 Xác nhận cờ RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486

18.4 thanh ghi RTC . ............... . . ....... . . ....... . . . . . . . . . . . 487

18.4.1 Thanh ghi điều khiển RTC ở mức cao (RTC_CRH) . . . . . . . . . . . . . . . . . . . . . . . . 487

18.4.2 Thanh ghi điều khiển RTC ở mức thấp (RTC_CRL) . . . . . . . . . . . . . . . . . . . . . . . . . 488

18.4.3 Thanh ghi tải bộ chia tỷ lệ trước RTC (RTC_PRLH / RTC_PRLL) . . . . . . . . . . . 489

18.4.4 Thanh ghi bộ chia tỷ lệ trước RTC (RTC_DIVH / RTC_DIVL) . . . . . . . . . . 490

14/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Nội dung

18.4.5 Thanh ghi bộ đếm RTC (RTC_CNTH / RTC_CNTL) . . . . . . . . . . . . . . . . 491

18.4.6 Thanh ghi cảnh báo RTC ở mức cao (RTC_ALRH / RTC_ALRL) . . . . . . . . . . . . . . 492

18.4.7 Bản đồ đăng ký RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493

19 Cơ quan giám sát độc lập (IWDG). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494

19.1 Giới thiệu IWDG . ... . . ....... . . ....... . . ....... . . . . . . . . . . 494

19.2 Các tính năng chính của IWDG. . . . . ....... . . ....... . . ....... . . . . . . . . . . 494

19.3 Mô tả chức năng IWDG . .... . . . ...... . . ....... . . . . . . . . . . . 494

19.3.1 Cơ quan giám sát phần cứng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495

19.3.2 Đăng ký bảo vệ truy cập . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495

19.3.3 Chế độ gỡ lỗi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495

19.4 Đăng ký IWDG . .............. . . ....... . . ....... . . . . . . . . . . . 496

19.4.1 Thanh ghi khóa (IWDG_KR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496

19.4.2 Thanh ghi bộ chia tỷ lệ trước (IWDG_PR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496

19.4.3 Tải lại thanh ghi (IWDG_RLR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497

19.4.4 Thanh ghi trạng thái (IWDG_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497

19.4.5 Bản đồ đăng ký IWDG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499

20 Cơ quan giám sát cửa sổ (WWDG). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500

20.1 Giới thiệu về WWDG. .. . . ....... . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500

20.2 Các tính năng chính của WWDG. . . ...... . . ....... . . ....... . . . . . . . . . . . 500

20.3 Mô tả chức năng WWDG. .. . . . ...... . . ....... . . . . . . . . . . . 500

20.4 Cách lập trình thời gian chờ của cơ quan giám sát. . . . . . . . . . ..... . . . . . . . . . . . 502

20.5 Chế độ gỡ lỗi. . ...... . . . ..... . . . ...... . . . ....... . . ..... . . . . 503

20.6 đăng ký WWDG . ... . . .............. . . . ...... . . . ..... . . . . . 504

20.6.1 Thanh ghi điều khiển (WWDG_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504

20.6.2 Thanh ghi cấu hình (WWDG_CFR) . . . . . . . . . . . . . . . . . . . . . . . . . 505

20.6.3 Thanh ghi trạng thái (WWDG_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505

20.6.4 Bản đồ đăng ký WWDG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506

21 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC). . . . . . . . . . . . . . . . . . . . . 507

21.1 Các tính năng chính của FSMC. . . . ....... . . ....... . . ....... . . . . . . . . . . 507

21.2 Sơ đồ khối . ............... . . ....... . . ....... . . . . . . . . . . . 508

21.3 Giao diện AHB. ....... . . ...... . . . ...... . . ....... . . . . . . . . . . . 509

21.3.1 Bộ nhớ và giao dịch được hỗ trợ . . . . . . . . . . . . . . . . . . . . . . . . 510

21.4 Ánh xạ địa chỉ thiết bị bên ngoài . ......... . . ....... . . . . . . . . . . .511

RM0008 Phiên bản 21 15/1136

26
Machine Translated by Google

Nội dung RM0008

21.4.1 Ánh xạ địa chỉ NOR/PSRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511

21.4.2 Ánh xạ địa chỉ thẻ NAND/PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512

Bộ điều khiển 21.5 NOR Flash/PSRAM . .. . . ....... . . ....... . . . . . . . . . . . 513

21.5.1 Tín hiệu giao diện bộ nhớ ngoài. . . . . . . . . . . . . . . . . . . . . . . . . . . . 514

21.5.2 Bộ nhớ và giao dịch được hỗ trợ . . . . . . . . . . . . . . . . . . . . . . . . 515

21.5.3 Quy tắc chung về thời gian. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517

21.5.4 Giao dịch không đồng bộ của bộ điều khiển NOR Flash/PSRAM . . . . . . . . . 517

21.5.5 Giao dịch đồng bộ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535

21.5.6 Thanh ghi điều khiển NOR/PSRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541

21.6 Bộ điều khiển thẻ nhớ NAND Flash/PC . .. . . ....... . . ....... . . . . . . . . . . 548

21.6.1 Tín hiệu giao diện bộ nhớ ngoài. . . . . . . . . . . . . . . . . . . . . . . . . . . . 549

21.6.2 Bộ nhớ và giao dịch được hỗ trợ bởi NAND Flash / PC Card. . . . . . 551

21.6.3 Sơ đồ định thời cho NAND và Card PC. . . . . . . . . . . . . . . . . . . . . . 551

21.6.4 Hoạt động của NAND Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552

21.6.5 Chức năng chờ trước của NAND Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553

21.6.6 Tính toán mã sửa lỗi (ECC)

trong bộ nhớ NAND Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554

21.6.7 Hoạt động của PC Card/CompactFlash . . . . . . . . . . . . . . . . . . . . . . . . . . . 555

21.6.8 Thanh ghi điều khiển thẻ NAND Flash/PC . . . . . . . . . . . . . . . . . . . . . . . . 557

21.6.9 Bản đồ đăng ký FSMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564

22 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO). . . . . . . . . . . . . . . . . . . . 566

Các tính năng chính của 22.1 SDIO. . . . . ...... . . . ...... . . ....... . . . . . . . . . . . 566

Cấu trúc liên kết bus 22.2 SDIO. . . . . . ...... . . . ...... . . ....... . . . . . . . . . . . 567

22.3 Mô tả chức năng SDIO. ..... . . ....... . . ....... . . . . . . . . . . 569

Bộ chuyển đổi SDIO 22.3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570

22.3.2 Giao diện SDIO AHB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580

22.4 Mô tả chức năng thẻ. ...... . . ....... . . ....... . . . . . . . . . . 581

22.4.1 Chế độ nhận dạng thẻ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581

22.4.2 Đặt lại thẻ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581

22.4.3 Xác nhận dải điện áp hoạt động. . . . . . . . . . . . . . . . . . . . . . . . . . . 582

22.4.4 Quy trình nhận dạng thẻ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582

22.4.5 Ghi khối . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583

22.4.6 Chặn đọc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584

22.4.7 Truy cập luồng, ghi luồng và đọc luồng (chỉ MultiMediaCard) 584

22.4.8 Xóa: xóa nhóm và xóa khu vực . . . . . . . . . . . . . . . . . . . . . . . . . 585

22.4.9 Lựa chọn hoặc bỏ chọn bus rộng. . . . . . . . . . . . . . . . . . . . . . . . . . . . 586

16/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Nội dung

22.4.10 Quản lý bảo vệ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586

22.4.11 Đăng ký trạng thái thẻ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589

22.4.12 Thanh ghi trạng thái SD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592

Chế độ I/O 22.4.13 SD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596

22.4.14 Lệnh và phản hồi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597

22.5 Định dạng phản hồi . ..................... . . ....... . . . . . . . . . . 601

22.5.1 R1 (lệnh phản hồi bình thường) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601

22.5.2 R1b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601

22.5.3 R2 (thanh ghi CID, CSD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601

22.5.4 R3 (thanh ghi OCR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602

22.5.5 R4 (I/O nhanh) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602

22.5.6 R4b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602

22.5.7 R5 (yêu cầu ngắt) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603

22.5.8 R6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604

22.6 Hoạt động dành riêng cho thẻ I/O SDIO . ......... . . ....... . . . . . . . . . . 604

22.6.1 Thao tác chờ đọc I/O SDIO bằng tín hiệu SDIO_D2. . . . . . . . . . . . . 604

22.6.2 Hoạt động chờ đọc SDIO bằng cách dừng SDIO_CK . . . . . . . . . . . . . . . . 605

22.6.3 SDIO tạm dừng/tiếp tục hoạt động . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605

22.6.4 SDIO ngắt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605

22.7 Hoạt động cụ thể của CE-ATA . ..... . . ....... . . ....... . . . . . . . . . . 605

22.7.1 Tắt tín hiệu hoàn thành lệnh. . . . . . . . . . . . . . . . . . . . . . . . . . 605

22.7.2 Kích hoạt tín hiệu hoàn thành lệnh. . . . . . . . . . . . . . . . . . . . . . . . . . 606

22.7.3 CE-ATA ngắt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606

22.7.4 Hủy bỏ CMD61 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606

22.8 Kiểm soát dòng CTNH . .... . . ......................... . . . . . . . . . . . 606

22.9 thanh ghi SDIO. .............. . . ....... . . ....... . . . . . . . . . . . 606

22.9.1 Thanh ghi điều khiển nguồn SDIO (SDIO_POWER) . . . . . . . . . . . . . . . . . . . 607

22.9.2 Thanh ghi điều khiển đồng hồ SDI (SDIO_CLKCR) . . . . . . . . . . . . . . . . . . . . . 607

22.9.3 Thanh ghi đối số SDIO (SDIO_ARG) . . . . . . . . . . . . . . . . . . . . . . . . . 608

22.9.4 Thanh ghi lệnh SDIO (SDIO_CMD) . . . . . . . . . . . . . . . . . . . . . . . . 609

22.9.5 Thanh ghi phản hồi lệnh SDIO (SDIO_RESPCMD) . . . . . . . . . . . 610

22.9.6 Thanh ghi phản hồi SDIO 1..4 (SDIO_RESPx) . . . . . . . . . . . . . . . . . . . 610

22.9.7 Thanh ghi hẹn giờ dữ liệu SDIO (SDIO_DTIMER) . . . . . . . . . . . . . . . . . . . . . 611

22.9.8 Thanh ghi độ dài dữ liệu SDIO (SDIO_DLEN) . . . . . . . . . . . . . . . . . . . . . . 611

22.9.9 Thanh ghi điều khiển dữ liệu SDIO (SDIO_DCTRL) . . . . . . . . . . . . . . . . . . . . . 612

22.9.10 Thanh ghi bộ đếm dữ liệu SDIO (SDIO_DCOUNT) . . . . . . . . . . . . . . . . . . 613

RM0008 Phiên bản 21 17/1136

26
Machine Translated by Google

Nội dung RM0008

22.9.11 Thanh ghi trạng thái SDIO (SDIO_STA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614

22.9.12 Thanh ghi xóa ngắt SDIO (SDIO_ICR) . . . . . . . . . . . . . . . . . . . . . . 615

22.9.13 Thanh ghi mặt nạ SDIO (SDIO_MASK) . . . . . . . . . . . . . . . . . . . . . . . . . . . 617

22.9.14 Thanh ghi bộ đếm SDIO FIFO (SDIO_FIFOCNT) . . . . . . . . . . . . . . . . . . 619

22.9.15 Thanh ghi FIFO dữ liệu SDIO (SDIO_FIFO) . . . . . . . . . . . . . . . . . . . . . . . . 620

22.9.16 Bản đồ đăng ký SDIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621

23 Giao diện thiết bị tốc độ đầy đủ bus nối tiếp phổ quát (USB). . . . . . . . . . . 622

23.1 Giới thiệu USB . .... . . ...... . . . ...... . . ....... . . . . . . . . . . . 622

23.2 Các tính năng chính của USB. . . . . . ....... . . ....... . . ....... . . . . . . . . . . 622

23.3 Mô tả chức năng USB . ...... . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622

23.3.1 Mô tả các khối USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624

23.4 Những cân nhắc về lập trình . ... . . . ...... . . ....... . . . . . . . . . . . 625

23.4.1 Lập trình thiết bị USB chung . . . . . . . . . . . . . . . . . . . . . . . . . . . 625

23.4.2 Thiết lập lại hệ thống và bật nguồn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626

23.4.3 Điểm cuối được đệm đôi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631

23.4.4 Truyền đẳng thời . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634

23.4.5 Tạm dừng/Tiếp tục sự kiện . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635

23,5 thanh ghi USB . ....... . . ....... . . ....... . . . . . . . . . . . . . . . . . . . 637

23.5.1 Các thanh ghi chung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637

23.5.2 Các thanh ghi dành riêng cho điểm cuối . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644

23.5.3 Bảng mô tả bộ đệm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648

23.5.4 Bản đồ thanh ghi USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651

24 Mạng khu vực điều khiển (bxCAN). . . . . . . . . . . . . . . .. . . . . . . . . . . . . 653

Giới thiệu 24.1 bxCAN. .. . . ....... . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653

Các tính năng chính của 24.2 bxCAN. . . . . . . . . . . . ....... . . ....... . . . . . . . . . . . 653

24.3 bxCAN mô tả chung. ...... . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654

24.3.1 CAN 2.0B lõi hoạt động. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655

24.3.2 Các thanh ghi điều khiển, trạng thái và cấu hình. . . . . . . . . . . . . . . . . . . . . 655

24.3.3 Hộp thư Tx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655

24.3.4 Bộ lọc chấp nhận. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655

Chế độ hoạt động 24,4 bxCAN. . ............... . . ....... . . . . . . . . . . 656

24.4.1 Chế độ khởi tạo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657

24.4.2 Chế độ bình thường . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657

24.4.3 Chế độ ngủ (điện năng thấp) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657

18/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Nội dung

24.5 Chế độ kiểm tra . . . ....... . . ....... . . ....... . . ....... . . . . . . . . . . . 658

24.5.1 Chế độ im lặng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658

24.5.2 Chế độ lặp lại . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659

24.5.3 Loop back kết hợp với chế độ im lặng. . . . . . . . . . . . . . . . . . . . . . . . . 659

24.6 Chế độ gỡ lỗi. . 24.7 . . . . . . . . . ....... . . ............... . . . . . . . . . . . 660

bxCAN mô tả chức năng. ... . . . ...... . . ....... . . . . . . . . . . . 660

24.7.1 Xử lý truyền dẫn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660

24.7.2 Chế độ truyền thông kích hoạt theo thời gian . . . . . . . . . . . . . . . . . . . . . . . . . . 662

24.7.3 Xử lý lễ tân. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662

24.7.4 Lọc định danh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664

24.7.5 Lưu trữ tin nhắn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668

24.7.6 Quản lý lỗi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670

Thời gian bit 24.7.7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670

24,8 bxCAN ngắt. ... . . ....... . . ....... . . ....... . . . . . . . . . . . 672

24.9 CAN đăng ký. ....... . . ....... . . ....... . . . . . . . . . . . . . . . . . . . 674

24.9.1 Đăng ký bảo vệ truy cập . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674

24.9.2 CAN điều khiển và thanh ghi trạng thái. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674

24.9.3 CAN hộp thư đăng ký. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684

24.9.4 CAN lọc các thanh ghi . Bản đồ đăng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691

ký 24.9.5 bxCAN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695

25 Giao diện ngoại vi nối tiếp (SPI). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699

25.1 SPI giới thiệu. ..... . . ...... . . . ...... . . ....... . . . . . . . . . . . 699

25.2 SPI và các tính năng chính của I2S . . . . . . . . . ....... . . ....... . . . . . . . . . . 700

25.2.1 tính năng SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700

25.2.2 Tính năng I2S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701

25.3 Mô tả chức năng SPI. ....... . . ....... . . ....... . . . . . . . . . . 702

25.3.1 Mô tả chung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702

25.3.2 Định cấu hình SPI ở chế độ nô lệ. . . . . . . . . . . . . . . . . . . . . . . . . . . 706

25.3.3 Định cấu hình SPI ở chế độ chính. . . . . . . . . . . . . . . . . . . . . . . . . . 707

25.3.4 Định cấu hình SPI cho giao tiếp bán song công . . . . . . . . . . . . . . . 707

25.3.5 Thủ tục truyền và nhận dữ liệu. . . . . . . . . . . . . . . . . . . 708

25.3.6 Tính toán CRC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715

25.3.7 Cờ trạng thái . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717

25.3.8 Vô hiệu hóa SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718

25.3.9 Giao tiếp SPI sử dụng DMA (địa chỉ bộ nhớ trực tiếp) . . . . . . . . 719

RM0008 Phiên bản 21 19/1136

26
Machine Translated by Google

Nội dung RM0008

25.3.10 Cờ lỗi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721

25.3.11 SPI bị gián đoạn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722

25.4 Mô tả chức năng I2S . ....... . . ................ . . . . . . . . . . 723

25.4.1 Mô tả chung I2S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723

25.4.2 Các giao thức âm thanh được hỗ trợ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724

25.4.3 Bộ tạo xung nhịp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731

25.4.4 Chế độ chính I2S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736

25.4.5 Chế độ nô lệ I2S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737

25.4.6 Cờ trạng thái . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739

25.4.7 Cờ lỗi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740

25.4.8 I2S ngắt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740

Các tính năng DMA 25.4.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741

25,5 thanh ghi SPI và I2S . ......... . . . ...... . . ....... . . . . . . . . . . . 742

25.5.1 Thanh ghi điều khiển SPI 1 (SPI_CR1) (không được sử dụng ở chế độ I2S ) . . . . . . . . . . 742

25.5.2 Thanh ghi điều khiển SPI 2 (SPI_CR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744

25.5.3 Thanh ghi trạng thái SPI (SPI_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745

25.5.4 Thanh ghi dữ liệu SPI (SPI_DR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746

25.5.5 Thanh ghi đa thức SPI CRC (SPI_CRCPR) (không được sử dụng trong I2S

cách thức) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746

25.5.6 Thanh ghi SPI RX CRC (SPI_RXCRCR) (không được sử dụng ở chế độ I2S ) . . . . . . 747

25.5.7 Thanh ghi SPI TX CRC (SPI_TXCRCR) (không được sử dụng ở chế độ I2S ) . . . . . . . 748

25.5.8 Thanh ghi cấu hình SPI_I2S (SPI_I2SCFGR) . . . . . . . . . . . . . . . . . . 748

25.5.9 Thanh ghi bộ đếm gộp SPI_I2S (SPI_I2SPR) . . . . . . . . . . . . . . . . . . . . . . . 750

25.5.10 Bản đồ đăng ký SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751

26 Giao diện mạch tích hợp (I2C). . . . . . . . . . . . . . . . . . . . . . . . . 752

26.1 Giới thiệu I2C . ..... . . ....... . . ....... . . ....... . . . . . . . . . . . 752

26.2 Các tính năng chính của I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752

26.3 Mô tả chức năng I2C . ....... . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753

26.3.1 Lựa chọn chế độ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753

26.3.2 Chế độ nô lệ I2C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755

26.3.3 Chế độ chính I2C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757

26.3.4 Điều kiện lỗi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764

26.3.5 Điều khiển đường SDA/SCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765

26.3.6 SMBus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766

26.3.7 yêu cầu DMA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768

26.3.8 Kiểm tra lỗi gói . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770

20/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Nội dung

26.4 I2C ngắt . ............... . . ....... . . ....... . . . . . . . . . . . 770

26.5 Chế độ gỡ lỗi I2C . .... . . ....... . . ....... . . ....... . . . . . . . . . . . 772

26.6 thanh ghi I2C . . ....... . . ....... . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772

26.6.1 Thanh ghi điều khiển I2C 1 (I2C_CR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772

26.6.2 Thanh ghi điều khiển I2C 2 (I2C_CR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774

26.6.3 I2C Thanh ghi địa chỉ riêng 1 (I2C_OAR1) . . . . . . . . . . . . . . . . . . . . . . . 776

26.6.4 I2C Thanh ghi địa chỉ riêng 2 (I2C_OAR2) . . . . . . . . . . . . . . . . . . . . . . . 776

26.6.5 Thanh ghi dữ liệu I2C (I2C_DR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777

26.6.6 I2C Thanh ghi trạng thái 1 (I2C_SR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777

26.6.7 I2C Thanh ghi trạng thái 2 (I2C_SR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780

26.6.8 I2C Thanh ghi điều khiển đồng hồ (I2C_CCR) . . . . . . . . . . . . . . . . . . . . . . . . . 781

26.6.9 Thanh ghi I2C TRISE (I2C_TRISE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782

26.6.10 Bản đồ đăng ký I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784

27 Máy thu không đồng bộ đồng bộ phổ quát


máy phát (USART). . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . 785

27.1 Giới thiệu USART. .................... . . ....... . . . . . . . . . . 785

27.2 Các tính năng chính của USART. . . ....... . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786

27.3 Mô tả chức năng USART. ... . . ....... . . ....... . . . . . . . . . . 787

27.3.1 Mô tả ký tự USART. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790

27.3.2 Máy phát . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791

27.3.3 Người nhận . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794

27.3.4 Tạo tốc độ truyền phân số . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798

27.3.5 Dung sai của máy thu USART đối với độ lệch đồng hồ. . . . . . . . . . . . . . . . . . 800

27.3.6 Giao tiếp đa bộ xử lý . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 800

27.3.7 Kiểm soát tính chẵn lẻ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802

27.3.8 Chế độ LIN (mạng kết nối cục bộ) . . . . . . . . . . . . . . . . . . . . . . 803

27.3.9 Chế độ đồng bộ USART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805

27.3.10 Giao tiếp bán song công một dây . . . . . . . . . . . . . . . . . . . . . . . . 807

27.3.11 Thẻ thông minh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808

27.3.12 Khối IrDA SIR ENDEC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 810

27.3.13 Liên lạc liên tục bằng DMA . . . . . . . . . . . . . . . . . . . . . . . . 812

27.3.14 Kiểm soát luồng phần cứng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815

27.4 USART ngắt . .... . . ....... . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816

27.5 Cấu hình chế độ USART. ...... . . ....... . . . . . . . . . . . . . . . . . . 817

27.6 thanh ghi USART. ... . . ....... . . ....... . . ....... . . . . . . . . . . . 817

RM0008 Phiên bản 21 21/1136

26
Machine Translated by Google

Nội dung RM0008

27.6.1 Thanh ghi trạng thái (USART_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818

27.6.2 Thanh ghi dữ liệu (USART_DR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820

27.6.3 Thanh ghi tốc độ truyền (USART_BRR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820

27.6.4 Thanh ghi điều khiển 1 (USART_CR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821

27.6.5 Thanh ghi điều khiển 2 (USART_CR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823

27.6.6 Thanh ghi điều khiển 3 (USART_CR3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824

27.6.7 Thời gian bảo vệ và thanh ghi bộ đếm trước (USART_GTPR) . . . . . . . . . . . . . . 826

27.6.8 Bản đồ đăng ký USART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827

28 USB tốc độ tối đa khi đang di chuyển (OTG_FS). . . . . . . . . . . . . . . . . . . . . . . . . . 828

28.1 Giới thiệu về OOT_FS . . . . ...... . . ....... . . ....... . . . . . . . . . . . 828

28.2 Các tính năng chính củaOTG_FS. ....... . . ....... . . ....... . . . . . . . . . . . 829

28.2.1 Đặc điểm chung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829

28.2.2 Các tính năng của chế độ máy chủ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830

28.2.3 Tính năng chế độ ngoại vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830

28.3 Mô tả chức năngOTG_FS. .. . . ....... . . ....... . . . . . . . . . . 831

28.3.1 Chân OOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831

28.3.2 Lõi tốc độ đầy đủ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831

28.3.3 Tốc độ đầy đủ PHY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832

28.4 Thiết bị vai trò kép OOT (DRD) . .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833

28.4.1 Phát hiện dòng ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833

28.4.2 Thiết bị vai trò kép HNP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833

28.4.3 Thiết bị vai trò kép SRP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834

28.5 thiết bị ngoại vi USB. ...... . . ...... . . . ...... . . ....... . . . . . . . . . . . 834

28.5.1 Thiết bị ngoại vi có khả năng SRP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835

28.5.2 Trạng thái ngoại vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835

28.5.3 Điểm cuối ngoại vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836

Máy chủ USB 28.6 . . . . ....... . . ...... . . . ...... . . ....... . . . . . . . . . . . 838

28.6.1 Máy chủ có khả năng SRP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839

28.6.2 Trạng thái máy chủ USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839

28.6.3 Kênh chủ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841

28.6.4 Bộ lập lịch máy chủ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842

Kích hoạt SOF 28.7 . . . ....... . . ...... . . . ...... . . ....... . . . . . . . . . . . 843

28.7.1 SOF máy chủ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843

28.7.2 SOF ngoại vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843

28.8 Chế độ năng lượng thấp của otg. . ....... . . ....... . . . . . . . . . . . . . . . . . . . 844

22/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Nội dung

28.9 Cập nhật động của thanh ghiOTG_FS_HFIR . . . ..... . . . . . . . . . . . 845

28.10 FIFO dữ liệu USB . ... . . . ...... . . . ...... . . . ...... . . . . . . . . . . . . 846

28.11 Kiến trúc FIFO ngoại vi . ... . . . ...... . . . . . . . . . . . . . . . . . . . . 846

28.11.1 FIFO Rx ngoại vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846

28.11.2 FIFO Tx ngoại vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847

28.12 Kiến trúc máy chủ FIFO . . . ..... . . . . ..... . . . ...... . . . . . . . . . . . . 847

28.12.1 Máy chủ Rx FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847

28.12.2 Lưu trữ Tx FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 848

28.13 Phân bổ RAM FIFO . . . . ...... . . . ...... . . . ...... . . . . . . . . . . . 848

28.13.1 Chế độ thiết bị . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 848

28.13.2 Chế độ máy chủ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849

28.14 Hiệu năng hệ thống USB . ..... . . . ............... . . . . . . . . . . . 849

28.15 Ngắt kết nối OG_FS. .. . . . ..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850

28.16 Thanh ghi trạng thái và điều khiển OOT_FS . ..... . . . ...... . . . . . . . . . . . . 852

28.16.1 Bản đồ bộ nhớ CSR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853

28.16.2 Thanh ghi toàn cầuOTG_FS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 858

28.16.3 Thanh ghi chế độ máy chủ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 878

28.16.4 Thanh ghi chế độ thiết bị . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 889

28.16.5 Thanh ghi điều khiển cổng nguồn và đồng hồ OG_FS

(OTG_FS_PCGCCTL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 912

28.16.6 Bản đồ đăng kýOTG_FS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 913

28.17 Mô hình lập trình OOT_FS . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 922

28.17.1 Khởi tạo lõi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 922

28.17.2 Khởi tạo máy chủ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923

28.17.3 Khởi tạo thiết bị . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923

28.17.4 Mô hình lập trình máy chủ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 924

28.17.5 Mô hình lập trình thiết bị. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 940

28.17.6 Mô hình hoạt động . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942

28.17.7 Thời gian phản hồi trong trường hợp xấu nhất . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 960

28.17.8 Mô hình lập trình OOT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 961

29 Ethernet (ETH): kiểm soát truy cập phương tiện (MAC) với
Bộ điều khiển DMA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 968

29.1 Giới thiệu về Ethernet . . . . ...... . . . ...... . . . ...... . . . . . . . . . . . 968

29.2 Các tính năng chính của Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 968

29.2.1 Các tính năng cốt lõi của MAC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 969

RM0008 Phiên bản 21 23/1136

26
Machine Translated by Google

Nội dung RM0008

29.2.2 tính năng DMA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 970

29.2.3 Tính năng PTP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 970

29.3 Chân Ethernet . ....... . . ...... . . . ...... . . ....... . . . . . . . . . . . 971

29.4 Mô tả chức năng Ethernet: SMI, MII và RMII . . . . . . . . . . . . . . . . 972

29.4.1 Giao diện quản lý trạm: SMI . . . . . . . . . . . . . . . . . . . . . . . . . . 972

29.4.2 Giao diện độc lập với phương tiện: MII . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975

29.4.3 Giảm giao diện không phụ thuộc vào phương tiện truyền thông: RMII . . . . . . . . . . . . . . . . . . . 977

Lựa chọn 29.4.4 MII/RMII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 979

29.5 Mô tả chức năng Ethernet: MAC 802.3 . . . . . . . . . . . . . . . . . . . . . . 979

Định dạng khung 29.5.1 MAC 802.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 980

29.5.2 Truyền khung MAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 984

29.5.3 Tiếp nhận khung MAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991

29.5.4 MAC ngắt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 996

29.5.5 Lọc MAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997

29.5.6 Chế độ quay vòng MAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1000

29.5.7 Bộ đếm quản lý MAC: MMC . . . . . . . . . . . . . . . . . . . . . . . . . . 1000

29.5.8 Quản lý nguồn điện: PMT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1001

29.5.9 Giao thức thời gian chính xác (IEEE1588 PTP) . . . . . . . . . . . . . . . . . . . . . . 1004

29.6 Mô tả chức năng Ethernet: Hoạt động của bộ điều khiển DMA. . . . . . . . . . 1010

29.6.1 Khởi tạo quá trình truyền bằng DMA . . . . . . . . . . . . . . . . . . . . . . . . . 1011

29.6.2 Truy cập hàng loạt bus máy chủ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1011

29.6.3 Căn chỉnh bộ đệm dữ liệu máy chủ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1012

29.6.4 Tính toán kích thước bộ đệm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1012

Trọng tài DMA 29.6.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1013

29.6.6 Phản hồi lỗi đối với DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1013

Cấu hình 29.6.7 Tx DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1013

Cấu hình 29.6.8 Rx DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1022

29.6.9 DMA bị gián đoạn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10:30

29.7 Ethernet bị gián đoạn . ... . . ....... . . ....... . . ....... . . . . . . . . . 1031

29.8 Mô tả thanh ghi Ethernet . .... . . . . . . . . . . . . . . . . . . . . . . . . . . . 1032

29.8.1 Mô tả thanh ghi MAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1032

29.8.2 Mô tả đăng ký MMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1049

29.8.3 Thanh ghi nhãn thời gian IEEE 1588 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1054

29.8.4 Mô tả thanh ghi DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1058

29.8.5 Bản đồ thanh ghi Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1071

24/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Nội dung

30 Thiết bị chữ ký điện tử. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1076

30.1 Thanh ghi kích thước bộ nhớ . . . . . . . . . . . . ...... . . ....... . . . . . . . . . . 1076

30.1.1 Thanh ghi kích thước flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1076

30.2 Thanh ghi ID thiết bị duy nhất (96 bit) . . . . ...... . . . ...... . . . . . . . . . 1077

31 Hỗ trợ gỡ lỗi (DBG). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1079

31.1 Tổng quan . . . ....... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1079

31.2 Tài liệu tham khảo Arm® . .......... . . ....... . . . . . . . . . 1081

31.3 Cổng gỡ lỗi SWJ (dây nối tiếp và JTAG) . ..... . . . ...... . . . . . . . . . 1081

31.3.1 Cơ chế chọn JTAG-DP hoặc SW-DP . . . . . . . . . . . . . . . 1082

31.4 Sơ đồ chân và gỡ lỗi các chân cổng. . . . . . . . . . . . . . . . . ....... . . . . . . . . . 1082

31.4.1 Chân cổng gỡ lỗi SWJ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1082

31.4.2 Việc gán chân SWJ-DP linh hoạt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1082

31.4.3 Kéo lên và kéo xuống bên trong trên các chân JTAG. . . . . . . . . . . . . . . . . . . 1083

31.4.4 Sử dụng dây nối tiếp và giải phóng các chân gỡ lỗi không sử dụng dưới dạng GPIO. . 1085

31.5 STM32F10xxx Kết nối JTAG TAP . ...... . . ....... . . . . . . . . . 1085

31.6 Mã ID và cơ chế khóa. .......... . . ....... . . . . . . . . . 1087

31.6.1 Mã ID thiết bị MCU. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1087

31.6.2 Quét ranh giới TAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1088

31.6.3 Cortex®-M3 TAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1088

Mã ID 31.6.4 Cortex®-M3 JEDEC-106 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1088

31.7 Cổng gỡ lỗi JTAG. .... . . ...... . . . ...... . . ....... . . . . . . . . . . 1088

Cổng gỡ lỗi 31.8 SW. ...... . . ...... . . . ...... . . ....... . . . . . . . . . . 1090

31.8.1 Giới thiệu giao thức SW. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090

31.8.2 Trình tự giao thức SW. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090

31.8.3 Máy trạng thái SW-DP (đặt lại, trạng thái không hoạt động, mã ID) . . . . . . . . . . . . . . 1091

31.8.4 Truy cập đọc/ghi DP và AP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1092

31.8.5 Thanh ghi SW-DP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1092

31.8.6 Thanh ghi SW-AP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1093

31.9 AHB-AP (cổng truy cập AHB) - hợp lệ cho cả JTAG-DP


và SW-DP. . ....... . . ....... . . ....... . . ....... . . . . . . . . . 1093

31.10 Gỡ lỗi lõi. . ....... . . ....... . . ....... . . ....... . . . . . . . . . 1095

31.11 Khả năng kết nối của máy chủ trình gỡ lỗi khi thiết lập lại hệ thống. . . . . 1096

31.12 FPB (Điểm dừng bản vá flash) . ... . . . ...... . . . . . . . . . . . . . . . . . . . 1096

31,13 DWT (kích hoạt điểm theo dõi dữ liệu). . . . . . ....... . . ....... . . . . . . . . . 1097

RM0008 Phiên bản 21 25/1136

26
Machine Translated by Google

Nội dung RM0008

31.14 ITM (macrocell theo dõi thiết bị) . ...... . . ....... . . . . . . . . . 1097

31.14.1 Mô tả chung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1097

31.14.2 Gói tem thời gian, gói đồng bộ hóa và gói tràn . . . . . . . 1097

31.15 ETM (Dấu vết Macrocell™ được nhúng) . ...... . . ....... . . . . . . . . . . 1099

31.15.1 Mô tả chung về ETM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1099

31.15.2 Giao thức tín hiệu ETM và các loại gói . . . . . . . . . . . . . . . . . . . . . . . . 1099

31.15.3 Các thanh ghi ETM chính . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1100

31.15.4 Ví dụ về cấu hình ETM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1100

31.16 Thành phần gỡ lỗi MCU (DBGMCU) . ....... . . ....... . . . . . . . . . .1100

31.16.1 Hỗ trợ gỡ lỗi cho chế độ năng lượng thấp . . . . . . . . . . . . . . . . . . . . . . . . . 1100

31.16.2 Hỗ trợ gỡ lỗi cho bộ hẹn giờ, cơ quan giám sát, bxCAN và I2C . . . . . . . . . . . . 1101

31.16.3 Gỡ lỗi thanh ghi cấu hình MCU. . . . . . . . . . . . . . . . . . . . . . . . . . 1101

31.17 TPIU (đơn vị giao diện cổng theo dõi) . . . . . ....... . . ....... . . . . . . . . . . .1103

31.17.1 Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1103

31.17.2 Gán chân TRACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1105

31.17.3 Bộ định dạng TPUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1106

31.17.4 Gói đồng bộ khung TPUI . . . . . . . . . . . . . . . . . . . . . . . . . 1107

31.17.5 Truyền gói khung đồng bộ hóa . . . . . . . . . . . . . . 1107

31.17.6 Chế độ đồng bộ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107

31.17.7 Chế độ không đồng bộ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1108

31.17.8 Kết nối TRACECLKIN bên trong STM32F10xxx . . . . . . . . . . . . . 1108

31.17.9 TPIU đăng ký . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1108

31.17.10 Ví dụ về cấu hình . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1109

31.18 Bản đồ đăng ký DBG . .... . . ...... . . . ...... . . ....... . . . . . . . . . . .1110

32 Lịch sử sửa đổi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1111

26/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Danh sách các bảng

Danh sách các bảng

Bảng 1. Các phần liên quan đến từng sản phẩm STM32F10xxx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

Ban 2. Các phần liên quan đến từng thiết bị ngoại vi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

Bàn số 3. Đăng ký địa chỉ ranh giới. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

Bảng 4. Tổ chức mô-đun flash (thiết bị có mật độ thấp) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

Bảng 5. Tổ chức mô-đun flash (thiết bị có mật độ trung bình) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

Bảng 6. Tổ chức mô-đun flash (thiết bị có mật độ cao) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

Bảng 7. Tổ chức mô-đun Flash (các thiết bị đường kết nối). . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

Bảng 8. Tổ chức mô-đun Flash mật độ XL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

Bảng 9. Các chế độ khởi động. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

Bảng 10. Bản đồ đăng ký đơn vị tính toán CRC và giá trị đặt lại. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

Bảng 11. Tóm tắt chế độ năng lượng thấp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

Bảng 12. Đi ngủ ngay. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

Bảng 13. Ngủ khi thoát. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

Bảng 14. Chế độ dừng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

Bảng 15. Chế độ chờ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

Bảng 16. Sơ đồ đăng ký PWR và giá trị đặt lại. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

Bảng 17. Bản đồ đăng ký BKP và giá trị đặt lại. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

Bảng 18. Sơ đồ thanh ghi RCC và các giá trị đặt lại. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

Bảng 19. Sơ đồ đăng ký RCC và các giá trị đặt lại. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

Bảng 20. Bảng cấu hình bit cổng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

Bảng 21. Các bit MODE đầu ra. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

Bảng 22. Bộ định thời nâng cao TIM1 và TIM8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

Bảng 23. Bộ hẹn giờ đa năng TIM2/3/4/5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

Bảng 24. USART. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

Bảng 25. SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

Bảng 26. I2S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

Bảng 27. I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

Bảng 28. bxCAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

Bảng 29. USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

Bảng 30. Cấu hình chânOTG_FS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

Bảng 31. SDIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

Bảng 32. FSMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

Bảng 33. Các IO khác. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

Bảng 34. Ánh xạ lại chức năng thay thế CAN1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

Bảng 35. Ánh xạ lại chức năng thay thế CAN2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

Bảng 36. Tín hiệu giao diện gỡ lỗi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

Bảng 37. Ánh xạ cổng gỡ lỗi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

Bảng 38. Ánh xạ lại chức năng thay thế chuyển đổi được chèn kích hoạt bên ngoài ADC1. . . . . . . . . . . . . 177

Bảng 39. Ánh xạ lại chức năng thay thế kích hoạt bên ngoài ADC1. . . . . . . . . . . . . 177

Bảng 40. Ánh xạ lại chức năng thay thế chuyển đổi được chèn kích hoạt bên ngoài ADC2. . . . . . . . . . . . . 177

Bảng 41. Ánh xạ lại chức năng thay thế kích hoạt bên ngoài ADC2. . . . . . . . . . . . . 178

Bảng 42. Ánh xạ lại chức năng thay thế TIM5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

Bảng 43. Ánh xạ lại chức năng thay thế TIM4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

Bảng 44. Ánh xạ lại chức năng thay thế TIM3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

Bảng 45. Ánh xạ lại chức năng thay thế TIM2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

Bảng 46. Ánh xạ lại chức năng thay thế TIM1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

Bảng 47. Ánh xạ lại TIM9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

Bảng 48. Ánh xạ lại TIM10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

RM0008 Phiên bản 21 27/1136

31
Machine Translated by Google

Danh sách các bảng RM0008

Bảng 49. Ánh xạ lại TIM11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

Bảng 50. Ánh xạ lại TIM13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

Bảng 51. Ánh xạ lại TIM14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

Bảng 52. Ánh xạ lại USART3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

Bảng 53. Ánh xạ lại USART2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

Bảng 54. Ánh xạ lại USART1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

Bảng 55. Ánh xạ lại I2C1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

Bảng 56. Ánh xạ lại SPI1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

Bảng 57. Ánh xạ lại SPI3/I2S3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

Bảng 58. Ánh xạ lại ETH. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

Bảng 59. Bản đồ đăng ký GPIO và giá trị đặt lại. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

Bảng 60. Sơ đồ đăng ký AFIO và giá trị đặt lại . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

Bảng 61. Bảng vector các thiết bị đường kết nối. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

Bảng 62. Bảng vectơ cho thiết bị có mật độ XL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

Bảng 63. Bảng vectơ cho các thiết bị STM32F10xxx khác. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

Bảng 64. Sơ đồ đăng ký bộ điều khiển sự kiện/ngắt bên ngoài và các giá trị đặt lại. . . . . . . . . . . . . . . . . . . 214

Bảng 65. Chân ADC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218

Bảng 66. Lựa chọn kênh cơ quan giám sát tương tự. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220

Bảng 67. Kích hoạt bên ngoài cho các kênh thông thường cho ADC1 và ADC2 . . . . . . . . . . . . . . . . . . . . . . . . 225

Bảng 68. Kích hoạt bên ngoài cho các kênh được đưa vào cho ADC1 và ADC2 . . . . . . . . . . . . . . . . . . . . . . . 226

Bảng 69. Kích hoạt bên ngoài cho các kênh thông thường cho ADC3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226

Bảng 70. Kích hoạt bên ngoài cho các kênh được đưa vào cho ADC3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226

Bảng 71. ADC ngắt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236

Bảng 72. Bản đồ thanh ghi ADC và giá trị đặt lại. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

Bảng 73. Chân DAC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

Bảng 74. Kích hoạt bên ngoài . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258

Bảng 75. Sơ đồ thanh ghi DAC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273

Bảng 76. Độ rộng dữ liệu có thể lập trình và hành vi endian (khi bit PINC = MINC = 1) . . . . . . . . 279

Bảng 77. Yêu cầu ngắt DMA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280

Bảng 78. Tóm tắt các yêu cầu DMA1 cho từng kênh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282

Bảng 79. Tóm tắt các yêu cầu DMA2 cho từng kênh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283

Bảng 80. Bản đồ đăng ký DMA và giá trị đặt lại. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

Bảng 81. Hướng đếm so với tín hiệu mã hóa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330

Bảng 82. Kết nối kích hoạt nội bộ TIMx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344

Bảng 83. Các bit điều khiển đầu ra cho các kênh OCx và OCxN bổ sung với

tính năng phá vỡ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355

Bảng 84. TIM1 và TIM8 đăng ký bản đồ và giá trị đặt lại. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363

Bảng 85. Hướng đếm so với tín hiệu mã hóa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393

Bảng 86. Kết nối kích hoạt nội bộ TIMx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409

Bảng 87. Bit điều khiển đầu ra cho các kênh OCx tiêu chuẩn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418

Bảng 88. Bản đồ đăng ký TIMx và giá trị đặt lại . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423

Bảng 89. Kết nối kích hoạt nội bộ TIMx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449

Bảng 90. Bit điều khiển đầu ra cho các kênh OCx tiêu chuẩn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456

Bảng 91. Bản đồ đăng ký TIM9/12 và giá trị đặt lại . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458

Bảng 92. Bit điều khiển đầu ra cho các kênh OCx tiêu chuẩn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465

Bảng 93. Bản đồ đăng ký TIM10/11/13/14 và giá trị đặt lại . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468

Bảng 94. TIM6 và TIM7 đăng ký bản đồ và giá trị đặt lại. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481

Bảng 95. Bản đồ đăng ký RTC và giá trị đặt lại. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493

Bảng 96. Khoảng thời gian chờ IWDG tối thiểu/tối đa (tính bằng ms) ở 40 kHz (LSI). . . . . . . . . . . . . . . . . . . . . . . . . . . 495

Bảng 97. Bản đồ đăng ký IWDG và giá trị đặt lại. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499

. . . . . . . . . . . . . . . . . . . . . 503
Bảng 98. Giá trị thời gian chờ tối thiểu và tối đa @36 MHz (fPCLK1). .

Bảng 99. Bản đồ đăng ký WWDG và giá trị đặt lại. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506

28/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Danh sách các bảng

Bảng 100. Lựa chọn ngân hàng NOR/PSRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511

Bảng 101. Địa chỉ bộ nhớ ngoài. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512

Bảng 102. Các thanh ghi ánh xạ bộ nhớ và thời gian. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512

Bảng 103. Lựa chọn ngân hàng NAND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513

Bảng 104. Các tham số truy cập NOR/PSRAM có thể lập trình được. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514

Bảng 105. I/O NOR Flash không ghép kênh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514

Bảng 106. Flash I/O đa kênh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515

Bảng 107. PSRAM/SRAM I/O không ghép kênh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515

Bảng 108. Bộ điều khiển NOR Flash/PSRAM: ví dụ về các bộ nhớ và giao dịch được hỗ trợ . . . . . 516

Bảng 109. Các trường bit FSMC_BCRx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

Bảng 110. Các trường bit FSMC_BTRx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

Bảng 111. Các trường bit FSMC_BCRx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521

Bảng 112. Các trường bit FSMC_BTRx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521

Bảng 113. Các trường bit FSMC_BWTRx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522

Bảng 114. Các trường bit FSMC_BCRx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524

Bảng 115. Các trường bit FSMC_BTRx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524

Bảng 116. Các trường bit FSMC_BWTRx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525

Bảng 117. Các trường bit FSMC_BCRx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526

Bảng 118. Các trường bit FSMC_BTRx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527

Bảng 119. Các trường bit FSMC_BWTRx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527

Bảng 120. Các trường bit FSMC_BCRx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529

Bảng 121. Các trường bit FSMC_BTRx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529

Bảng 122. Các trường bit FSMC_BWTRx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530

Bảng 123. Các trường bit FSMC_BCRx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531

Bảng 124. Các trường bit FSMC_BTRx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532

Bảng 125. Các trường bit FSMC_BCRx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537

Bảng 126. Các trường bit FSMC_BTRx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538

Bảng 127. Các trường bit FSMC_BCRx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539

Bảng 128. Các trường bit FSMC_BTRx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540

Bảng 129. Các thông số truy cập Thẻ NAND/PC có thể lập trình. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549

Bảng 130. Flash NAND 8 bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549

Bảng 131. Flash NAND 16-bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550

Bảng 132. Thẻ PC 16 bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550

Bảng 133. Bộ nhớ và giao dịch được hỗ trợ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551

Bảng 134. Tín hiệu PC-Card 16-bit và loại truy cập. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556

Bảng 135. Kết quả ECC bit liên quan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563

Bảng 136. Sơ đồ đăng ký FSMC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564

Bảng 137. Định nghĩa SDIO I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570

Bảng 138. Dạng lệnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574

Bảng 139. Dạng phản hồi ngắn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575

Bảng 140. Dạng phản hồi dài. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575

Bảng 141. Cờ trạng thái đường dẫn lệnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575

Bảng 142. Định dạng mã thông báo dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578

Bảng 143. Truyền cờ trạng thái FIFO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579

Bảng 144. Nhận cờ trạng thái FIFO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580

Bảng 145. Trạng thái thẻ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590

Bảng 146. Trạng thái SD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593

Bảng 147. Trường mã lớp tốc độ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594

Bảng 148. Trường di chuyển hiệu suất . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594

Bảng 149. Trường AU_SIZE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595

Bảng 150. Kích thước AU tối đa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595

Bảng 151. Xóa trường kích thước . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595

RM0008 Phiên bản 21 29/1136

31
Machine Translated by Google

Danh sách các bảng RM0008

Bảng 152. Xóa trường hết thời gian chờ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596

Bảng 153. Xóa trường offset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596

Bảng 154. Lệnh ghi theo khối . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598

Bảng 155. Các lệnh bảo vệ ghi theo khối. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599

Bảng 156. Lệnh xóa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599

Bảng 157. Các lệnh chế độ I/O. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600

Bảng 158. Khóa thẻ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600

Bảng 159. Các lệnh dành riêng cho ứng dụng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600

Bảng 160. Phản hồi R1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601

Bảng 161. Phản hồi của R2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601

Bảng 162. Phản hồi R3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602

Bảng 163. Phản hồi R4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602

Bảng 164. Phản hồi R4b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603

Bảng 165. Phản hồi R5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603

Bảng 166. Phản hồi R6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604

Bảng 167. Loại phản hồi và thanh ghi SDIO_RESPx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610

Bảng 168. Sơ đồ thanh ghi SDIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621

Bảng 169. Định nghĩa cờ đệm đôi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632

Bảng 170. Sử dụng bộ đệm bộ nhớ đệm đôi số lượng lớn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633

Bảng 171. Cách sử dụng bộ đệm bộ nhớ đẳng thời . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634

Bảng 172. Tiếp tục phát hiện sự kiện . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636

Bảng 173. Mã hóa trạng thái tiếp nhận . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647

Bảng 174. Mã hóa kiểu điểm cuối . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647

Bảng 175. Ý nghĩa loại điểm cuối . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647

Bảng 176. Mã hóa trạng thái truyền . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648

Bảng 177. Định nghĩa bộ nhớ đệm được phân bổ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651

Bảng 178. Bản đồ thanh ghi USB và giá trị đặt lại . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651

Bảng 179. Truyền ánh xạ hộp thư . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668

Bảng 180. Nhận ánh xạ hộp thư. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668

Bảng 181. Bản đồ đăng ký bxCAN và các giá trị đặt lại. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695

Bảng 182. Yêu cầu ngắt SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722

Bảng 183. Độ chính xác tần số âm thanh sử dụng chuẩn HSE 8 MHz

(chỉ các thiết bị có mật độ cao và mật độ XL). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732

Bảng 184. Độ chính xác tần số âm thanh sử dụng chuẩn 25 MHz và PLL3

(chỉ dành cho các thiết bị có đường kết nối). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734

Bảng 185. Độ chính xác tần số âm thanh sử dụng chuẩn 14,7456 MHz và PLL3

(chỉ dành cho các thiết bị có đường kết nối). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735

Bảng 186. Yêu cầu ngắt I2S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741

Bảng 187. Bản đồ đăng ký SPI và giá trị đặt lại . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751

Bảng 188. SMBus so với I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766

Bảng 189. Yêu cầu ngắt I2C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770

Bảng 190. Bản đồ đăng ký I2C và giá trị đặt lại . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784

Bảng 191. Phát hiện tiếng ồn từ dữ liệu được lấy mẫu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797

Bảng 192. Tính toán lỗi cho tốc độ truyền được lập trình. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 799

Bảng 193. Dung sai bộ thu USART khi DIV_Fraction bằng 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 800

Bảng 194. Dung sai bộ thu USART khi DIV_Fraction khác 0 . . . . . . . . . . . . . . . . . . 800

Bảng 195. Định dạng khung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802

Bảng 196. Yêu cầu ngắt USART. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816

Bảng 197. Cấu hình chế độ USART. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817

Bảng 198. Bản đồ đăng ký USART và giá trị đặt lại. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827

Bảng 199. Các chân đầu vào/đầu ra của OOT_FS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831

Bảng 200. Khả năng tương thích của chế độ năng lượng thấp STM32 vớiOTG. . . . . . . . . . . . . . . . . . . . . . . . . 844

30/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Danh sách các bảng

Bảng 201. Các thanh ghi trạng thái và điều khiển toàn cầu cốt lõi (CSR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853

Bảng 202. Các thanh ghi trạng thái và điều khiển chế độ máy chủ (CSR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854

Bảng 203. Thanh ghi trạng thái và điều khiển chế độ thiết bị . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855

Bảng 204. Sơ đồ thanh ghi truy cập dữ liệu FIFO (DFIFO). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 856

Bảng 205. Các thanh ghi trạng thái và điều khiển cổng đồng hồ và nguồn. . . . . . . . . . . . . . . . . . . . . . . . . . . . 857

Bảng 206. Giá trị TRDT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863

Bảng 207. Thời lượng tối thiểu để ngắt kết nối mềm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 891

Bảng 208. Bản đồ đăng kýOTG_FS và giá trị đặt lại . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 913

Bảng 209. Cấu hình chân Ethernet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 971

Bảng 210. Định dạng khung quản lý . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 973

Bảng 211. Phạm vi đồng hồ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975

Bảng 212. Mã hóa tín hiệu giao diện TX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976

Bảng 213. Mã hóa tín hiệu giao diện RX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977

Bảng 214. Trạng thái khung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 993

Bảng 215. Lọc địa chỉ đích. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 999

Bảng 216. Lọc địa chỉ nguồn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1000

Bảng 217. Nhận mô tả 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1028

Bảng 218. Bản đồ thanh ghi Ethernet và các giá trị đặt lại . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1072

Bảng 219. Các chân cổng gỡ lỗi SWJ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1082

Bảng 220. Việc gán chân SWJ-DP linh hoạt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1083

Bảng 221. Thanh ghi dữ liệu cổng gỡ lỗi JTAG. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1089

Bảng 222. Các thanh ghi cổng gỡ lỗi 32-bit được xử lý thông qua giá trị được dịch chuyển A[3:2] . . . . . . . . . . . . 1090

Bảng 223. Yêu cầu gói (8-bit) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1091

Bảng 224. Phản hồi ACK (3 bit). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1091

Bảng 225. Truyền dữ liệu (33 bit) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1091

Bảng 226. Thanh ghi SW-DP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1092

Bảng 227. Thanh ghi Cortex®-M3 AHB-AP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1094

Bảng 228. Các thanh ghi gỡ lỗi lõi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1095

Bảng 229. Các thanh ghi ITM chính . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1098

Bảng 230. Các thanh ghi ETM chính. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1100

Bảng 231. Việc gán chân TRACE không đồng bộ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1105

Bảng 232. Gán chân TRACE đồng bộ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1105

Bảng 233. Việc gán chân TRACE linh hoạt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1106

Bảng 234. Các thanh ghi TPIU quan trọng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1108

Bảng 235. Bản đồ đăng ký DBG và giá trị đặt lại. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1110

Bảng 236. Lịch sử sửa đổi tài liệu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1111

RM0008 Phiên bản 21 31/1136

31
Machine Translated by Google

Danh sách các số liệu RM0008

Danh sách các số liệu

Hình 1. Kiến trúc hệ thống (thiết bị có mật độ thấp, trung bình, XL) . . . . . . . . . . . . . . . . . . . . . . . . . 47

Hình 2. Kiến trúc hệ thống trong các thiết bị đường kết nối. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

Hình 3. Sơ đồ khối đơn vị tính toán CRC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

Hình 4. Tổng quan về nguồn điện. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

Hình 5. Dạng sóng đặt lại bật/tắt nguồn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

Hình 6. Ngưỡng PVD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

Hình 7. Sơ đồ đơn giản của mạch reset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

Hình 8. Cây đồng hồ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

Hình 9. Nguồn xung nhịp HSE/LSE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

Hình 10. Sơ đồ đơn giản của mạch reset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

Hình 11. Cây đồng hồ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

Hình 12. Nguồn xung nhịp HSE/LSE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

Hình 13. Cấu trúc cơ bản của bit cổng I/O tiêu chuẩn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

Hình 14. Cấu trúc cơ bản của bit cổng I/O chịu được 5-Volt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

Hình 15. Nhập cấu hình thả nổi/kéo lên/kéo xuống. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

Hình 16. Cấu hình đầu ra. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

Hình 17. Cấu hình chức năng thay thế. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

Hình 18. Cấu hình tương tự trở kháng cao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

Hình 19. ADC/DAC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

Hình 20. Sơ đồ khối bộ điều khiển sự kiện/ngắt bên ngoài. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207

Hình 21. Ánh xạ GPIO sự kiện/ngắt bên ngoài. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

Hình 22. Sơ đồ khối ADC đơn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

Hình 23. Sơ đồ thời gian. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220

Hình 24. Khu vực bảo vệ cơ quan giám sát analog. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220

Hình 25. Độ trễ chuyển đổi được đưa vào . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

Hình 26. Sơ đồ thời gian hiệu chỉnh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

Hình 27. Căn lề phải của dữ liệu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

Hình 28. Căn lề trái của dữ liệu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

Hình 29. Sơ đồ khối ADC kép(1). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229

Hình 30. Chế độ đồng thời được đưa vào 4 kênh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

Hình 31. Chế độ đồng thời thông thường trên 16 kênh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

Hình 32. Chế độ xen kẽ nhanh trên 1 kênh ở chế độ chuyển đổi liên tục. . . . . . . . . . . . . . . 231

Hình 33. Chế độ xen kẽ chậm trên 1 kênh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232

Hình 34. Trình kích hoạt thay thế: nhóm kênh được đưa vào của mỗi ADC. . . . . . . . . . . . . . . . . . . . . . . . . . . 232

Hình 35. Bộ kích hoạt thay thế: 4 kênh được đưa vào (mỗi ADC) trong mô hình không liên tục. . . . . . . . . . . 233

Hình 36. Đồng thời thay thế + thường xuyên. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234

Hình 37. Trường hợp kích hoạt xảy ra trong quá trình chuyển đổi được chèn vào. . . . . . . . . . . . . . . . . . . . . . . . . . . . 234

Hình 38. Kênh đơn xen kẽ với chuỗi CH11, CH12 được chèn vào. . . . . . . . . . . . . . . . . . . 235

Hình 39. Sơ đồ khối cảm biến nhiệt độ và kênh VREFINT. . . . . . . . . . . . . . . . . . . . . . . 235

Hình 40. Sơ đồ khối kênh DAC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

Hình 41. Thanh ghi dữ liệu ở chế độ kênh DAC đơn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

Hình 42. Thanh ghi dữ liệu ở chế độ kênh DAC kép. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

Hình 43. Sơ đồ thời gian chuyển đổi khi vô hiệu trigger TEN = 0. . . . . . . . . . . . . . . . . . . . . 258

Hình 44. Thuật toán tính toán thanh ghi DAC LFSR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

Hình 45. Chuyển đổi DAC (bật kích hoạt SW) với việc tạo sóng LFSR. . . . . . . . . . . . . . . . . 260

Hình 46. Tạo sóng tam giác DAC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260

Hình 47. Chuyển đổi DAC (bật SW trigger) với việc tạo sóng tam giác . . . . . . . . . . . . . . . 261

Hình 48. Sơ đồ khối DMA trong các thiết bị đường kết nối. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275

32/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Danh sách các số liệu

Hình 49. Sơ đồ khối DMA trong các thiết bị có mật độ thấp, trung bình-cao và XL. . . . . . . . . . . . . . . . 276

Hình 50. Ánh xạ yêu cầu DMA1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281

Hình 51. Ánh xạ yêu cầu DMA2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283

Hình 52. Sơ đồ khối bộ định thời điều khiển nâng cao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294

Hình 53. Sơ đồ định thời của bộ đếm với bộ chia tỷ lệ trước thay đổi từ 1 thành 2 . . . . . . . . . . . . . . . . . 296

Hình 54. Sơ đồ định thời của bộ đếm với bộ chia tỷ lệ trước thay đổi từ 1 thành 4. . . . . . . . . . . . . . . . . 296

Hình 55. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297

Hình 56. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

Hình 57. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

Hình 58. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho N. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

Hình 59. Sơ đồ định thời bộ đếm, cập nhật sự kiện khi ARPE=0 (TIMx_ARR chưa được tải trước) . . . . . 299

Hình 60. Sơ đồ định thời của bộ đếm, cập nhật sự kiện khi ARPE=1 (TIMx_ARR được tải trước). . . . . . . . 299

Hình 61. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301

Hình 62. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301

Hình 63. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302

Hình 64. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho N. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302

Hình 65. Sơ đồ thời gian của bộ đếm, sự kiện cập nhật khi bộ đếm lặp lại không được sử dụng. . . . . . . . . . . 303

Hình 66. Sơ đồ định thời bộ đếm, clock bên trong chia cho 1, TIMx_ARR = 0x6. . . . . . . . . . . . . . 304

Hình 67. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304

Hình 68. Sơ đồ định thời của bộ đếm, xung nhịp bên trong chia cho 4, TIMx_ARR=0x36. . . . . . . . . . . . . . 305

Hình 69. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho N. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

Hình 70. Sơ đồ thời gian của bộ đếm, sự kiện cập nhật với ARPE=1 (bộ đếm tràn) . . . . . . . . . . . . 306

Hình 71. Sơ đồ định thời bộ đếm, Sự kiện cập nhật với ARPE=1 (tràn bộ đếm) . . . . . . . . . . . . . 306

Hình 72. Ví dụ về tốc độ cập nhật tùy thuộc vào chế độ và cài đặt thanh ghi TIMx_RCR. . . . . . . . . 307

Hình 73. Mạch điều khiển ở chế độ bình thường, xung nhịp bên trong chia cho 1. . . . . . . . . . . . . . . . . . . . . . . . 308

Hình 74. Ví dụ về kết nối đồng hồ bên ngoài TI2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309

Hình 75. Mạch điều khiển ở chế độ xung nhịp ngoài 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310

Hình 76. Khối đầu vào kích hoạt bên ngoài . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310

Hình 77. Mạch điều khiển ở chế độ xung nhịp ngoài 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311

Hình 78. Kênh thu thập/so sánh (ví dụ: giai đoạn đầu vào kênh 1) . . . . . . . . . . . . . . . . . . . . . . 312

Hình 79. Chụp/so sánh mạch chính kênh 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312

Hình 80. Giai đoạn đầu ra của kênh thu thập/so sánh (kênh 1 đến 3) . . . . . . . . . . . . . . . . . . . . . . . 313

Hình 81. Giai đoạn đầu ra của kênh thu thập/so sánh (kênh 4). . . . . . . . . . . . . . . . . . . . . . . . . . . 313

Hình 82. Thời gian ở chế độ đầu vàoPWM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315

Hình 83. Chế độ so sánh đầu ra, bật OC1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

Hình 84. Dạng sóng điều chỉnh cạnh (ARR=8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318

Hình 85. Dạng sóng điều chỉnh trung tâm (ARR=8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320

Hình 86. Đầu ra bổ sung có chèn thời gian chết. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

Hình 87. Dạng sóng thời gian chết có độ trễ lớn hơn xung âm. . . . . . . . . . . . . . . . . . 322

Hình 88. Dạng sóng thời gian chết có độ trễ lớn hơn xung dương. . . . . . . . . . . . . . . . . . . 322

Hình 89. Hành vi đầu ra phản ứng với sự ngắt quãng... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

Hình 90. Xóa TIMx OCxREF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326

Hình 91. Ví dụ về tạo 6 bước, COM (OSSR=1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327

Hình 92. Ví dụ về chế độ một xung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328

Hình 93. Ví dụ về hoạt động của bộ đếm trong chế độ giao diện bộ mã hóa. . . . . . . . . . . . . . . . . . . . . . . . . 331

Hình 94. Ví dụ về chế độ giao diện bộ mã hóa với cực TI1FP1 bị đảo ngược. . . . . . . . . . . . . . . . . . 331

Hình 95. Ví dụ về giao diện cảm biến Hall. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333

Hình 96. Mạch điều khiển ở chế độ reset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334

Hình 97. Mạch điều khiển ở chế độ cổng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335

Hình 98. Mạch điều khiển ở chế độ kích hoạt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336

Hình 99. Mạch điều khiển ở chế độ xung nhịp ngoài 2 + chế độ trigger. . . . . . . . . . . . . . . . . . . . . . . . . . 337

Hình 100. Sơ đồ khối bộ đếm thời gian đa năng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

RM0008 Phiên bản 21 33/1136

39
Machine Translated by Google

Danh sách các số liệu RM0008

Hình 101. Sơ đồ định thời của bộ đếm với bộ chia tỷ lệ trước thay đổi từ 1 thành 2 . . . . . . . . . . . . . . . . . 369

Hình 102. Sơ đồ định thời của bộ đếm với bộ chia tỷ lệ trước thay đổi từ 1 thành 4. . . . . . . . . . . . . . . . . 369

Hình 103. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370

Hình 104. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370

Hình 105. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371

Hình 106. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho N. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371

Hình 107. Sơ đồ định thời của bộ đếm, Sự kiện cập nhật khi ARPE=0 (TIMx_ARR chưa được tải trước). . . . . 372

Hình 108. Sơ đồ định thời của bộ đếm, Cập nhật sự kiện khi ARPE=1 (TIMx_ARR được tải trước). . . . . . . . 372

Hình 109. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373

Hình 110. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374

Hình 111. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374

Hình 112. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho N. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374

Hình 113. Sơ đồ định thời của bộ đếm, Sự kiện cập nhật. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375

Hình 114. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 1, TIMx_ARR=0x6. . . . . . . . . . . . . . . 376

Hình 115. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376

Hình 116. Sơ đồ định thời bộ đếm, xung nhịp bên trong chia cho 4, TIMx_ARR=0x36 . . . . . . . . . . . . . . 377

Hình 117. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho N. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377

Hình 118. Sơ đồ định thời của bộ đếm, Sự kiện cập nhật với ARPE=1 (bộ đếm tràn). . . . . . . . . . . . 378

Hình 119. Sơ đồ định thời bộ đếm, Sự kiện cập nhật với ARPE=1 (tràn bộ đếm) . . . . . . . . . . . . . 378

Hình 120. Mạch điều khiển ở chế độ bình thường, xung nhịp bên trong chia cho 1. . . . . . . . . . . . . . . . . . . . . . . . 379

Hình 121. Ví dụ về kết nối đồng hồ bên ngoài TI2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380

Hình 122. Mạch điều khiển ở chế độ xung nhịp ngoài 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381

Hình 123. Khối đầu vào kích hoạt bên ngoài . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381

Hình 124. Mạch điều khiển ở chế độ xung nhịp ngoài 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382

Hình 125. Kênh thu thập/so sánh (ví dụ: giai đoạn đầu vào kênh 1) . . . . . . . . . . . . . . . . . . . . . . 382

Hình 126. Chụp/so sánh mạch chính kênh 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383

Hình 127. Giai đoạn đầu ra của kênh chụp/so sánh (kênh 1). . . . . . . . . . . . . . . . . . . . . . . . . . . 383

Hình 128. Thời gian ở chế độ đầu vàoPWM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385

Hình 129. Chế độ so sánh đầu ra, bật OC1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387

Hình 130. Dạng sóng điều chỉnh cạnh (ARR=8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388

Hình 131. Dạng sóng điều chỉnh trung tâm (ARR=8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389

Hình 132. Ví dụ về chế độ một xung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390

Hình 133. Xóa TIMx OCxREF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392

Hình 134. Ví dụ về hoạt động của bộ đếm trong chế độ giao diện bộ mã hóa. . . . . . . . . . . . . . . . . . . . . . . . 394

Hình 135. Ví dụ về chế độ giao diện bộ mã hóa có đảo cực TI1FP1. . . . . . . . . . . . . . . . . 394

Hình 136. Mạch điều khiển ở chế độ reset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395

Hình 137. Mạch điều khiển ở chế độ cổng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396

Hình 138. Mạch điều khiển ở chế độ trigger. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397

Hình 139. Mạch điều khiển ở chế độ xung nhịp ngoài 2 + chế độ trigger. . . . . . . . . . . . . . . . . . . . . . . . . . 398

Hình 140. Ví dụ về bộ đếm thời gian Master/Slave. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398

Hình 141. Bộ định thời cổng 2 với OC1REF của bộ định thời 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399

Hình 142. Hẹn giờ cổng 2 với Bật bộ hẹn giờ 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400

Hình 143. Kích hoạt bộ định thời 2 với bản cập nhật của bộ định thời 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401

Hình 144. Kích hoạt bộ hẹn giờ 2 với Bật bộ hẹn giờ 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402

Hình 145. Kích hoạt bộ định thời 1 và 2 với đầu vào TI1 của bộ định thời 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403

Hình 146. Sơ đồ khối bộ định thời đa năng (TIM9 và TIM12) . . . . . . . . . . . . . . . . . . . . . . . . 426

Hình 147. Sơ đồ khối bộ định thời đa năng (TIM10/11/13/14) . . . . . . . . . . . . . . . . . . . . . . . . 427

Hình 148. Sơ đồ định thời của bộ đếm với bộ chia tỷ lệ trước thay đổi từ 1 thành 2 . . . . . . . . . . . . . . . . . 429

Hình 149. Sơ đồ định thời của bộ đếm với bộ chia tỷ lệ trước thay đổi từ 1 thành 4 . . . . . . . . . . . . . . . . . 429

Hình 150. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430

Hình 151. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431

Hình 152. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431

34/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Danh sách các số liệu

Hình 153. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho N. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431

Hình 154. Sơ đồ định thời bộ đếm, cập nhật sự kiện khi ARPE=0 (TIMx_ARR chưa được tải trước) . . . . . 432

Hình 155. Sơ đồ định thời bộ đếm, cập nhật sự kiện khi ARPE=1 (TIMx_ARR được tải trước) . . . . . . . . 432

Hình 156. Mạch điều khiển ở chế độ bình thường, xung nhịp bên trong chia cho 1. . . . . . . . . . . . . . . . . . . . . . . . 433

Hình 157. Ví dụ về kết nối đồng hồ bên ngoài TI2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434

Hình 158. Mạch điều khiển ở chế độ xung nhịp ngoài 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434

Hình 159. Kênh thu thập/so sánh (ví dụ: giai đoạn đầu vào kênh 1) . . . . . . . . . . . . . . . . . . . . . . 435

Hình 160. Chụp/so sánh mạch chính kênh 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436

Hình 161. Giai đoạn đầu ra của kênh chụp/so sánh (kênh 1). . . . . . . . . . . . . . . . . . . . . . . . . . . 436

Hình 162. Thời gian ở chế độ đầu vàoPWM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438

Hình 163. Chế độ so sánh đầu ra, bật OC1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440

Hình 164. Dạng sóng điều chỉnh cạnh (ARR=8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441

Hình 165. Ví dụ về chế độ một xung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442

Hình 166. Mạch điều khiển ở chế độ reset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444

Hình 167. Mạch điều khiển ở chế độ cổng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445

Hình 168. Mạch điều khiển ở chế độ trigger. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445

Hình 169. Sơ đồ khối bộ đếm thời gian cơ bản. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470

Hình 170. Sơ đồ định thời của bộ đếm với bộ chia tỷ lệ trước thay đổi từ 1 thành 2 . . . . . . . . . . . . . . . . . 471

Hình 171. Sơ đồ định thời của bộ đếm với bộ chia tỷ lệ trước thay đổi từ 1 thành 4 . . . . . . . . . . . . . . . . . 472

Hình 172. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473

Hình 173. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473

Hình 174. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474

Hình 175. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho N. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474

Hình 176. Sơ đồ định thời bộ đếm, cập nhật sự kiện khi ARPE=0 (TIMx_ARR không

được tải trước). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474

Hình 177. Sơ đồ định thời bộ đếm, cập nhật sự kiện khi ARPE=1 (TIMx_ARR

được tải trước). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475

Hình 178. Mạch điều khiển ở chế độ bình thường, xung nhịp bên trong chia cho 1. . . . . . . . . . . . . . . . . . . . . . . . 475

Hình 179. Sơ đồ khối đơn giản hóa RTC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484

Hình 180. Ví dụ về dạng sóng thứ hai và cảnh báo RTC với PR=0003, ALARM=00004 . . . . . . . . . . 486

Hình 181. Ví dụ về dạng sóng tràn RTC với PR=0003. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486

Hình 182. Sơ đồ khối cơ quan giám sát độc lập. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495

Hình 183. Sơ đồ khối Watchdog. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501

Hình 184. Sơ đồ thời gian giám sát cửa sổ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502

Hình 185. Sơ đồ khối FSMC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509

Hình 186. Ngân hàng bộ nhớ FSMC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511

Hình 187. Truy cập đọc Mode1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518

Hình 188. Truy cập ghi Mode1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518

Hình 189. Truy cập đọc ModeA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520

Hình 190. Truy cập ghi ModeA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520

Hình 191. Truy cập đọc Mode2 và Mode B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522

Hình 192. Truy cập ghi Mode2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523

Hình 193. Truy cập ghi ở chế độ B. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523

Hình 194. Truy cập đọc chế độ C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525

Hình 195. Truy cập ghi ở chế độ C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526

Hình 196. Truy cập đọc chế độ D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528

Hình 197. Truy cập ghi chế độ D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528

Hình 198. Truy cập đọc đa kênh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530

Hình 199. Truy cập ghi đa kênh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531

Hình 200. Chờ không đồng bộ trong quá trình truy cập đọc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533

Hình 201. Chờ không đồng bộ trong quá trình truy cập ghi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534

Hình 202. Chờ cấu hình. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536

RM0008 Phiên bản 21 35/1136

39
Machine Translated by Google

Danh sách các số liệu RM0008

Hình 203. Chế độ đọc đa kênh đồng bộ - NOR, PSRAM (CRAM). . . . . . . . . . . . . . . . . . . . 537

Hình 204. Chế độ ghi đa kênh đồng bộ - PSRAM (CRAM). . . . . . . . . . . . . . . . . . . . . . . . . 539

Hình 205. Định thời gian của bộ điều khiển Thẻ NAND/PC để truy cập bộ nhớ chung. . . . . . . . . . . . . . . . . . . 552

Hình 206. Truy cập vào NAND-Flash non 'CE don't care' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553

Hình 207. Hoạt động SDIO “không có phản hồi” và “không có dữ liệu” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567

Hình 208. Thao tác đọc khối SDIO (nhiều) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567

Hình 209. Thao tác ghi khối SDIO (nhiều) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568

Hình 210. Thao tác đọc tuần tự SDIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568

Hình 211. Thao tác ghi tuần tự SDIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568

Hình 212. Sơ đồ khối SDIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569

Hình 213. Bộ chuyển đổi SDIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570

Hình 214. Bộ điều khiển . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571

Hình 215. Đường dẫn lệnh của bộ điều hợp SDIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572

Hình 216. Máy trạng thái đường dẫn lệnh (CPSM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573

Hình 217. Truyền lệnh SDIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574

Hình 218. Đường dẫn dữ liệu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576

Hình 219. Máy trạng thái đường dẫn dữ liệu (DPSM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577

Hình 220. Sơ đồ khối ngoại vi USB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623

Hình 221. Vùng đệm gói với ví dụ về vị trí bảng mô tả bộ đệm. . . . . . . . . . . . . 628

Hình 222. Cấu trúc liên kết mạng CAN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655

Hình 223. Sơ đồ khối CAN kép (thiết bị kết nối) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656

Hình 224. Các chế độ hoạt động của bxCAN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658

Hình 225. bxCAN ở chế độ im lặng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659

Hình 226. bxCAN ở chế độ lặp lại. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659

Hình 227. bxCAN ở chế độ kết hợp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660

Hình 228. Truyền trạng thái hộp thư. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662

Hình 229. Nhận trạng thái FIFO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663

Hình 230. Cấu hình quy mô ngân hàng bộ lọc - tổ chức đăng ký. . . . . . . . . . . . . . . . . . . . . . . . . . . 665

Hình 231. Ví dụ về đánh số bộ lọc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666

Hình 232. Cơ chế lọc - Ví dụ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667

Hình 233. Sơ đồ trạng thái lỗi CAN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669

Hình 234. Định thời bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671

Hình 235. Khung CAN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672

Hình 236. Cờ sự kiện và tạo ngắt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673

Hình 237. Hộp thư RX và TX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684

Hình 238. Sơ đồ khối SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702

Hình 239. Ứng dụng chính/đơn phụ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703

Hình 240. Sơ đồ định thời đồng hồ dữ liệu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705

Hình 241. Hành vi TXE/RXNE/BSY ở chế độ Master / full-duplex (BIDIMODE=0 và

RXONLY=0) trong trường hợp truyền liên tục. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711

Hình 242. Hành vi TXE/RXNE/BSY ở chế độ Slave/full-duplex (BIDIMODE=0,

RXONLY=0) trong trường hợp truyền liên tục. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712

Hình 243. Hành vi TXE/BSY ở chế độ chỉ truyền Chính (BIDIMODE=0 và RXONLY=0)

trong trường hợp chuyển khoản liên tục. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713

Hình 244. TXE/BSY ở chế độ chỉ truyền Slave (BIDIMODE=0 và RXONLY=0) trong trường hợp truyền liên tục. .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713

Hình 245. Hành vi của RXNE ở chế độ chỉ nhận (BIDIRMODE=0 và RXONLY=1)

trong trường hợp chuyển khoản liên tục. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714

Hình 246. Hành vi TXE/BSY khi truyền (BIDIRMODE=0 và RXONLY=0) trong trường hợp truyền không liên tục.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715

Hình 247. Truyền dẫn sử dụng DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720

Hình 248. Tiếp nhận sử dụng DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720

36/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Danh sách các số liệu

Hình 249. Sơ đồ khối I2S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723

Hình 250. Dạng sóng giao thức I2S Philips (độ chính xác đầy đủ 16/32-bit, CPOL = 0). . . . . . . . . . . . . . . . . 725

Hình 251. I2S Dạng sóng tiêu chuẩn Philips (khung 24-bit có CPOL = 0). . . . . . . . . . . . . . . . . . . . . 725

Hình 252. Truyền 0x8EAA33 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726

Hình 253. Nhận 0x8EAA33 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726

Hình 254. I2S Chuẩn Philips (16-bit mở rộng thành khung gói 32-bit với CPOL = 0) . . . . . . . . . 726

Hình 255. Ví dụ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726

Hình 256. MSB căn chỉnh độ dài chính xác đầy đủ 16-bit hoặc 32-bit với CPOL = 0 . . . . . . . . . . . . . . . . . . 727

Hình 257. MSB điều chỉnh độ dài khung 24-bit với CPOL = 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727

Hình 258. MSB hợp lý hóa khung gói 16-bit được mở rộng thành 32-bit với CPOL = 0 . . . . . . . . . . . . . . . . 728

Hình 259. LSB chứng minh độ chính xác đầy đủ 16-bit hoặc 32-bit với CPOL = 0 . . . . . . . . . . . . . . . . . . . . . . . . 728

Hình 260. LSB điều chỉnh độ dài khung 24-bit với CPOL = 0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728

Hình 261. Các thao tác cần thiết để truyền 0x3478AE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729

Hình 262. Các thao tác cần thiết để nhận 0x3478AE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729

Hình 263. LSB hợp lý hóa khung gói 16-bit được mở rộng thành 32-bit với CPOL = 0 . . . . . . . . . . . . . . . . 729

Hình 264. Ví dụ về LSB hợp lý 16-bit mở rộng khung gói 32-bit. . . . . . . . . . . . . . . . . . . 730

Hình 265. Dạng sóng chuẩn PCM (16-bit) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 730

Hình 266. Dạng sóng tiêu chuẩn PCM (16-bit mở rộng thành khung gói 32-bit). . . . . . . . . . . . . . . . . 731

Hình 267. Định nghĩa tần số lấy mẫu âm thanh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731

Hình 268. Kiến trúc bộ tạo xung nhịp I2S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732

Hình 269. Giao thức bus I2C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754

Hình 270. Sơ đồ khối I2C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755

Hình 271. Sơ đồ trình tự truyền tải cho bộ phát phụ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756

Hình 272. Sơ đồ trình tự truyền tải cho bộ thu phụ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757

Hình 273. Sơ đồ trình tự truyền tải cho bộ phát chính. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760

Hình 274. Cách 1: Sơ đồ trình tự truyền tải cho máy thu chính. . . . . . . . . . . . . . . . . . . . . . . 761

Hình 275. Cách 2: Sơ đồ trình tự truyền cho bộ thu chính khi N>2 . . . . . . . . . . . . . . . 762

Hình 276. Cách 2: Sơ đồ trình tự truyền cho bộ thu chính khi N=2 . . . . . . . . . . . . . . . 763

Hình 277. Cách 2: Sơ đồ trình tự truyền cho bộ thu chính khi N=1 . . . . . . . . . . . . . . . 764

Hình 278. Sơ đồ ánh xạ ngắt I2C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771

Hình 279. Sơ đồ khối USART. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789

Hình 280. Lập trình độ dài từ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790

Hình 281. Các bit dừng có thể cấu hình được. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792

Hình 282. Hành vi TC/TXE khi truyền . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793

Hình 283. Bắt đầu phát hiện bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794

Hình 284. Lấy mẫu dữ liệu để phát hiện tiếng ồn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796

Hình 285. Chế độ tắt tiếng bằng cách sử dụng tính năng phát hiện dòng không hoạt động. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801

Hình 286. Chế độ tắt tiếng bằng cách sử dụng tính năng phát hiện dấu địa chỉ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802

Hình 287. Phát hiện ngắt ở chế độ LIN (độ dài ngắt 11 bit - bit LBDL được đặt). . . . . . . . . . . . . . . . . 804

Hình 288. Phát hiện ngắt trong chế độ LIN so với phát hiện lỗi đóng khung. . . . . . . . . . . . . . . . . . . . . . . . . 805

Hình 289. Ví dụ USART về truyền đồng bộ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806

Hình 290. Sơ đồ định thời đồng hồ dữ liệu USART (M=0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806

Hình 291. Sơ đồ định thời đồng hồ dữ liệu USART (M=1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807

Hình 292. Thời gian thiết lập/giữ dữ liệu RX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807

Hình 293. Giao thức không đồng bộ ISO 7816-3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808

Hình 294. Phát hiện lỗi chẵn lẻ bằng cách sử dụng 1,5 bit stop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 810

Hình 295. Sơ đồ khối IrDA SIR ENDEC- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812

Hình 296. Điều chế dữ liệu IrDA (3/16) -chế độ bình thường . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812

Hình 297. Truyền dẫn sử dụng DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813

Hình 298. Tiếp nhận sử dụng DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814

Hình 299. Điều khiển luồng phần cứng giữa hai USART. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815

Hình 300. Điều khiển luồng RTS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815

RM0008 Phiên bản 21 37/1136

39
Machine Translated by Google

Danh sách các số liệu RM0008

Hình 301. Điều khiển luồng CTS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816

Hình 302. Sơ đồ ánh xạ ngắt USART. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817

Hình 303. Sơ đồ khối tốc độ đầy đủ củaOTG. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831

Hình 304. Kết nối thiết bị OOT AB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833

Hình 305. Kết nối chỉ dành cho thiết bị ngoại vi USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834

Hình 306. Kết nối chỉ dành cho máy chủ USB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839

Hình 307. Kết nối SOF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843

Hình 308. Cập nhật linh hoạtOT_FS_HFIR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845

Hình 309. Ánh xạ địa chỉ FIFO ở chế độ thiết bị và ánh xạ truy cập FIFO AHB. . . . . . . . . . . . . . 846

Hình 310. Ánh xạ địa chỉ FIFO ở chế độ máy chủ và ánh xạ truy cập FIFO AHB. . . . . . . . . . . . . . . . 847

Hình 311. Phân cấp ngắt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851

Hình 312. Bản đồ bộ nhớ CSR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853

Hình 313. Truyền nhiệm vụ ghi FIFO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925

Hình 314. Nhận tác vụ đọc FIFO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926

Hình 315. Các giao dịch OUT/SETUP số lượng lớn/điều khiển và số lượng lớn/điều khiển IN thông thường. . . . . . . . . . . . . . . . . 927

Hình 316. Giao dịch IN hàng loạt/kiểm soát . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9:30

Hình 317. Giao dịch OUT/IN ngắt thông thường . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932

Hình 318. Giao dịch OUT/IN đẳng thời bình thường . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937

Hình 319. Nhận đọc gói FIFO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 943

Hình 320. Xử lý gói SETUP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 945

Hình 321. Giao dịch OUT số lượng lớn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 952

Hình 322. Trường hợp định thời gian tối đa TRDT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 961

Hình 323. SRP thiết bị A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 962

Hình 324. SRP thiết bị B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 963

Hình 325. Thiết bị A HNP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964

Hình 326. B-thiết bị HNP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 966

Hình 327. Sơ đồ khối ETH. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 972

Hình 328. Tín hiệu giao diện SMI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 973

Hình 329. Cấu trúc khung và định thời MDIO - Chu kỳ ghi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974

Hình 330. Cấu trúc khung và định thời MDIO - Chu kỳ đọc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975

Hình 331. Tín hiệu giao diện độc lập với phương tiện truyền thông. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975

Hình 332. Nguồn đồng hồ MII. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977

Hình 333. Giảm tín hiệu giao diện độc lập với phương tiện truyền thông. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 978

Hình 334. Nguồn đồng hồ RMII. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 978

Hình 335. Sơ đồ đồng hồ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 979

Hình 336. Định dạng trường địa chỉ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 981

Hình 337. Định dạng khung MAC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983

Hình 338. Định dạng khung MAC được gắn thẻ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983

Hình 339. Thứ tự bit truyền . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 990

Hình 340. Truyền động không va chạm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 990

Hình 341. Truyền có va chạm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991

Hình 342. Truyền khung ở chế độ MMI và RMII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991

Hình 343. Nhận thứ tự bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 995

Hình 344. Tiếp nhận không có lỗi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 996

Hình 345. Tiếp nhận có lỗi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 996

Hình 346. Tiếp nhận với chỉ báo sóng mang sai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 996

Hình 347. Sơ đồ che dấu ngắt lõi MAC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997

Hình 348. Thanh ghi bộ lọc khung Wakeup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1001

Hình 349. Đồng bộ hóa thời gian nối mạng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1005

Hình 350. Cập nhật thời gian hệ thống bằng phương pháp Sửa mịn. . . . . . . . . . . . . . . . . . . . . . . . . . 1007

Hình 351. Đầu ra kích hoạt PTP tới kết nối TIM2 ITR1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1009

Hình 352. Đầu ra PPS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1010

38/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Danh sách các số liệu

Hình 353. Cấu trúc vòng và chuỗi mô tả. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1011

Hình 354. Hoạt động TxDMA ở chế độ Mặc định. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015

Hình 355. Hoạt động TxDMA ở chế độ OSF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1017

Hình 356. Bộ mô tả truyền . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1018

Hình 357. Nhận hoạt động DMA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024

Hình 358. Cấu trúc mô tả Rx DMA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1026

Hình 359. Sơ đồ ngắt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1031

Hình 360. Thanh ghi bộ lọc khung đánh thức từ xa Ethernet MAC (ETH_MACRWUFFR). . . . . . . . . . . 1041

Hình 361. Sơ đồ khối hỗ trợ gỡ lỗi cấp độ STM32 MCU và Cortex®-M3. . . . . . . . . . . . . . 1080

Hình 362. Cổng gỡ lỗi SWJ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1081

Hình 363. Kết nối JTAG TAP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1086

Hình 364. Sơ đồ khối TPIU. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1104

RM0008 Phiên bản 21 39/1136

39
Machine Translated by Google

Tổng quan về hướng dẫn RM0008

1 Tổng quan về hướng dẫn

Chú thích cho Bảng 1: phần trong mỗi hàng áp dụng cho các sản phẩm trong cột được đánh dấu bằng “ •”

Bảng 1. Các mục liên quan đến từng sản phẩm STM32F10xxx

xx501F23MTS

xx701F23MTS
Thẩm quyền giải quyết

TtS
m
đ

Tt
S
m
đ

TtS
m
đ
Mhậ

Mh

Mhậ

3ất

3ấ
t

3ất
xx101F2p

xx201F2p

xx301F2p
TbS
m
đ
t

TbS
m
đ
t

TbS
m
đ
t
Mìậ

r

Mìậ

r

Mìậ

r
3nt
u

3nt
u

3nt
u
2hn

2hn

2hn
xx101Fg

xx201Fg

xx301Fg
TX
ML
x101F23o
tậ

a
àS
m
đ
c
v

ML
xx301F23o
t TX


a
à S
m
đ
c
v
Phần 2: Quy ước về tài liệu

Phần 3: Kiến trúc bộ nhớ và bus

Phần 4: Đơn vị tính toán CRC

Phần 5: Điều khiển công suất (PWR) • • • • • • • • • • •

Phần 6: Các thanh ghi dự phòng (BKP) • • • • • • • • • • •


Phần 7: Thiết lập lại và điều khiển đồng hồ
• • • • • • • • •
(RCC) mật độ thấp, trung bình, cao và XL

Phần 8: Thiết bị đường kết nối: reset và điều


• •
khiển xung nhịp (RCC)

Phần 9: I/O đa năng và chức năng thay thế (GPIO


• • • • • • • • • • •
và AFIO)

Phần 10: Ngắt và sự kiện


Phần 13: Bộ điều khiển truy cập bộ nhớ
• • • • • • • • • • •
trực tiếp (DMA)

Phần 11: Bộ chuyển đổi analog sang digital


• • • • • • • • • • •
(ADC)

Phần 12: Bộ chuyển đổi Digital sang Analog


• • • •
(ĐẮC)

Phần 14: Bộ hẹn giờ điều khiển nâng cao (TIM1 và


• • • • • • •
TIM8)

Phần 15: Bộ hẹn giờ đa năng (TIM2 đến TIM5)


• • • • • • • • • • •

Phần 16: Bộ hẹn giờ đa năng (TIM9 đến TIM14) •(1) •(1)

Phần 17: Bộ định thời cơ bản (TIM6 và TIM7) • • • •

Phần 18: Đồng hồ thời gian thực (RTC) • • • • • • • • • • •

40/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Tổng quan về hướng dẫn

Bảng 1. Các phần liên quan đến từng sản phẩm STM32F10xxx (tiếp theo)

xx501F23MTS

xx701F23MTS
TtS
m
đ

Tt
S
m
đ

TtS
m
đ
Mhậ

Mh

Mhậ

3ất

3ấ
t

3ất
xx101F2p

xx201F2p

xx301F2p
TbS
m
đ
t

TbS
m
đ
t

TbS
m
đ
t
Mìậ

r

Mìậ

r

Mìậ

r
3nt
u

3nt
u

3nt
u
2hn

2hn

2hn
xx101Fg

xx201Fg

xx301Fg
Thẩm quyền giải quyết

TX
ML
x101F23o
tậ

a
àS
m
đ
c
v

ML
xx301F23o
t TX


a
à S
m
đ
c
v
Phần 19: Cơ quan giám sát độc lập (IWDG) • • • • • • • • • • •

Phần 20: Cơ quan giám sát cửa sổ (WWDG )

• •
Phần 21: Bộ điều khiển bộ nhớ
tĩnh linh hoạt (FSMC)

• •
Phần 22: Giao diện đầu vào/đầu ra kỹ thuật
số an toàn (SDIO)

Phần 23: Giao diện thiết bị tốc độ đầy đủ


bus nối tiếp đa năng (USB)
• • • • • •

Mục 24: Mạng vùng điều khiển (bxCAN)


• • • • • •

Mục 25: Giao diện ngoại vi nối tiếp


(SPI)
• • • • • • • • • • •

Mục 26: Giao diện mạch tích hợp (I2C)


• • • • • • • • • • •

Mục 27: Máy phát thu không đồng bộ


đồng bộ đa năng • • • • • • • • • • •
(USART)

• •
Phần 28: USB tốc độ tối đa khi đang di chuyển
(OTG_FS)


Phần 29: Ethernet (ETH): điều khiển truy cập
phương tiện (MAC) với bộ điều khiển DMA

Phần 30: Chữ ký điện tử của thiết bị • • • • • • • • • • •

Phần 31: Hỗ trợ gỡ lỗi (DBG) • • • • • • • • • • •

1. Chỉ khả dụng trên các thiết bị có mật độ XL.

RM0008 Phiên bản 21 41/1136

44
Machine Translated by Google

Tổng quan về hướng dẫn RM0008

Chú giải cho Bảng 2:

• Phần ở hàng này phải được đọc khi sử dụng các thiết bị ngoại vi trong các cột có “ •”

Phần trong hàng này có thể được đọc tùy ý khi sử dụng các thiết bị ngoại vi trong các cột có “ "

Bảng 2. Các phần liên quan đến từng thiết bị ngoại vi

TRASU

rH
ten) hE
eT t(
E
gnồĐ
hP
g
) aB
nK
i
ò ự(
h T
g
d
p

ờơ
)7MIT&6MI
n ộ(

i

T B
h
g
c
b
Thẩm quyền giải quyết

nW
)GD
mt
au(
áơ
i
á


WC
q
g
c
s

tB
) iU
ếS
B
c
y h(

S



ủ T
b
U
t
đ
gI
)O hP
n cG
u /(

í
h I
m
O
đ
c

nW
)GD
m aơ
á
t
c
p u(
i
á


I C
q
g
s
đ
l

iI
) oP
n

p aS

o
i
ế g(

i G
d
v
n
t
ờếộđ

i
a
ă
T B
h
g
n
(

ạ(M
v
đ
k
gnI

nbù
i
h
9M

ộhB
đ
k
b
n
t
l

gxề
i
ềoh
ĩ
i

nCu

uại

n

)NA
ộ(B
c
đ
k
s
t

nt

h
yAiư
u
n ổ

h

a

D
ộ(B
c
đ
t
s

ểơậ
g
C
uưh


a

A

gnn)
t
ểơ
gnn) yD
g
C i
n

gT
ểG
y BO
c
i
n
u S(


a
i
h U
t
k
đ
d
c
itG
d
v
đ
r
k
s
a

n_
aoà

a

h

n

)SF

tn
/
ậ ệ
o
u

o2
)C
n
h aI

c
p i(

í
ợ G
d
m
t
h
uMờI

i
n
o
I ộ&

i
h
â
a
T B
h
g
đ
k
n
c
(
T

ộTB
h
g
n
(
đ
n8ể
g
M

ờIẹ
i
a
ă
T
ế
1
)

25
) gM
M I
n

Phần 2:
Tài liệu • • • • • • • • • • • • • • • • • • • • • •
quy ước

Phần 3: Kiến trúc bộ nhớ


• • • • • • • • • • • • • • • • • • • • • •
và bus

Mục 4: CRC
đơn vị tính toán

Phần 5: Điều khiển


• • • • • • • • • • • • • • • • • • • • • •
công suất (PWR)

Phần 6: Thanh ghi



dự phòng (BKP)

Phần 7: Thiết lập


lại và điều khiển đồng hồ
• • • • • • • • • • • • • • • • • • • • • •
(RCC) mật độ thấp, trung
bình, cao và XL

Phần 8: Thiết bị đường


dây kết nối: reset và • • • • • • • • • • • • • • • • • • • • • •
điều khiển đồng hồ (RCC)

Phần 9: I/O mục đích

chung và chức năng thay


thế (GPIO và AFIO)
• • • • • • • • • • • • • • • • • • • •

Phần 10: Ngắt và sự kiện

Mục 13: Trực tiếp

bộ điều khiển
truy cập bộ nhớ (DMA)

Phần 11: Bộ chuyển đổi



tương tự sang số (ADC)

42/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Tổng quan về hướng dẫn

Bảng 2. Các phần liên quan đến từng thiết bị ngoại vi (tiếp theo)

TRASU

rH
ten) hE
eT t(
E
gnồĐ
hP
g
) aB
nK
i
ò ự(
h T
g
d
p

ờơ
)7MIT&6MI
n ộ(

i

T B
h
g
c
b

nW
)GD
mt
au(
áơ
i
á


WC
q
g
c
s

h(T
b
U
t
đ
Thẩm quyền giải quyết

tB
) iU
ếS
B
c
y ị
S




gI
)O hP
n cG
u /(

í
h I
m
O
đ
c

nW
)GD
m aơ
á
t
c
p u(
i
á


I C
q
g
s
đ
l

iI
) oP
n

p aS

o
i
ế g(

i G
d
v
n
t
ờếộđ

i
a
ă
T B
h
g
n
(

ạ(M
v
đ
k
gnI

nbù
i
h
9M

ộhB
đ
k
b
n
t
l

gxề
i
ềoh
ĩ
i

nCu

uại

n

)NA
ộ(B
c
đ
k
s
t

nt

h
yAiư
u
n ổ

h

a

D
ộ(B
c
đ
t
s

ểơậ
g
C
uưh


a

A

gnn)
t
ểơ
gnn) yD
g
C i
n

gT
ểG
y BO
c
i
n
u S(


a
i
h U
t
k
đ
d
c
itG
d
v
đ
r
k
s
a

n_
aoà

a

h

n

)SF

tn
/
ậ ệ
o
u

o2
)C
n
h aI

c
p i(

í
ợ G
d
m
t
h
uMờI

i
n
o
I ộ&

i
h
â
a
T B
h
g
đ
k
n
c
(
T

ộTB
h
g
n
(
đ
n8ể
g
M

ờIẹ
i
a
ă
T
ế
1
)

25
) gM
M I
n

Phần 12: Bộ chuyển đổi


Digital sang Analog (DAC) •
Phần 14: Bộ hẹn giờ điều

khiển nâng cao (TIM1 và



TIM8)

Phần 15: Bộ hẹn giờ mục

đích chung (TIM2 đến


TIM5)

Phần 16: Bộ hẹn giờ cho

mục đích chung (TIM9 đến


TIM14)


Phần 17: Bộ định

thời cơ bản (TIM6 và TIM7)

• •
Phần 18: Thời gian thực

đồng hồ (RTC)

Mục 19:

Cơ quan giám sát độc lập


(IWDG)


Phần 20: Cơ quan giám

sát cửa sổ (WWDG)

Phần 21: Bộ điều khiển

bộ nhớ tĩnh linh hoạt


(FSMC)

Phần 22: Giao diện đầu

vào/đầu ra kỹ thuật
số an toàn (SDIO)

Phần 23: Giao diện thiết

bị tốc độ đầy đủ bus


nối tiếp đa năng (USB)


Mục 24: Mạng vùng điều

khiển (bxCAN)

RM0008 Phiên bản 21 43/1136

44
Machine Translated by Google

Tổng quan về hướng dẫn RM0008

Bảng 2. Các phần liên quan đến từng thiết bị ngoại vi (tiếp theo)

TRASU

rH
ten) hE
eT t(
E
gnồĐ
hP
g
) aB
nK
i
ò ự(
h T
g
d
p

ờơ
)7MIT&6MI
n ộ(

i

T B
h
g
c
b

nW
)GD
mt
au(
áơ
i
á


WC
q
g
c
s

tB
) iU
ếS
B
c
y h(

S



ủ T
b
U
t
đ
Thẩm quyền giải quyết

gI
)O hP
n cG
u /(

í
h I
m
O
đ
c

nW
)GD
m aơ
á
t
c
p u(
i
á


I C
q
g
s
đ
l

iI
) oP
n

p aS

o
i
ế g(

i G
d
v
n
t
ờếộđ

i
a
ă
T B
h
g
n
(

ạ(M
v
đ
k
gnI

nbù
i
h
9M

ộhB
đ
k
b
n
t
l

gxề
i
ềoh
ĩ
i

nCu

uại

n

)NA
ộ(B
c
đ
k
s
t

nt

h
yAiư
u
n ổ

h

a

D
ộ(B
c
đ
t
s

ểơậ
g
C
uưh


a

A

gnn)
t
ểơ
gnn) yD
g
C i
n

gT
ểG
y BO
c
i
n
u S(


a
i
h U
t
k
đ
d
c
itG
d
v
đ
r
k
s
a

n_
aoà

a

h

n

)SF

tn
/
ậ ệ
o
u

o2
)C
n
h aI

c
p i(

í
ợ G
d
m
t
h
uMờI

i
n
o
I ộ&

i
h
â
a
T B
h
g
đ
k
n
c
(
T

ộTB
h
g
n
(
đ
n8ể
g
M

ờIẹ
i
a
ă
T
ế
1
)

25
) gM
M I
n

Mục 25: Giao diện


ngoại vi nối tiếp •
(SPI)

Mục 26: Giao


diện mạch tích hợp
(I2C)

Mục 27: Máy phát thu
không đồng
bộ đa năng (USART)

Mục 28: Bật USB
đang di chuyển hết tốc lực •
(OTG_FS)

Phần 29: Ethernet


(ETH): kiểm soát truy cập

phương tiện (MAC) với bộ



điều khiển DMA

Mục 30: Chữ ký điện


tử của thiết bị

Phần 31: Hỗ trợ gỡ


lỗi (DBG)

44/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Quy ước tài liệu

2 Quy ước tài liệu

2.1 Thông tin chung

Các thiết bị STM32F10xxx có lõi Arm®(a) Cortex®-M3 .

2.2 Danh sách các chữ viết tắt của sổ đăng ký

Các chữ viết tắt sau đây được sử dụng trong mô tả đăng ký:

đọc/ghi (rw) chỉ Phần mềm có thể đọc và ghi vào các bit này.

đọc (r) chỉ Phần mềm chỉ có thể đọc những bit này.

ghi (w) đọc/xóa Phần mềm chỉ có thể ghi vào bit này. Đọc bit trả về giá trị đặt lại.

(rc_w1) Phần mềm có thể đọc và xóa bit này bằng cách ghi 1. Việc ghi '0' không ảnh hưởng đến giá trị bit.

đọc/xóa (rc_w0) Phần mềm có thể đọc cũng như xóa bit này bằng cách ghi 0. Việc viết '1' không ảnh hưởng đến giá trị bit.

đọc/xóa bằng cách đọc Phần mềm có thể đọc được bit này. Đọc bit này sẽ tự động xóa nó về '0'. Viết '0' không ảnh hưởng
(rc_r) đến giá trị bit.

đọc/đặt (rs) Phần mềm có thể đọc cũng như thiết lập bit này. Viết '0' không ảnh hưởng đến giá trị bit.

kích hoạt ghi chỉ Phần mềm có thể đọc được bit này. Viết '0' hoặc '1' sẽ kích hoạt một sự kiện nhưng không ảnh hưởng

đọc (rt_w) đến giá trị bit.

chuyển đổi (t) Phần mềm chỉ có thể chuyển đổi bit này bằng cách viết '1'. Viết '0' không có tác dụng.

Dành riêng (Res.) Bit dành riêng, phải được giữ ở giá trị đặt lại.

Một. Arm là nhãn hiệu đã đăng ký của Arm Limited (hoặc các công ty con) tại Hoa Kỳ và/hoặc nơi khác.

RM0008 Phiên bản 21 45/1136

62
Machine Translated by Google

Quy ước tài liệu RM0008

2.3 Bảng chú giải

• Các thiết bị mật độ thấp là STM32F101xx, STM32F102xx và STM32F103xx


bộ vi điều khiển trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

• Các thiết bị có mật độ trung bình là STM32F101xx, STM32F102xx và STM32F103xx


bộ vi điều khiển trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 64 đến 128 Kbyte.

• Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ
nhớ Flash nằm trong khoảng từ 256 đến 512 Kbyte.

• Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ


nhớ Flash nằm trong khoảng từ 768 Kbyte đến 1 Mbyte.

• Thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

• Word: dữ liệu có độ dài 32 bit.

• Half-word: dữ liệu có độ dài 16 bit.

• Byte: dữ liệu có độ dài 8 bit.

2.4 Tính khả dụng của thiết bị ngoại vi

Để biết số lượng và tính khả dụng của thiết bị ngoại vi trên tất cả các loại bán hàng
STM32F10xxx, hãy tham khảo bảng dữ liệu STM32F101xx mật độ thấp, trung bình, cao và XL và
STM32F103xx, bảng dữ liệu STM32F102xx mật độ thấp và trung bình cũng như các thiết bị đường
dây kết nối, STM32F105xx/ STM32F107xx.

46/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Kiến trúc bộ nhớ và bus

3 Kiến trúc bộ nhớ và bus

3.1 Kiến Trúc Hệ Thống


Trong các thiết bị có mật độ thấp, trung bình, cao và XL, hệ thống chính bao gồm:
• Bốn thiết bị chính:

– Bus DCode lõi Cortex®-M3 (D-bus) và Bus hệ thống (S-bus)

– GP-DMA1 & 2 (DMA đa năng) • Bốn nô lệ:

– SRAM nội bộ

– Bộ nhớ Flash bên trong


– FSMC

– AHB đến APBx (APB1 hoặc APB2), kết nối tất cả các thiết bị ngoại vi APB

Chúng được kết nối với nhau bằng kiến trúc bus AHB nhiều lớp như trong Hình 1:

Hình 1. Kiến trúc hệ thống (thiết bị có mật độ thấp, trung bình, XL)

ICode
FLITF Tốc biến

Mã D
Cortex-M3

Hệ thống

SRAM
DMA
DMA1 FSMC
ab
ậu
r
e M
t
x

SDIO

t

Ch.1

Ch.2 Xe buýt hệ thống AHB Cầu 2


Cầu 1 APB1
Đặt lại và điều APB2
AMD

Ch.7 khiển đồng hồ (RCC)


ADC1 GPIOC ĐẮC SPI3/I2S
ADC2 GPIOD LÒ NÒ SPI2/I2S
Yêu cầu DMA ADC3 GPIOE BKP IWDG
USART1 GPIOF bxCAN WWDG
SPI1 GPIOG USB RTC
TIM1 EXTI I2C2 TIM7
DMA2 TIM8 AFIO I2C1 TIM6
GPIOA UART5 TIM5
GPIOB UART4 TIM4
USART3 TIM3
Ch.1 USART2 TIM2

Ch.2

Ch.5
Yêu cầu DMA

ai14800c

RM0008 Phiên bản 21 47/1136

62
Machine Translated by Google

Kiến trúc bộ nhớ và bus RM0008

Trong các thiết bị đường dây kết nối, hệ thống chính bao gồm:
• Năm bậc thầy:

– Bus DCode lõi Cortex®-M3 (D-bus) và Bus hệ thống (S-bus)

– GP-DMA1 & 2 (DMA đa năng)


– Ethernet DMA

• Ba nô lệ:

– SRAM nội bộ

– Bộ nhớ Flash bên trong

– Cầu nối AHB đến APB (AHB đến APBx), kết nối tất cả các thiết bị ngoại vi APB

Chúng được kết nối với nhau bằng kiến trúc bus AHB nhiều lớp như trong Hình 2:

Hình 2. Kiến trúc hệ thống trong các thiết bị đường kết nối

ICode
FLITF Tốc biến

Mã D
Cortex-M3

Hệ thống

SRAM
DMA
DMA1
Đặt lại và điều

khiển đồng hồ (RCC)



t ab
ậu
r
e M
t
x

Ch.1

Ch.2 Xe buýt hệ thống AHB Cầu 2


Cầu 1 APB1
APB2
AMD

Ch.7
ADC1 GPIOC ĐẮC SPI3/I2S
ADC2 GPIOD LÒ NÒ SPI2/I2S
Yêu cầu DMA USART1 GPIOE BKP IWDG
SPI1 EXTI CAN1 WWDG
TIM1 AFIO CAN2 RTC
GPIOA I2C2 TIM7
DMA2 GPIOB I2C1 TIM6
UART5 TIM5
UART4 TIM4
USART3 TIM3
Ch.1
AMD

USART2 TIM2

Ch.2

Yêu cầu DMA


Ch.5

Ethernet MAC

USB OOT FS
ai15810

Xe buýt ICode

Bus này kết nối bus lệnh của lõi Cortex®-M3 với giao diện lệnh của bộ nhớ
Flash. Việc tìm nạp trước được thực hiện trên xe buýt này.

48/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Kiến trúc bộ nhớ và bus

Xe buýt DCode

Bus này kết nối bus DCode (truy cập tải và gỡ lỗi theo nghĩa đen) của lõi Cortex®-M3 với giao diện Dữ
liệu bộ nhớ Flash.

Xe buýt hệ thống

Bus này kết nối bus hệ thống của lõi Cortex®-M3 (bus ngoại vi) với BusMatrix quản lý việc phân xử giữa
lõi và DMA.

xe buýt DMA

Bus này kết nối giao diện chính AHB của DMA với BusMatrix để quản lý quyền truy cập của CPU DCode và
DMA tới SRAM, bộ nhớ Flash và các thiết bị ngoại vi.

Xe buýtMatrix

BusMatrix quản lý việc phân xử truy cập giữa bus hệ thống lõi và bus chính DMA. Trọng tài sử dụng thuật
toán Round Robin. Trong các thiết bị đường kết nối, BusMatrix bao gồm năm master (CPU DCode, System
bus, Ethernet DMA, DMA1 và DMA2 bus) và ba Slave (FLITF, SRAM và AHB2APB bridge). Trong các thiết bị
khác, BusMatrix bao gồm bốn master (CPU DCode, System bus, DMA1 bus và DMA2 bus) và bốn Slave (FLITF,
SRAM, FSMC và AHB2APB bridge).

Các thiết bị ngoại vi AHB được kết nối trên bus hệ thống thông qua BusMatrix để cho phép truy cập DMA.

Cầu AHB/APB (APB)

Hai cầu AHB/APB cung cấp kết nối đồng bộ đầy đủ giữa AHB và 2 bus APB. APB1 bị giới hạn ở 36 MHz, APB2
hoạt động ở tốc độ tối đa (tối đa 72 MHz tùy theo thiết bị).

Tham khảo Bảng 3 để biết sơ đồ địa chỉ của các thiết bị ngoại vi được kết nối với mỗi cầu.

Sau mỗi lần thiết lập lại thiết bị, tất cả đồng hồ ngoại vi đều bị tắt (ngoại trừ SRAM và FLITF).
Trước khi sử dụng thiết bị ngoại vi, bạn phải bật đồng hồ của nó trong thanh ghi
RCC_AHBENR, RCC_APB2ENR hoặc RCC_APB1ENR.

Ghi chú: Khi truy cập 16 hoặc 8 bit được thực hiện trên thanh ghi APB, quyền truy cập được chuyển thành truy
cập 32 bit: cầu nối sao chép dữ liệu 16 hoặc 8 bit để cung cấp vectơ 32 bit.

3.2 Tổ chức bộ nhớ


Bộ nhớ chương trình, bộ nhớ dữ liệu, thanh ghi và cổng I/O được tổ chức trong cùng một không gian địa
chỉ 4 Gbyte tuyến tính.

Các byte được mã hóa trong bộ nhớ ở định dạng Little Endian. Byte được đánh số thấp nhất trong một từ
được coi là byte có ý nghĩa nhỏ nhất của từ đó và byte được đánh số cao nhất là có ý nghĩa nhất.

Để biết bản đồ chi tiết của các thanh ghi ngoại vi, hãy tham khảo các phần liên quan.

Không gian bộ nhớ có thể định địa chỉ được chia thành 8 khối chính, mỗi khối 512 MB.

Tất cả các vùng bộ nhớ không được phân bổ cho bộ nhớ trên chip và thiết bị ngoại vi đều được
coi là "Dành riêng"). Tham khảo hình sơ đồ bộ nhớ trong bảng dữ liệu sản phẩm tương ứng.

RM0008 Phiên bản 21 49/1136

62
Machine Translated by Google

Kiến trúc bộ nhớ và bus RM0008

3.3 Bản đồ bộ nhớ


Xem bảng dữ liệu tương ứng với thiết bị của bạn để có sơ đồ toàn diện về bản đồ bộ
nhớ. Bảng 3 đưa ra địa chỉ ranh giới của các thiết bị ngoại vi có sẵn trong tất cả các
thiết bị STM32F10xxx.

Bảng 3. Đăng ký địa chỉ ranh giới

Địa chỉ ranh giới Ngoại vi Xe buýt Đăng ký bản đồ

0xA000 0000 - 0xA000 0FFF FSMC Mục 21.6.9 trên trang 564

0x5000 0000 - 0x5003 FFFF USBOTG FS Mục 28.16.6 trang 913

0x4003 0000 - 0x4FFF FFFF Dự trữ -

0x4002 8000 - 0x4002 9FFF Ethernet Mục 29.8.5 trên trang 1071

0x4002 3400 - 0x4002 7FFF Dự trữ -

0x4002 3000 - 0x4002 33FF CRC Mục 4.4.4 trang 65


-
0x4002 2000 - 0x4002 23FF Giao diện bộ nhớ Flash
AHB
0x4002 1400 - 0x4002 1FFF Dự trữ -

0x4002 1000 - 0x4002 13FF Đặt lại và điều khiển đồng hồ RCC Mục 7.3.11 trang 121

0x4002 0800 - 0x4002 0FFF Dự trữ -

0x4002 0400 - 0x4002 07FF DMA2


Mục 13.4.7 trang 289
0x4002 0000 - 0x4002 03FF DMA1

0x4001 8400 - 0x4001 FFFF Dành riêng -

0x4001 8000 - 0x4001 83FF SDIO Mục 22.9.16 trên trang 621

50/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Kiến trúc bộ nhớ và bus

Bảng 3. Đăng ký địa chỉ ranh giới (tiếp theo)

Địa chỉ ranh giới Ngoại vi Xe buýt Đăng ký bản đồ

0x4001 5800 - 0x4001 7FFF Dự trữ -

Hẹn giờ 0x4001 5400 - 0x4001 57FF TIM11 Mục 16.5.11 trên trang 468

Hẹn giờ 0x4001 5000 - 0x4001 53FF TIM10 Mục 16.5.11 trên trang 468

Bộ hẹn giờ 0x4001 4C00 - 0x4001 4FFF TIM9 Mục 16.4.13 trên trang 458

0x4001 4000 - 0x4001 4BFF Dự trữ -

0x4001 3C00 - 0x4001 3FFF ADC3 Mục 11.12.15 trên trang 252

0x4001 3800 - 0x4001 3BFF USART1 Mục 27.6.8 trên trang 827

Hẹn giờ 0x4001 3400 - 0x4001 37FF TIM8 Mục 14.4.21 trên trang 363

0x4001 3000 - 0x4001 33FF SPI1 Mục 25.5 trên trang 742

Bộ hẹn giờ 0x4001 2C00 - 0x4001 2FFF TIM1 Mục 14.4.21 trên trang 363

0x4001 2800 - 0x4001 2BFF ADC2 APB2


Mục 11.12.15 trên trang 252
0x4001 2400 - 0x4001 27FF ADC1

0x4001 2000 - 0x4001 23FF Cổng GPIO G

0x4001 1C00 - 0x4001 1FFF GPIO Cổng F

0x4001 1800 - 0x4001 1BFF GPIO Cổng E

0x4001 1400 - 0x4001 17FF Cổng GPIO D Mục 9.5 trang 194

0x4001 1000 - 0x4001 13FF Cổng GPIO C

0x4001 0C00 - 0x4001 0FFF GPIO Cổng B

0x4001 0800 - 0x4001 0BFF GPIO Cổng A

0x4001 0400 - 0x4001 07FF EXTI Mục 10.3.7 trang 214

0x4001 0000 - 0x4001 03FF AFIO Mục 9.5 trang 194

RM0008 Phiên bản 21 51/1136

62
Machine Translated by Google

Kiến trúc bộ nhớ và bus RM0008

Bảng 3. Đăng ký địa chỉ ranh giới (tiếp theo)

Địa chỉ ranh giới Ngoại vi Xe buýt Đăng ký bản đồ

0x4000 7800 - 0x4000 FFFF Dành riêng -

0x4000 7400 - 0x4000 77FF ĐẮC Mục 12.5.14 trang 273

0x4000 7000 - 0x4000 73FF Điều khiển nguồn PWR Mục 5.4.3 trang 80

0x4000 6C00 - 0x4000 6FFF Thanh ghi dự phòng (BKP) Mục 6.4.5 trang 85

0x4000 6400 - 0x4000 67FF bxCAN1


Mục 24.9.5 trên trang 695
0x4000 6800 - 0x4000 6BFF bxCAN2

-
0x4000 6000(1) - 0x4000 63FF USB chia sẻ/CAN SRAM 512 byte

0x4000 5C00 - 0x4000 5FFF Thanh ghi FS của thiết bị USB Mục 23.5.4 trang 651

0x4000 5800 - 0x4000 5BFF I2C2


Mục 26.6.10 trên trang 784
0x4000 5400 - 0x4000 57FF I2C1

0x4000 5000 - 0x4000 53FF UART5

0x4000 4C00 - 0x4000 4FFF UART4


Mục 27.6.8 trên trang 827
0x4000 4800 - 0x4000 4BFF USART3

0x4000 4400 - 0x4000 47FF USART2

0x4000 4000 - 0x4000 43FF Dự trữ -

0x4000 3C00 - 0x4000 3FFF SPI3/I2S APB1 Mục 25.5 trên trang 742

0x4000 3800 - 0x4000 3BFF SPI2/I2S Mục 25.5 trên trang 742

0x4000 3400 - 0x4000 37FF Dự trữ -

0x4000 3000 - 0x4000 33FF Cơ quan giám sát độc lập (IWDG) Mục 19.4.5 trên trang 499

0x4000 2C00 - 0x4000 2FFF Cơ quan giám sát cửa sổ (WWDG) Mục 20.6.4 trên trang 506

0x4000 2800 - 0x4000 2BFF RTC Mục 18.4.7 trên trang 493

0x4000 2400 - 0x4000 27FF Dự trữ -

Hẹn giờ 0x4000 2000 - 0x4000 23FF TIM14


Mục 16.5.11 trên trang 468
Hẹn giờ 0x4000 1C00 - 0x4000 1FFF TIM13

Hẹn giờ 0x4000 1800 - 0x4000 1BFF TIM12 Mục 16.4.13 trên trang 458

Hẹn giờ 0x4000 1400 - 0x4000 17FF TIM7


Mục 17.4.9 trên trang 481
Hẹn giờ 0x4000 1000 - 0x4000 13FF TIM6

Bộ đếm thời gian 0x4000 0C00 - 0x4000 0FFF TIM5

Bộ hẹn giờ 0x4000 0800 - 0x4000 0BFF TIM4


Mục 15.4.19 trên trang 423
Bộ hẹn giờ 0x4000 0400 - 0x4000 07FF TIM3

Bộ hẹn giờ 0x4000 0000 - 0x4000 03FF TIM2

1. SRAM dùng chung này chỉ có thể được truy cập đầy đủ ở các thiết bị có mật độ thấp, trung bình, cao và XL, không phải trên đường kết nối
thiết bị.

52/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Kiến trúc bộ nhớ và bus

3.3.1 SRAM nhúng

STM32F10xxx có SRAM tĩnh lên tới 96 Kbyte. Nó có thể được truy cập dưới dạng byte, nửa từ (16
bit) hoặc từ đầy đủ (32 bit). Địa chỉ bắt đầu SRAM là 0x2000 0000.

3.3.2 Dải bit


Bản đồ bộ nhớ Cortex®-M3 bao gồm hai vùng băng tần bit. Các vùng này ánh xạ từng từ trong vùng bí
danh của bộ nhớ tới một bit trong vùng bộ nhớ dải bit. Việc ghi vào một từ trong vùng bí danh có
tác dụng tương tự như thao tác đọc-sửa-ghi trên bit được nhắm mục tiêu trong vùng băng tần bit.

Trong STM32F10xxx, cả thanh ghi ngoại vi và SRAM đều được ánh xạ trong vùng băng tần bit.
Điều này cho phép thực hiện các thao tác ghi và đọc băng tần bit đơn. Các hoạt động chỉ khả dụng
đối với truy cập Cortex®-M3, không khả dụng đối với các bus chủ khác (ví dụ: DMA).

Công thức ánh xạ cho biết cách tham chiếu từng từ trong vùng bí danh đến bit tương ứng trong vùng
dải bit. Công thức ánh xạ là:

bit_word_addr = bit_band_base + (byte_offset x 32) + (bit_number × 4)

Ở đâu:

bit_word_addr là địa chỉ của từ trong vùng bộ nhớ bí danh ánh xạ tới bit được nhắm mục tiêu.

bit_band_base là địa chỉ bắt đầu của vùng bí danh byte_offset

là số byte trong vùng dải bit chứa bit được nhắm mục tiêu

bit_number là vị trí bit (0-7) của bit được nhắm mục tiêu.

Ví dụ:

Ví dụ sau đây cho thấy cách ánh xạ bit 2 của byte nằm ở địa chỉ SRAM 0x20000300 trong vùng
bí danh:

0x22006008 = 0x22000000 + (0x300*32) + (2*4).

Việc ghi vào địa chỉ 0x22006008 có tác dụng tương tự như thao tác đọc-sửa-ghi trên bit 2 của byte
tại địa chỉ SRAM 0x20000300.

Địa chỉ đọc 0x22006008 trả về giá trị (0x01 hoặc 0x00) của bit 2 của byte tại địa chỉ SRAM
0x20000300 (0x01: bit set; 0x00: bit reset).

Để biết thêm thông tin về Dải bit, hãy tham khảo Hướng dẫn tham khảo kỹ thuật Cortex®-M3 .

RM0008 Phiên bản 21 53/1136

62
Machine Translated by Google

Kiến trúc bộ nhớ và bus RM0008

3.3.3 Bộ nhớ Flash nhúng


Mô-đun bộ nhớ Flash hiệu suất cao có các tính năng chính sau:

• Đối với các thiết bị có mật độ XL: mật độ lên tới 1 Mbyte với kiến trúc ngân hàng kép để đọc
khả năng ghi trong khi (RWW):

– ngân hàng 1: kích thước cố định 512 Kbyte

– ngân hàng 2: tối đa 512 Kbyte

• Đối với các thiết bị khác: mật độ lên tới 512 Kbyte

• Tổ chức bộ nhớ: Bộ nhớ Flash được tổ chức thành khối chính và


khối thông tin:

– Khối bộ nhớ chính có kích thước:

lên tới 128 Kbyte × 64 bit được chia thành 512 trang, mỗi trang 2 Kbyte (xem Bảng 8) đối với
các thiết bị có mật độ XL

lên tới 4 Kb × 64 bit được chia thành 32 trang, mỗi trang 1 Kbyte cho các thiết bị mật độ
thấp (xem Bảng 4)

lên tới 16 Kb × 64 bit được chia thành 128 trang, mỗi trang 1 Kbyte cho các thiết bị có mật
độ trung bình (xem Bảng 5)

lên tới 64 Kb × 64 bit được chia thành 256 trang, mỗi trang 2 Kbyte (xem Bảng 6) cho các
thiết bị mật độ cao

lên tới 32 Kbit × 64 bit được chia thành 128 trang, mỗi trang 2 Kbyte (xem Bảng 7) cho các
thiết bị đường kết nối

– Khối thông tin có kích thước:

770 × 64 bit đối với thiết bị có mật độ XL (xem Bảng 8)

2360 × 64 bit cho các thiết bị đường kết nối (xem Bảng 7)

258 × 64 bit cho các thiết bị khác (xem Bảng 4, Bảng 5 và Bảng 6)

Các tính năng của giao diện bộ nhớ Flash (FLITF):

• Giao diện đọc với bộ đệm tìm nạp trước (từ 2x64-bit)

• Trình tải byte tùy chọn

• Chương trình Flash / Thao tác xóa

• Bảo vệ đọc/ghi

Bảng 4. Tổ chức mô-đun flash (thiết bị mật độ thấp)

Khối Tên Địa chỉ cơ sở Kích thước (byte)

Trang 0 0x0800 0000 - 0x0800 03FF 1 K

Trang 1 0x0800 0400 - 0x0800 07FF 1 K

Trang 2 0x0800 0800 - 0x0800 0BFF 1 K

Trang 3 0x0800 0C00 - 0x0800 0FFF 1 K

Bộ nhớ chính
Trang 4 0x0800 1000 - 0x0800 13FF 1 K

. . .
. . .
. . .

Trang 31 0x0800 7C00 - 0x0800 7FFF 1 K

54/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Kiến trúc bộ nhớ và bus

Bảng 4. Tổ chức mô-đun flash (thiết bị mật độ thấp) (tiếp theo)

Khối Tên Địa chỉ cơ sở Kích thước (byte)

Bộ nhớ hệ thống 0x1FFF F000 - 0x1FFF F7FF 2K


Khối thông tin
byte tùy chọn 0x1FFF F800 - 0x1FFF F80F 16

FLASH_ACR 0x4002 2000 - 0x4002 2003 4

FLASH_KEYR 0x4002 2004 - 0x4002 2007 4

FLASH_OPTKEYR 0x4002 2008 - 0x4002 200B 4

FLASH_SR 0x4002 200C - 0x4002 200F 4


Thanh ghi giao
diện bộ FLASH_CR 0x4002 2010 - 0x4002 2013 4
nhớ flash
FLASH_AR 0x4002 2014 - 0x4002 2017 4

Kín đáo 0x4002 2018 - 0x4002 201B 4

FLASH_OBR 0x4002 201C - 0x4002 201F 4

FLASH_WRPR 0x4002 2020 - 0x4002 2023 4

Bảng 5. Tổ chức mô-đun flash (thiết bị có mật độ trung bình)

Khối Tên Địa chỉ cơ sở Kích thước (byte)

Trang 0 0x0800 0000 - 0x0800 03FF 1 K

Trang 1 0x0800 0400 - 0x0800 07FF 1 K

Trang 2 0x0800 0800 - 0x0800 0BFF 1 K

Trang 3 0x0800 0C00 - 0x0800 0FFF 1 K


Bộ nhớ chính
Trang 4 0x0800 1000 - 0x0800 13FF 1 K

. . .
. . .
. . .

Trang 127 0x0801 FC00 - 0x0801 FFFF 1 K

Bộ nhớ hệ thống 0x1FFF F000 - 0x1FFF F7FF 2K


Khối thông tin
byte tùy chọn 0x1FFF F800 - 0x1FFF F80F 16

FLASH_ACR 0x4002 2000 - 0x4002 2003 4

FLASH_KEYR 0x4002 2004 - 0x4002 2007 4

FLASH_OPTKEYR 0x4002 2008 - 0x4002 200B 4

FLASH_SR 0x4002 200C - 0x4002 200F 4


Thanh ghi giao
diện bộ FLASH_CR 0x4002 2010 - 0x4002 2013 4
nhớ flash
FLASH_AR 0x4002 2014 - 0x4002 2017 4

Kín đáo 0x4002 2018 - 0x4002 201B 4

FLASH_OBR 0x4002 201C - 0x4002 201F 4

FLASH_WRPR 0x4002 2020 - 0x4002 2023 4

RM0008 Phiên bản 21 55/1136

62
Machine Translated by Google

Kiến trúc bộ nhớ và bus RM0008

Bảng 6. Tổ chức mô-đun flash (thiết bị mật độ cao)

Khối Tên Địa chỉ cơ sở Kích thước (byte)

Trang 0 0x0800 0000 - 0x0800 07FF 2K

Trang 1 0x0800 0800 - 0x0800 0FFF 2K

Trang 2 0x0800 1000 - 0x0800 17FF 2K

Trang 3 0x0800 1800 - 0x0800 1FFF 2K


Bộ nhớ chính
. . .
. . .
. . .

Trang 255 0x0807 F800 - 0x0807 FFFF 2K

Bộ nhớ hệ thống 0x1FFF F000 - 0x1FFF F7FF 2K


Khối thông tin
byte tùy chọn 0x1FFF F800 - 0x1FFF F80F 16

FLASH_ACR 0x4002 2000 - 0x4002 2003 4

FLASH_KEYR 0x4002 2004 - 0x4002 2007 4

FLASH_OPTKEYR 0x4002 2008 - 0x4002 200B 4

FLASH_SR 0x4002 200C - 0x4002 200F 4


Thanh ghi giao
diện bộ FLASH_CR 0x4002 2010 - 0x4002 2013 4
nhớ flash
FLASH_AR 0x4002 2014 - 0x4002 2017 4

Kín đáo 0x4002 2018 - 0x4002 201B 4

FLASH_OBR 0x4002 201C - 0x4002 201F 4

FLASH_WRPR 0x4002 2020 - 0x4002 2023 4

Bảng 7. Tổ chức mô-đun flash (thiết bị đường dây kết nối)

Khối Tên Địa chỉ cơ sở Kích thước (byte)

Trang 0 0x0800 0000 - 0x0800 07FF 2K

Trang 1 0x0800 0800 - 0x0800 0FFF 2K

Trang 2 0x0800 1000 - 0x0800 17FF 2K

Trang 3 0x0800 1800 - 0x0800 1FFF 2K


Bộ nhớ chính
. . .
. . .
. . .

Trang 127 0x0803 F800 - 0x0803 FFFF 2K

Bộ nhớ hệ thống 0x1FFF B000 - 0x1FFF F7FF 18 K


Khối thông tin
byte tùy chọn 0x1FFF F800 - 0x1FFF F80F 16

56/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Kiến trúc bộ nhớ và bus

Bảng 7. Tổ chức mô-đun flash (thiết bị đường dây kết nối) (tiếp theo)

Khối Tên Địa chỉ cơ sở Kích thước (byte)

FLASH_ACR 0x4002 2000 - 0x4002 2003 4

FLASH_KEYR 0x4002 2004 - 0x4002 2007 4

FLASH_OPTKEYR 0x4002 2008 - 0x4002 200B 4

FLASH_SR 0x4002 200C - 0x4002 200F 4


Thanh ghi giao
diện bộ FLASH_CR 0x4002 2010 - 0x4002 2013 4
nhớ flash
FLASH_AR 0x4002 2014 - 0x4002 2017 4

Kín đáo 0x4002 2018 - 0x4002 201B 4

FLASH_OBR 0x4002 201C - 0x4002 201F 4

FLASH_WRPR 0x4002 2020 - 0x4002 2023 4

Bảng 8. Tổ chức mô-đun Flash mật độ XL

Khối Tên Địa chỉ cơ sở Kích thước (byte)

Trang 0 0x0800 0000 - 0x0800 07FF 2K

Trang 1 0x0800 0800 - 0x0800 0FFF 2K


Ngân hàng 1

... ... ...

Trang 255 0x0807 F800 - 0x0807 FFFF 2K

Trang 256 0x0808 0000 - 0x0808 07FF 2K


Bộ nhớ chính

Trang 257 0x0808 0800 - 0x0808 0FFF 2K

Ngân hàng 2 . . .

. . .

. . .

Trang 511 0x080F F800 - 0x080F FFFF 2K

Bộ nhớ hệ thống 0x1FFF E000 - 0x1FFF F7FF 6 K


Khối thông tin
byte tùy chọn 0x1FFF F800 - 0x1FFF F80F 16

RM0008 Phiên bản 21 57/1136

62
Machine Translated by Google

Kiến trúc bộ nhớ và bus RM0008

Bảng 8. Tổ chức mô-đun Flash mật độ XL (tiếp theo)

Khối Tên Địa chỉ cơ sở Kích thước (byte)

FLASH_ACR 0x4002 2000 - 0x4002 2003 4

FLASH_KEYR 0x4002 2004 - 0x4002 2007 4

FLASH_OPTKEYR 0x4002 2008 - 0x4002 200B 4

FLASH_SR 0x4002 200C - 0x4002 200F 4

FLASH_CR 0x4002 2010 - 0x4002 2013 4

FLASH_AR 0x4002 2014 - 0x4002 2017 4

Kín đáo 0x4002 2018 - 0x4002 201B 4


Thanh ghi giao diện bộ
FLASH_OBR 0x4002 201C - 0x4002 201F 4
nhớ flash
FLASH_WRPR 0x4002 2020 - 0x4002 2023 4

Kín đáo 0x4002 2024 - 0x4002 2043 32

FLASH_KEYR2 0x4002 2044 - 0x4002 2047 4

Kín đáo 0x4002 2048 - 0x4002 204B 4

FLASH_SR2 0x4002 204C - 0x4002 204F 4

FLASH_CR2 0x4002 2050 - 0x4002 2053 4

FLASH_AR2 0x4002 2054 - 0x4002 2057 4

Ghi chú: Để biết thêm thông tin về các thanh ghi giao diện bộ nhớ Flash, hãy tham khảo:“Sách hướng dẫn
lập trình Flash mật độ XL STM32F10xxx” (PM0068) cho các thiết bị mật độ XL, “Sách hướng dẫn
lập trình Flash STM32F10xxx” (PM0075) cho các thiết bị khác.

Đọc bộ nhớ Flash


Hướng dẫn bộ nhớ flash và truy cập dữ liệu được thực hiện thông qua bus AHB. Khối tìm
nạp trước được sử dụng để tìm nạp lệnh thông qua bus ICode. Việc phân xử được thực hiện
trong giao diện bộ nhớ Flash và ưu tiên truy cập dữ liệu trên bus DCode.

Truy cập đọc có thể được thực hiện với các tùy chọn cấu hình sau:

• Độ trễ: số trạng thái chờ cho thao tác đọc được lập trình nhanh chóng
• Bộ đệm tìm nạp trước (khối 2 x 64 bit): nó được bật sau khi đặt lại; toàn bộ khối
có thể được thay thế bằng một lần đọc từ bộ nhớ Flash vì kích thước của khối phù hợp
với băng thông của bộ nhớ Flash. Nhờ bộ đệm tìm nạp trước, có thể thực thi CPU nhanh
hơn vì CPU tìm nạp từng từ một với từ tiếp theo có sẵn trong bộ đệm tìm nạp trước

• Nửa chu kỳ: để tối ưu hóa năng lượng

Ghi chú: Các tùy chọn này phải được sử dụng phù hợp với thời gian truy cập bộ nhớ Flash. Các trạng thái
chờ biểu thị tỷ lệ giữa khoảng thời gian SYSCLK (đồng hồ hệ thống) với thời gian truy cập bộ nhớ
Flash:
- 0 trạng thái chờ, nếu 0 < SYSCLK 24 MHz
- 1 trạng thái chờ, nếu 24 MHz < SYSCLK 48 MHz
- 2 trạng thái chờ, nếu 48 MHz < SYSCLK 72 MHz

Cấu hình nửa chu kỳ không khả dụng khi kết hợp với bộ đếm gộp trước trên AHB. Đồng hồ hệ
thống (SYSCLK) phải bằng đồng hồ HCLK. Do đó, tính năng này có thể

58/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Kiến trúc bộ nhớ và bus

chỉ được sử dụng với đồng hồ tần số thấp từ 8 MHz trở xuống. Nó có thể được tạo ra từ HSI hoặc HSE
nhưng không được tạo ra từ PLL.

Bộ đệm tìm nạp trước phải được bật khi sử dụng bộ đếm gộp trước khác 1 trên đồng hồ AHB.

Bộ đệm tìm nạp trước chỉ được bật/tắt khi SYSCLK thấp hơn 24 MHz và không có bộ chia tỷ lệ trước
nào được áp dụng trên đồng hồ AHB (SYSCLK phải bằng HCLK). Bộ đệm tìm nạp trước thường được bật/
tắt trong quy trình khởi tạo, trong khi bộ vi điều khiển đang chạy trên bộ tạo dao động RC (HSI) 8
MHz bên trong.

Sử dụng DMA: DMA truy cập bộ nhớ Flash trên bus DCode và được ưu tiên hơn các lệnh ICode. DMA
cung cấp một chu kỳ miễn phí sau mỗi lần chuyển. Một số lệnh có thể được thực hiện cùng với việc
truyền DMA.

Lập trình và xóa bộ nhớ Flash


Bộ nhớ Flash có thể được lập trình 16 bit (nửa từ) cùng một lúc.

Đối với các hoạt động ghi và xóa trên bộ nhớ Flash (ghi/xóa), bộ dao động RC bên trong (HSI) phải
BẬT.

Thao tác xóa bộ nhớ Flash có thể được thực hiện ở cấp độ trang hoặc trên toàn bộ vùng Flash (xóa
hàng loạt). Việc xóa hàng loạt không ảnh hưởng đến các khối thông tin.

Để đảm bảo không xảy ra hiện tượng lập trình quá mức, các khối Lập trình Flash và Bộ điều khiển Xóa
được bấm giờ bằng một đồng hồ cố định.

Thao tác Kết thúc ghi (lập trình hoặc xóa) có thể gây ra ngắt. Ngắt này có thể được sử dụng để
thoát khỏi chế độ WFI, chỉ khi đồng hồ FLITF được bật. Mặt khác, ngắt chỉ được phục vụ sau
khi thoát khỏi WFI.

Thanh ghi FLASH_ACR được sử dụng để bật/tắt tính năng tìm nạp trước và truy cập nửa chu kỳ, đồng
thời để kiểm soát thời gian truy cập bộ nhớ Flash theo tần số CPU. Các bảng bên dưới cung cấp bản
đồ bit và mô tả bit cho thanh ghi này.

Để biết thông tin đầy đủ về hoạt động của bộ nhớ Flash và cấu hình đăng ký, hãy tham khảo hướng
dẫn lập trình Flash STM32F10xxx (PM0075) hoặc hướng dẫn lập trình Flash XL STM32F10xxx (PM0068).

RM0008 Phiên bản 21 59/1136

62
Machine Translated by Google

Kiến trúc bộ nhớ và bus RM0008

Thanh ghi điều khiển truy cập flash (FLASH_ACR)

Độ lệch địa chỉ: 0x00

Giá trị đặt lại: 0x0000 0030

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

PRFTBS PRFTBE HLFCYA ĐỘ TRỄ


Kín đáo
r rw rw rw rw rw

Bit 31:6 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 5 PRFTBS: Tìm nạp trước trạng thái bộ đệm

Bit này cung cấp trạng thái của bộ đệm tìm nạp trước.
0: Bộ đệm tìm nạp trước bị tắt

1: Bộ đệm tìm nạp trước được bật

Bit 4 PRFTBE: Kích hoạt bộ đệm tìm nạp trước

0: Tìm nạp trước bị tắt

1: Tìm nạp trước được bật

Bit 3 HLFCYA: Cho phép truy cập nửa chu kỳ flash

0: Nửa chu kỳ bị vô hiệu hóa

1: Nửa chu kỳ được bật

Bit 2:0 ĐỘ TRỄ: Độ trễ

Các bit này biểu thị tỷ lệ của khoảng thời gian SYSCLK (đồng hồ hệ thống) với thời gian truy cập Flash.

000 Trạng thái chờ bằng 0, nếu 0 < SYSCLK 24 MHz

001 Một trạng thái chờ, nếu 24 MHz < SYSCLK 48 MHz

010 Hai trạng thái chờ, nếu 48 MHz < SYSCLK 72 MHz

3,4 Cấu hình khởi động


Trong STM32F10xxx, có thể chọn 3 chế độ khởi động khác nhau thông qua các chân BOOT[1:0] như
trong Bảng 9.

Bảng 9. Các chế độ khởi động

Chân chọn chế độ khởi động


Chế độ khởi động Răng cưa
BOOT1 BOOT0

x 0 Bộ nhớ Flash chính Bộ nhớ Flash chính được chọn làm không gian khởi động

0 1 Bộ nhớ hệ thống Bộ nhớ hệ thống được chọn làm không gian khởi động

1 1 SRAM nhúng SRAM nhúng được chọn làm không gian khởi động

60/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Kiến trúc bộ nhớ và bus

Các giá trị trên các chân BOOT được chốt ở cạnh tăng thứ 4 của SYSCLK sau khi thiết lập lại.
Người dùng có quyền đặt các chân BOOT1 và BOOT0 sau khi Reset để chọn chế độ khởi động cần thiết.

Các chân BOOT cũng được lấy mẫu lại khi thoát khỏi chế độ Chờ. Do đó, chúng phải được giữ ở
cấu hình Chế độ khởi động cần thiết ở chế độ Chờ. Sau khi hết thời gian trễ khởi động này, CPU
sẽ tìm nạp giá trị trên cùng của ngăn xếp từ địa chỉ 0x0000 0000, sau đó bắt đầu thực thi mã từ
bộ nhớ khởi động bắt đầu từ 0x0000 0004.

Do bản đồ bộ nhớ cố định, vùng mã bắt đầu từ địa chỉ 0x0000 0000 (được truy cập qua bus ICode/
DCode) trong khi vùng dữ liệu (SRAM) bắt đầu từ địa chỉ 0x2000 0000 (được truy cập qua
bus hệ thống). CPU Cortex®-M3 luôn tìm nạp vectơ thiết lập lại trên bus ICode, ngụ ý rằng không
gian khởi động chỉ khả dụng trong vùng mã (thường là bộ nhớ Flash). Bộ vi điều khiển
STM32F10xxx triển khai một cơ chế đặc biệt để có thể khởi động từ SRAM chứ không chỉ từ bộ
nhớ Flash chính và bộ nhớ Hệ thống.

Tùy thuộc vào chế độ khởi động đã chọn, bộ nhớ Flash chính, bộ nhớ hệ thống hoặc SRAM có thể
được truy cập như sau:

• Khởi động từ bộ nhớ Flash chính: bộ nhớ Flash chính được đặt bí danh trong không gian bộ nhớ khởi
động (0x0000 0000), nhưng vẫn có thể truy cập được từ không gian bộ nhớ gốc của nó (0x800 0000).
Nói cách khác, nội dung bộ nhớ Flash có thể được truy cập bắt đầu từ địa chỉ 0x0000
0000 hoặc 0x800 0000.

• Khởi động từ bộ nhớ hệ thống: bộ nhớ hệ thống được đặt bí danh trong không gian bộ nhớ khởi động
(0x0000 0000), nhưng vẫn có thể truy cập được từ không gian bộ nhớ gốc của nó (0x1FFF B000
trong các thiết bị đường kết nối, 0x1FFF F000 trong các thiết bị khác).

• Khởi động từ SRAM nhúng: SRAM chỉ có thể truy cập được tại địa chỉ 0x2000 0000.

Ghi chú: Khi khởi động từ SRAM, trong mã khởi tạo ứng dụng, bạn phải định vị lại bảng vectơ trong
SRAM bằng bảng ngoại lệ NVIC và thanh ghi offset.

Đối với các thiết bị có mật độ XL, khi khởi động từ bộ nhớ Flash chính, bạn có tùy chọn khởi động từ
bất kỳ ngân hàng bộ nhớ nào trong hai. Theo mặc định, khởi động từ ngân hàng bộ nhớ Flash 1 được chọn.
Bạn có thể chọn khởi động từ ngân hàng bộ nhớ Flash 2 bằng cách xóa bit BFB2 trong byte tùy
chọn người dùng. Khi bit này bị xóa và các chân khởi động đang khởi động từ cấu hình bộ nhớ
Flash chính, thiết bị sẽ khởi động từ bộ nhớ hệ thống và bộ tải khởi động sẽ nhảy để thực thi
ứng dụng người dùng được lập trình trong ngân hàng bộ nhớ Flash 2. Để biết thêm chi tiết, hãy
tham khảo AN2606.

Ghi chú: Khi khởi động từ Bank2 trong mã khởi tạo ứng dụng, hãy di chuyển bảng vectơ đến địa chỉ cơ sở
Bank2. (0x0808 0000) bằng bảng ngoại lệ NVIC và thanh ghi offset.

Bộ tải khởi động nhúng

Bộ tải khởi động nhúng được đặt trong bộ nhớ Hệ thống, được ST lập trình trong quá trình sản
xuất. Nó được sử dụng để lập trình lại bộ nhớ Flash bằng một trong các giao diện nối
tiếp có sẵn:

• Trong các thiết bị có mật độ thấp, trung bình và cao, bộ nạp khởi động được kích hoạt thông
qua giao diện USART1.

• Trong các thiết bị mật độ XL, bộ tải khởi động được kích hoạt thông qua các giao diện sau:
USART1 hoặc USART2 (được ánh xạ lại).
• Trong các thiết bị có đường kết nối, bộ tải khởi động có thể được kích hoạt thông qua một
trong các giao diện sau: USART1, USART2 (được ánh xạ lại), CAN2 (được ánh xạ lại) hoặc USBOTG FS ở
chế độ Thiết bị (DFU: nâng cấp chương trình cơ sở của thiết bị).

RM0008 Phiên bản 21 61/1136

62
Machine Translated by Google

Kiến trúc bộ nhớ và bus RM0008

Thiết bị ngoại vi USART hoạt động với bộ dao động 8 MHz bên trong (HSI). Tuy nhiên, CAN
và USBOTG FS chỉ có thể hoạt động nếu có đồng hồ 8 MHz, 14,7456 MHz hoặc 25 MHz
(HSE) bên ngoài.

Ghi chú: Để biết thêm chi tiết, hãy tham khảo AN2606.

62/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Đơn vị tính CRC

4 Đơn vị tính CRC

Các thiết bị mật độ thấp là bộ vi điều khiển STM32F101xx, STM32F102xx và STM32F103xx


trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

Các thiết bị có mật độ trung bình là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 64 đến 128 Kbyte.

Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ nhớ Flash
nằm trong khoảng từ 256 đến 512 Kbyte.

Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ nhớ
Flash nằm trong khoảng từ 768 Kbyte đến 1 Mbyte.

Các thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

4.1 Giới thiệu CRC

Đơn vị tính toán CRC (kiểm tra dự phòng theo chu kỳ) được sử dụng để lấy mã CRC từ từ dữ liệu 32 bit
và đa thức tạo cố định.

Trong số các ứng dụng khác, các kỹ thuật dựa trên CRC được sử dụng để xác minh tính toàn vẹn của
việc truyền hoặc lưu trữ dữ liệu. Trong phạm vi tiêu chuẩn EN/IEC 60335-1, chúng cung cấp
phương tiện xác minh tính toàn vẹn của bộ nhớ Flash. Đơn vị tính toán CRC giúp tính toán chữ ký của
phần mềm trong thời gian chạy, để so sánh với chữ ký tham chiếu được tạo tại thời điểm liên kết và
được lưu trữ tại một vị trí bộ nhớ nhất định.

4.2 Các tính năng chính của CRC

• Sử dụng đa thức CRC-32 (Ethernet): 0x4C11DB7


– X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 + X7 + X5 + X4 + X2+ X + 1

• Thanh ghi dữ liệu 32-bit đầu vào/đầu ra đơn

• Tính toán CRC được thực hiện trong 4 chu kỳ xung nhịp AHB (HCLK)

• Thanh ghi 8 bit đa năng (có thể được sử dụng để lưu trữ tạm thời)

Sơ đồ khối được thể hiện trong Hình 3.

RM0008 Phiên bản 21 63/1136

66
Machine Translated by Google

Đơn vị tính CRC RM0008

Hình 3. Sơ đồ khối đơn vị tính toán CRC

xe buýt AHB

32-bit (truy cập đọc)

Thanh ghi dữ liệu (đầu ra)

Tính toán CRC (đa thức: 0x4C11DB7)

32-bit (quyền ghi)

Thanh ghi dữ liệu (đầu vào)

ai14968

4.3 Mô tả chức năng CRC


Đơn vị tính toán CRC chủ yếu bao gồm một thanh ghi dữ liệu 32 bit, trong đó:
• được sử dụng làm thanh ghi đầu vào để nhập dữ liệu mới vào máy tính CRC (khi ghi vào
thanh ghi)

• giữ kết quả tính toán CRC trước đó (khi đọc thanh ghi)

Mỗi thao tác ghi vào thanh ghi dữ liệu sẽ tạo ra sự kết hợp giữa giá trị CRC trước đó và giá
trị mới (tính toán CRC được thực hiện trên toàn bộ từ dữ liệu 32 bit chứ không phải byte trên
mỗi byte).

Hoạt động ghi bị đình trệ cho đến khi kết thúc quá trình tính toán CRC, do đó cho phép truy
cập ghi ngược hoặc truy cập ghi và đọc liên tiếp.

Bộ tính CRC có thể được đặt lại về 0xFFFF FFFF bằng bit điều khiển RESET trong thanh
ghi CRC_CR. Hoạt động này không ảnh hưởng đến nội dung của thanh ghi CRC_IDR.

4.4 Thanh ghi CRC


Đơn vị tính toán CRC chứa hai thanh ghi dữ liệu và một thanh ghi điều khiển. Thiết bị ngoại
vi Các thanh ghi CRC phải được truy cập bằng các từ (32 bit).

4.4.1 Thanh ghi dữ liệu (CRC_DR)


Độ lệch địa chỉ: 0x00

Giá trị đặt lại: 0xFFFF FFFF

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

DR [31:16]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DR [15:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

64/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Đơn vị tính CRC

Bit 31:0 Bit thanh ghi dữ liệu

Được sử dụng làm thanh ghi đầu vào khi ghi dữ liệu mới vào máy tính CRC.
Giữ kết quả tính toán CRC trước đó khi nó được đọc.

4.4.2 Thanh ghi dữ liệu độc lập (CRC_IDR)


Độ lệch địa chỉ: 0x04

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

IDR[7:0]
Kín đáo
rw rw rw rw rw rw rw rw

Bit 31:8 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 7:0 Bit thanh ghi dữ liệu 8 bit đa năng

Có thể được sử dụng làm vị trí lưu trữ tạm thời cho một byte.
Thanh ghi này không bị ảnh hưởng bởi việc đặt lại CRC được tạo bởi bit RESET trong thanh
ghi CRC_CR.

4.4.3 Thanh ghi điều khiển (CRC_CR)


Độ lệch địa chỉ: 0x08

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CÀI LẠI
Kín đáo
w

Bit 31:1 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 0 Bit đặt lại

Đặt lại đơn vị tính toán CRC và đặt thanh ghi dữ liệu thành 0xFFFF FFFF.
Bit này chỉ có thể được đặt, nó sẽ tự động bị xóa bằng phần cứng.

4.4.4 Sơ đồ đăng ký CRC

Bảng sau đây cung cấp bản đồ thanh ghi CRC và các giá trị đặt lại.

Bảng 10. Bản đồ đăng ký đơn vị tính toán CRC và giá trị đặt lại

Đăng ký bù đắp 31-24 23-16 15-8 7 6 5 4 3 2 1 0

CRC_DR Đăng ký dữ liệu

0x00 Cài lại


0xFFFFFFFF
giá trị

RM0008 Phiên bản 21 65/1136

66
Machine Translated by Google

Đơn vị tính CRC RM0008

Bảng 10. Sơ đồ thanh ghi đơn vị tính toán CRC và giá trị đặt lại (tiếp theo)

Đăng ký bù đắp 31-24 23-16 15-8 7 6 5 4 3 2 1 0

CRC_IDR Thanh ghi dữ liệu độc lập


0x04 Đặt lại
Kín đáo
0x00
giá trị

CRC_CR CÀI LẠI

0x08 Đặt lại


Kín đáo
0
giá trị

66/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Điều khiển công suất (PWR)

5 Điều khiển công suất (PWR)

Các thiết bị mật độ thấp là bộ vi điều khiển STM32F101xx, STM32F102xx và STM32F103xx


trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

Các thiết bị có mật độ trung bình là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 64 đến 128 Kbyte.

Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ nhớ
Flash nằm trong khoảng từ 256 đến 512 Kbyte.

Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ


nhớ Flash nằm trong khoảng từ 768 Kbyte đến 1 Mbyte.

Các thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

Phần này áp dụng cho toàn bộ họ STM32F101xx, trừ khi có quy định khác.

5.1 Nguồn điện


Thiết bị yêu cầu nguồn điện áp hoạt động 2,0 đến 3,6 V (VDD). Một bộ điều chỉnh nhúng được sử
dụng để cung cấp nguồn điện kỹ thuật số 1,8 V bên trong.

Đồng hồ thời gian thực (RTC) và các thanh ghi dự phòng có thể được cấp nguồn từ điện áp VBAT
khi nguồn VDD chính bị tắt.

RM0008 Phiên bản 21 67/80

80
Machine Translated by Google

Điều khiển công suất (PWR) RM0008

Hình 4. Tổng quan về nguồn điện

miền VDDA
(VSSA) VREF
Bộ chuyển đổi A/
(từ 2,4 V đến VDDA) VREF+ D Bộ chuyển đổi

D/A Nhiệt độ.


khối Reset cảm
(VDD) VDDA biến PLL
(VSS) VSSA

miền VDD Miền 1,8 V

Vòng I/O
Cốt lõi
VSS
Bộ nhớ thiết
Mạch dự phòng
VDD (Logic đánh thức,
bị ngoại

vi kỹ thuật số
IWDG)

Bộ điều chỉnh điện áp

Máy dò điện áp thấp

Tên miền dự phòng

Tinh thể LSE 32K OSC


VBAT
đăng ký BKP
Đăng ký RCC BDCR
RTC

1. VDDA và VSSA phải được kết nối tương ứng với VDD và VSS .

5.1.1 Nguồn cung cấp và điện áp tham chiếu của bộ chuyển đổi A/D và D/A độc lập

Để cải thiện độ chính xác của quá trình chuyển đổi, ADC và DAC có nguồn điện độc lập có thể
được lọc riêng biệt và bảo vệ khỏi nhiễu trên PCB. • Đầu vào nguồn điện

áp ADC và DAC có sẵn trên một chân VDDA riêng . • Một kết nối nối đất cung cấp cách

ly được cung cấp trên chân VSSA.

Khi có sẵn (theo gói), VREF- phải được gắn với VSSA.

Trên gói 100 chân và 144 chân

Để đảm bảo độ chính xác cao hơn đối với đầu vào và đầu ra điện áp thấp, người dùng có thể kết nối
điện áp tham chiếu bên ngoài riêng biệt trên VREF+. VREF+ là điện áp cao nhất, được biểu thị bằng giá trị
thang đo đầy đủ, cho tín hiệu đầu vào tương tự (ADC) hoặc đầu ra (DAC). Điện áp trên VREF+ có thể dao
động từ 2,4 V đến VDDA.

Trên các gói 64 chân và các gói có ít chân hơn

Các chân VREF+ và VREF- không có sẵn, chúng được kết nối bên trong với nguồn điện áp ADC
(VDDA) và nối đất (VSSA).

68/80 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Điều khiển công suất (PWR)

5.1.2 Miền dự phòng pin

Để giữ lại nội dung của các thanh ghi Dự phòng và cung cấp chức năng RTC khi tắt VDD , chân VBAT có
thể được kết nối với điện áp dự phòng tùy chọn được cung cấp bởi pin hoặc bởi nguồn khác.

Chân VBAT cấp nguồn cho thiết bị RTC, bộ tạo dao động LSE và IO PC13 đến PC15, cho phép RTC hoạt động
ngay cả khi nguồn cung cấp kỹ thuật số chính (VDD) bị tắt. Việc chuyển sang nguồn VBAT được điều khiển
bởi Power Down Reset được nhúng trong khối Reset.

Cảnh báo: Trong quá trình tRSTTEMPO (tạm thời khi khởi động VDD ) hoặc sau khi phát hiện
PDR, công tắc nguồn giữa VBAT và VDD vẫn được kết nối với VBAT.

Trong giai đoạn khởi động, nếu VDD được thiết lập nhỏ hơn tRSTTEMPO
(Tham khảo bảng dữ liệu để biết giá trị của tRSTTEMPO) và VDD > VBAT + 0,6
V, dòng điện có thể được đưa vào VBAT
thông qua một diode bên trong được kết nối giữa VDD và công tắc nguồn
(VBAT).
Nếu nguồn điện/pin được kết nối với chân VBAT không thể hỗ trợ việc tiêm
dòng điện này, thì chúng tôi khuyên bạn nên kết nối một diode giảm áp bên
ngoài giữa nguồn điện này và chân VBAT .

Nếu không sử dụng pin ngoài trong ứng dụng, bạn nên kết nối VBAT bên ngoài với VDD bằng tụ
tách rời gốm bên ngoài 100 nF (để biết thêm chi tiết, hãy tham khảo AN2586).

Khi miền dự phòng được cung cấp bởi VDD (bộ chuyển mạch analog được kết nối với VDD), các chức
năng sau sẽ khả dụng:

• PC14 và PC15 có thể được sử dụng làm chân GPIO hoặc LSE

• PC13 có thể được sử dụng làm GPIO, chân TAMPER, Đồng hồ hiệu chỉnh RTC, Báo động RTC hoặc đầu
ra thứ hai (tham khảo Phần 6: Thanh ghi dự phòng (BKP))

Ghi chú: Do công tắc chỉ tiêu thụ một lượng dòng điện giới hạn (3 mA), nên việc sử dụng GPIO PC13 đến PC15
ở chế độ đầu ra bị hạn chế: tốc độ phải được giới hạn ở 2 MHz với tải tối đa là 30 pF và những điều này
IO không được sử dụng làm nguồn hiện tại (ví dụ: để điều khiển đèn LED).

Khi miền dự phòng được cung cấp bởi VBAT (công tắc analog được kết nối với VBAT vì không có VDD ),
các chức năng sau sẽ khả dụng:

• PC14 và PC15 chỉ có thể được sử dụng làm chân LSE

• PC13 có thể được sử dụng làm chân TAMPER, Báo động RTC hoặc Đầu ra thứ hai (tham khảo
Phần 6.4.2: Thanh ghi hiệu chỉnh đồng hồ RTC (BKP_RTCCR)).

RM0008 Phiên bản 21 69/80

80
Machine Translated by Google

Điều khiển công suất (PWR) RM0008

5.1.3 Bộ điều chỉnh điện áp

Bộ điều chỉnh điện áp luôn được bật sau khi Reset. Nó hoạt động ở ba chế độ khác
nhau tùy thuộc vào chế độ ứng dụng.
• Ở chế độ Chạy, bộ điều chỉnh cung cấp toàn bộ năng lượng cho miền 1,8 V (lõi, bộ nhớ và
thiết bị ngoại vi kỹ thuật số).
• Ở chế độ Dừng, bộ điều chỉnh cung cấp năng lượng thấp cho miền 1,8 V, bảo toàn
nội dung của các thanh ghi và SRAM
• Ở Chế độ chờ, bộ điều chỉnh bị tắt. Nội dung của các thanh ghi và SRAM bị mất ngoại
trừ mạch dự phòng và Miền dự phòng.

5.2 Người giám sát cung cấp điện

5.2.1 Đặt lại khi bật nguồn (POR)/Đặt lại khi tắt nguồn (PDR)

Thiết bị có mạch POR/PDR tích hợp cho phép vận hành thích hợp bắt đầu từ/xuống đến 2
V.

Thiết bị vẫn ở chế độ Đặt lại khi VDD/VDDA ở dưới ngưỡng chỉ định, VPOR/PDR, mà
không cần mạch đặt lại bên ngoài. Để biết thêm chi tiết liên quan đến ngưỡng đặt lại
bật/tắt nguồn, hãy tham khảo các đặc tính điện của biểu dữ liệu.

Hình 5. Dạng sóng reset bật nguồn/tắt nguồn


VDD/VDDA

Cạnh tăng CHDCND Lào

VPOR/PDR
40 mV
Cạnh rơi
độ trễ
VPOR/PDR
CHDCND Lào

tạm thời
tRSTTEMPO

Cài lại

MS30431V2

5.2.2 Máy dò điện áp lập trình (PVD)

PVD có thể được sử dụng để giám sát nguồn điện VDD/VDDA bằng cách so sánh nó với ngưỡng
được chọn bởi các bit PLS[2:0] trong thanh ghi điều khiển nguồn (PWR_CR).

PVD được kích hoạt bằng cách cài đặt bit PVDE.

70/80 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Điều khiển công suất (PWR)

Cờ PVDO có sẵn trong thanh ghi trạng thái/điều khiển nguồn (PWR_CSR), để cho biết VDD/
VDDA cao hơn hay thấp hơn ngưỡng PVD. Sự kiện này được kết nối nội bộ với dòng EXTI16
và có thể tạo ra ngắt nếu được bật thông qua các thanh ghi EXTI. Ngắt đầu ra PVD có
thể được tạo khi VDD/VDDA giảm xuống dưới ngưỡng PVD và/hoặc khi VDD/VDDA tăng trên
ngưỡng PVD tùy thuộc vào cấu hình cạnh tăng/giảm dòng EXTI16. Ví dụ, quy trình
bảo trì có thể thực hiện các tác vụ tắt khẩn cấp.

Hình 6. Ngưỡng PVD

VDD

Ngưỡng PVD 100 mV

độ trễ

Đầu ra PVD

MS30432V2

RM0008 Phiên bản 21 71/80

80
Machine Translated by Google

Điều khiển công suất (PWR) RM0008

5.3 Chế độ năng lượng thấp

Theo mặc định, bộ vi điều khiển ở chế độ Chạy sau khi đặt lại hệ thống hoặc nguồn. Có sẵn một số chế độ
năng lượng thấp để tiết kiệm năng lượng khi CPU không cần tiếp tục chạy, chẳng hạn như khi chờ sự kiện
bên ngoài. Người dùng có quyền lựa chọn chế độ mang lại sự dung hòa tốt nhất giữa mức tiêu thụ điện
năng thấp, thời gian khởi động ngắn và các nguồn đánh thức có sẵn.

Các thiết bị STM32F10xxx có ba chế độ năng lượng thấp:

• Chế độ ngủ (đồng hồ CPU tắt, tất cả các thiết bị ngoại vi bao gồm các thiết bị ngoại vi lõi Cortex®-M3
như NVIC, SysTick, v.v. vẫn tiếp tục chạy)

• Chế độ dừng (tất cả đồng hồ đều dừng)

• Chế độ chờ (tắt nguồn miền 1.8V)

Ngoài ra, mức tiêu thụ điện năng ở chế độ Chạy có thể giảm bằng một trong các cách sau:
có nghĩa:

• Làm chậm đồng hồ hệ thống

• Kết nối đồng hồ với các thiết bị ngoại vi APB và AHB khi chúng không được sử dụng.

Bảng 11. Tóm tắt chế độ năng lượng thấp

Hiệu ứng trên 1.8V Tác dụng lên VDD


Tên chế độ Lối vào Thức dậy Bộ điều chỉnh điện áp
đồng hồ miền đồng hồ miền

WFI Bất kỳ sự gián đoạn nào Đồng hồ CPU TẮT


Ngủ
không ảnh hưởng đến
Không có TRÊN
(Ngủ bây giờ hoặc
WFE Sự kiện thức dậy các đồng hồ khác hoặc
Ngủ - thoát)
nguồn đồng hồ analog

BẬT hoặc

Bit PDDS và LPDS + Bất kỳ dòng EXTI nào ở chế độ nguồn điện

Dừng lại SLEEPDEEP (được định cấu hình trong thấp (phụ thuộc vào
bit + WFI hoặc WFE thanh ghi EXTI) thanh ghi điều khiển nguồn

Tất cả đồng hồ miền Bộ dao động HSI và (PWR_CR))

1,8V TẮT HSE TẮT


Cạnh tăng chân WKUP,
Bit PDDS + cảnh báo RTC, thiết

Đứng gần bit SLEEPDEEP + lập lại bên ngoài trong TẮT
WFI hoặc WFE Chân NRST,
Đặt lại IWDG

5.3.1 Làm chậm đồng hồ hệ thống

Trong chế độ Chạy, tốc độ của đồng hồ hệ thống (SYSCLK, HCLK, PCLK1, PCLK2) có thể được giảm bằng
cách lập trình các thanh ghi bộ đếm gộp trước. Những bộ đếm gộp này cũng có thể được sử dụng để làm chậm
các thiết bị ngoại vi trước khi chuyển sang chế độ Ngủ.

Để biết thêm chi tiết, hãy tham khảo Phần 7.3.2: Thanh ghi cấu hình đồng hồ (RCC_CFGR).

72/80 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Điều khiển công suất (PWR)

5.3.2 Cổng đồng hồ ngoại vi

Ở chế độ Chạy, HCLK và PCLKx cho từng thiết bị ngoại vi và bộ nhớ riêng lẻ có thể bị dừng bất kỳ lúc
nào để giảm mức tiêu thụ điện năng.

Để tiếp tục giảm mức tiêu thụ điện năng ở chế độ Ngủ, đồng hồ ngoại vi có thể bị tắt trước khi thực
hiện các lệnh WFI hoặc WFE.

Việc đo xung nhịp ngoại vi được điều khiển bởi thanh ghi kích hoạt đồng hồ ngoại vi AHB
(RCC_AHBENR), thanh ghi kích hoạt đồng hồ ngoại vi APB1 (RCC_APB1ENR) và thanh ghi kích hoạt
đồng hồ ngoại vi APB2 (RCC_APB2ENR).

5.3.3 Chế độ ngủ

Nhập chế độ ngủ

Chế độ Ngủ được vào bằng cách thực hiện các lệnh WFI (Chờ ngắt) hoặc WFE (Chờ sự kiện). Có hai
tùy chọn để chọn cơ chế nhập Chế độ ngủ, tùy thuộc vào bit SLEEPONEXIT trong thanh ghi Điều khiển
hệ thống Cortex®-M3: • Ngủ ngay: nếu bit SLEEPONEXIT bị xóa, MCU sẽ chuyển sang chế độ

Ngủ ngay khi WFI hoặc WFE hướng dẫn được thực hiện.

• Ngủ khi thoát: nếu bit SLEEPONEXIT được đặt, MCU sẽ chuyển sang chế độ Ngủ ngay khi thoát khỏi
ISR có mức ưu tiên thấp nhất.

Ở chế độ Ngủ, tất cả các chân I/O giữ nguyên trạng thái như ở chế độ Chạy.

Tham khảo Bảng 12 và Bảng 13 để biết chi tiết về cách vào chế độ Ngủ.

Thoát khỏi chế độ Ngủ

Nếu lệnh WFI được sử dụng để vào chế độ Ngủ, bất kỳ ngắt ngoại vi nào được bộ điều khiển ngắt vectơ
lồng nhau (NVIC) xác nhận đều có thể đánh thức thiết bị khỏi chế độ Ngủ.

Nếu lệnh WFE được sử dụng để vào chế độ Ngủ, MCU sẽ thoát khỏi chế độ Ngủ ngay khi sự kiện xảy ra.
Sự kiện đánh thức có thể được tạo bằng cách:

• cho phép ngắt trong thanh ghi điều khiển ngoại vi nhưng không phải trong NVIC và cho phép bit
SEVONPEND trong thanh ghi Điều khiển hệ thống Cortex®-M3. Khi MCU tiếp tục từ WFE, bit chờ
xử lý ngắt ngoại vi và bit chờ xử lý kênh NVIC IRQ ngoại vi (trong thanh ghi chờ xóa ngắt
NVIC) phải được xóa.

• hoặc định cấu hình dòng EXTI bên ngoài hoặc bên trong ở chế độ sự kiện. Khi CPU tiếp tục hoạt động
từ WFE, không cần thiết phải xóa bit chờ ngắt ngoại vi hoặc bit chờ xử lý kênh NVIC IRQ vì bit
đang chờ xử lý tương ứng với dòng sự kiện không được đặt.

Chế độ này cung cấp thời gian đánh thức thấp nhất vì không lãng phí thời gian khi vào/ra ngắt.

Tham khảo Bảng 12 và Bảng 13 để biết thêm chi tiết về cách thoát khỏi chế độ Ngủ.

RM0008 Phiên bản 21 73/80

80
Machine Translated by Google

Điều khiển công suất (PWR) RM0008

Bảng 12. Đi ngủ ngay

Chế độ ngủ ngay Sự miêu tả

WFI (Chờ ngắt) hoặc WFE (Chờ sự kiện) trong khi:


– SLEEPDEEP = 0 và
Nhập chế độ
– SLEEPONEXIT = 0

Tham khảo thanh ghi Điều khiển Hệ thống Cortex®-M3.

Nếu WFI được sử dụng để vào:

Ngắt: Tham khảo Phần 10.1.2: Các vectơ ngắt và ngoại lệ


Thoát chế độ
Nếu WFE được sử dụng để vào

Sự kiện đánh thức: Tham khảo Phần 10.2.3: Quản lý sự kiện đánh thức

Độ trễ đánh thức Không có

Bảng 13. Ngủ khi thoát

Ngủ khi thoát Sự miêu tả

WFI (chờ ngắt) trong khi:


– SLEEPDEEP = 0 và
Nhập chế độ
– SLEEPONEXIT = 1

Tham khảo thanh ghi Điều khiển Hệ thống Cortex®-M3.

Thoát chế độ Ngắt: tham khảo Phần 10.1.2: Các vectơ ngắt và ngoại lệ.

Độ trễ đánh thức Không có

5.3.4 Chế độ dừng

Chế độ Dừng dựa trên chế độ ngủ sâu Cortex®-M3 kết hợp với tính năng đo đồng hồ ngoại vi. Bộ điều chỉnh
điện áp có thể được cấu hình ở chế độ bình thường hoặc chế độ năng lượng thấp.
Ở chế độ Dừng, tất cả các đồng hồ trong miền 1,8 V đều dừng, bộ dao động PLL, HSI và HSE RC bị tắt. SRAM
và nội dung đăng ký được bảo tồn.

Ở chế độ Dừng, tất cả các chân I/O giữ nguyên trạng thái như ở chế độ Chạy.

Vào chế độ Dừng

Tham khảo Bảng 14 để biết chi tiết về cách vào chế độ Dừng.

Để giảm hơn nữa mức tiêu thụ điện năng ở chế độ Dừng, bộ điều chỉnh điện áp bên trong có thể được đặt ở
chế độ năng lượng thấp. Điều này được cấu hình bởi bit LPDS của thanh ghi điều khiển nguồn
(PWR_CR).

Nếu việc lập trình bộ nhớ Flash đang diễn ra, mục nhập chế độ Dừng sẽ bị trì hoãn cho đến khi quá trình
truy cập bộ nhớ kết thúc.

Nếu việc truy cập vào miền APB đang diễn ra, mục nhập Chế độ dừng sẽ bị trì hoãn cho đến khi quá trình
truy cập APB kết thúc.

74/80 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Điều khiển công suất (PWR)

Trong chế độ Dừng, các tính năng sau có thể được chọn bằng cách lập trình các bit điều khiển riêng lẻ:

• Cơ quan giám sát độc lập (IWDG): IWDG được khởi động bằng cách ghi vào thanh ghi Key của nó hoặc
bằng tùy chọn phần cứng. Sau khi bắt đầu, nó không thể dừng lại ngoại trừ bằng cách
Đặt lại. Xem Phần 19.3: Mô tả chức năng IWDG.

• Đồng hồ thời gian thực (RTC): được cấu hình bởi bit RTCEN trong miền Sao lưu
thanh ghi điều khiển (RCC_BDCR)
• Bộ tạo dao động RC bên trong (LSI RC): bộ dao động này được cấu hình bởi bit LSION trong thanh ghi Điều

khiển/trạng thái (RCC_CSR).


• Bộ tạo dao động 32,768 kHz bên ngoài (LSE OSC): bộ tạo dao động này được cấu hình bởi bit LSEON
trong thanh ghi điều khiển miền dự phòng (RCC_BDCR).

ADC hoặc DAC cũng có thể tiêu thụ điện năng trong chế độ Dừng, trừ khi chúng bị tắt trước khi vào. Để
vô hiệu hóa chúng, cả bit ADON trong thanh ghi ADC_CR2 và bit ENx trong thanh ghi DAC_CR đều phải
được ghi về 0.

Ghi chú: Nếu ứng dụng cần tắt đồng hồ bên ngoài trước khi vào chế độ Dừng, trước tiên phải tắt bit HSEON và
đồng hồ hệ thống chuyển sang HSI. Mặt khác, nếu bit HSEON vẫn được bật và đồng hồ bên ngoài (bộ dao
động bên ngoài) bị loại bỏ khi vào chế độ Dừng, tính năng hệ thống bảo mật đồng hồ (CSS) phải được bật
để phát hiện bất kỳ lỗi bộ dao động bên ngoài nào và tránh hành vi trục trặc khi vào chế độ dừng.

Thoát khỏi chế độ Dừng

Tham khảo Bảng 14 để biết thêm chi tiết về cách thoát khỏi chế độ Dừng.

Khi thoát khỏi chế độ Dừng bằng cách phát ra sự kiện ngắt hoặc sự kiện đánh thức, bộ tạo dao động HSI RC
được chọn làm đồng hồ hệ thống.

Khi bộ điều chỉnh điện áp hoạt động ở chế độ năng lượng thấp, sẽ phát sinh thêm độ trễ khởi động
khi thức dậy từ chế độ Dừng. Bằng cách BẬT bộ điều chỉnh bên trong trong chế độ Dừng, mức tiêu thụ sẽ
cao hơn mặc dù thời gian khởi động giảm.

Bảng 14. Chế độ dừng

Chế độ dừng Sự miêu tả

WFI (Chờ ngắt) hoặc WFE (Chờ sự kiện) trong khi:

– Đặt bit SLEEPDEEP trong thanh ghi Điều khiển hệ thống Cortex®-M3

– Xóa bit PDDS trong thanh ghi Power Control (PWR_CR)

– Chọn chế độ điều chỉnh điện áp bằng cách cấu hình bit LPDS trong PWR_CR
Nhập chế độ

Lưu ý: Để vào chế độ Dừng, tất cả các bit đang chờ xử lý của Dòng EXTI (trong thanh ghi

Đang chờ xử lý (EXTI_PR)), tất cả các bit đang chờ xử lý ngắt ngoại vi và cờ Cảnh báo RTC

phải được đặt lại. Nếu không, quy trình nhập chế độ Dừng sẽ bị bỏ qua và việc

thực hiện chương trình vẫn tiếp tục.

Nếu WFI được sử dụng để vào:

Bất kỳ Dòng EXTI nào được định cấu hình ở chế độ Ngắt (vectơ ngắt EXTI tương

ứng phải được bật trong NVIC). Tham khảo Phần 10.1.2: Các vectơ ngắt và ngoại lệ.
Thoát chế độ

Nếu WFE được sử dụng để vào:

Bất kỳ Dòng EXTI nào được định cấu hình ở chế độ sự kiện. Tham khảo Phần

10.2.3: Quản lý sự kiện đánh thức

Độ trễ đánh thức Thời gian đánh thức HSI RC + thời gian đánh thức bộ điều chỉnh từ chế độ Nguồn điện thấp

RM0008 Phiên bản 21 75/80

80
Machine Translated by Google

Điều khiển công suất (PWR) RM0008

5.3.5 Chế độ chờ


Chế độ chờ cho phép đạt được mức tiêu thụ điện năng thấp nhất. Nó dựa trên chế độ ngủ sâu
Cortex®-M3, tắt bộ điều chỉnh điện áp. Do đó, miền 1.8 V bị tắt. PLL, bộ dao động HSI và
bộ dao động HSE cũng bị tắt. Nội dung SRAM và thanh ghi bị mất ngoại trừ các thanh ghi
trong miền Dự phòng và mạch dự phòng (xem Hình 4).

Vào chế độ chờ

Tham khảo Bảng 15 để biết thêm chi tiết về cách vào chế độ Chờ.

Trong chế độ Chờ, các tính năng sau có thể được chọn bằng cách lập trình các bit điều khiển
riêng lẻ:

• Cơ quan giám sát độc lập (IWDG): IWDG được khởi động bằng cách ghi vào thanh ghi Key của nó hoặc
bằng tùy chọn phần cứng. Sau khi bắt đầu, nó không thể dừng lại ngoại trừ việc
thiết lập lại. Xem Phần 19.3: Mô tả chức năng IWDG.

• Đồng hồ thời gian thực (RTC): được cấu hình bởi bit RTCEN trong miền Sao lưu
thanh ghi điều khiển (RCC_BDCR)
• Bộ tạo dao động RC bên trong (LSI RC): bộ dao động này được cấu hình bởi bit LSION trong thanh ghi Điều

khiển/trạng thái (RCC_CSR).


• Bộ tạo dao động 32,768 kHz bên ngoài (LSE OSC): bộ tạo dao động này được cấu hình bởi bit LSEON
trong thanh ghi điều khiển miền dự phòng (RCC_BDCR)

Thoát khỏi chế độ chờ

Bộ vi điều khiển thoát khỏi chế độ Chờ khi thiết lập lại bên ngoài (chân NRST), thiết lập lại
IWDG, cạnh tăng trên chân WKUP hoặc cạnh tăng của cảnh báo RTC xảy ra (xem Hình 179: Sơ
đồ khối đơn giản hóa RTC) . Tất cả các thanh ghi được đặt lại sau khi đánh thức từ chế
độ Chờ ngoại trừ thanh ghi trạng thái/điều khiển nguồn (PWR_CSR).

Sau khi thức dậy từ chế độ Chờ, việc thực thi chương trình sẽ khởi động lại theo cách tương tự
như sau khi Đặt lại (lấy mẫu chân khởi động, đặt lại vectơ được tìm nạp, v.v.). Cờ trạng thái
SBF trong thanh ghi trạng thái/điều khiển nguồn (PWR_CSR) cho biết MCU đang ở chế độ Chờ.

Tham khảo Bảng 15 để biết thêm chi tiết về cách thoát khỏi chế độ Chờ.

Bảng 15. Chế độ chờ

Chế độ chờ Sự miêu tả

WFI (Chờ ngắt) hoặc WFE (Chờ sự kiện) trong khi:

– Đặt SLEEPDEEP trong thanh ghi Điều khiển hệ thống Cortex®-M3

Nhập chế độ – Đặt bit PDDS trong thanh ghi Power Control (PWR_CR)

– Xóa bit WUF trong thanh ghi Điều khiển nguồn/Trạng thái (PWR_CSR)

– Không có ngắt (đối với WFI) hoặc sự kiện (đối với WFI) đang chờ xử lý

Cạnh tăng của chân WKUP, cạnh tăng của sự kiện cảnh báo RTC, Đặt lại bên ngoài trong
Thoát chế độ
chân NRST , Đặt lại IWDG.

Độ trễ đánh thức Giai đoạn đặt lại

76/80 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Điều khiển công suất (PWR)

Trạng thái I/O ở chế độ chờ

Ở chế độ Standby, tất cả các chân I/O đều có trở kháng cao ngoại trừ:

• Bảng đặt lại (vẫn có sẵn)

• Chân TAMPER nếu được cấu hình để giả mạo hoặc hiệu chuẩn

• Chân WKUP, nếu được bật

Chế độ kiểm tra sửa lỗi

Theo mặc định, kết nối gỡ lỗi sẽ bị mất nếu ứng dụng đặt MCU ở chế độ Dừng hoặc Chờ trong khi sử dụng
các tính năng gỡ lỗi. Điều này là do lõi Cortex®-M3 không còn xung nhịp nữa.

Tuy nhiên, bằng cách thiết lập một số bit cấu hình trong thanh ghi DBGMCU_CR, phần mềm có thể được gỡ
lỗi ngay cả khi sử dụng rộng rãi các chế độ năng lượng thấp. Để biết thêm chi tiết, hãy tham khảo Phần
31.16.1: Hỗ trợ gỡ lỗi cho chế độ năng lượng thấp.

5.3.6 Tự động đánh thức (AWU) từ chế độ năng lượng thấp

RTC có thể được sử dụng để đánh thức MCU từ chế độ năng lượng thấp mà không phụ thuộc vào ngắt bên
ngoài (Chế độ tự động đánh thức). RTC cung cấp cơ sở thời gian có thể lập trình để đánh thức từ chế
độ Dừng hoặc Chờ đều đặn. Với mục đích này, hai trong số ba nguồn đồng hồ RTC thay thế có thể được chọn
bằng cách lập trình các bit RTCSEL[1:0] trong thanh ghi điều khiển miền dự phòng (RCC_BDCR):

• Bộ tạo dao động tinh thể ngoài 32,768 kHz công suất thấp (LSE OSC).
Nguồn đồng hồ này cung cấp cơ sở thời gian chính xác với mức tiêu thụ điện năng rất thấp (mức tiêu
thụ bổ sung dưới 1µA trong điều kiện thông thường)

• Bộ tạo dao động RC bên trong công suất thấp (LSI RC)
Nguồn xung nhịp này có ưu điểm là tiết kiệm chi phí tinh thể 32,768 kHz. Bộ tạo dao động RC bên
trong này được thiết kế để tăng mức tiêu thụ điện năng tối thiểu.

Để đánh thức từ chế độ Dừng bằng sự kiện cảnh báo RTC, cần phải:

• Cấu hình EXTI Line 17 nhạy cảm với cạnh tăng

• Cấu hình RTC để tạo cảnh báo RTC

Để đánh thức từ chế độ Chờ, không cần cấu hình EXTI Line 17.

5,4 Thanh ghi điều khiển nguồn

Các thanh ghi ngoại vi có thể được truy cập bằng nửa từ (16 bit) hoặc từ (32 bit).

5.4.1 Thanh ghi điều khiển công suất (PWR_CR)

Độ lệch địa chỉ: 0x00

Giá trị đặt lại: 0x0000 0000 (đặt lại bằng cách đánh thức từ chế độ Chờ)

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DBP XIN VUI LÒNG[2:0]


PVDE CSBF CWUF PDDS LPDS
Kín đáo
rw rw rw rw rw rc_w1 rc_w1 rw rw

RM0008 Phiên bản 21 77/80

80
Machine Translated by Google

Điều khiển công suất (PWR) RM0008

Bit 31:9 Dự trữ, phải được giữ ở giá trị đặt lại..

Bit 8 DBP: Tắt tính năng bảo vệ ghi tên miền dự phòng.

Ở trạng thái thiết lập lại, RTC và các thanh ghi dự phòng được bảo vệ chống lại quyền truy cập ghi ký sinh.

Bit này phải được đặt để cho phép truy cập ghi vào các thanh ghi này.

0: Đã vô hiệu hóa quyền truy cập vào RTC và các thanh ghi dự

phòng 1: Đã bật quyền truy cập vào các thanh ghi RTC và Sao lưu

Lưu ý: Nếu HSE chia cho 128 được sử dụng làm đồng hồ RTC, bit này phải được đặt thành 1.

Bit 7:5 PLS[2:0]: Lựa chọn mức PVD.

Các bit này được viết bằng phần mềm để chọn ngưỡng điện áp được phát hiện bởi bộ dò điện áp lập

trình

000: 2.2V

001: 2.3V

010: 2.4V

011: 2.5V

100: 2.6V

101: 2.7V

110: 2.8V

111: 2.9V

Lưu ý: Tham khảo các đặc tính điện của bảng dữ liệu để biết thêm chi tiết.

Bit 4 PVDE: cho phép phát hiện điện áp có thể lập trình.

bit này được thiết lập và xóa bằng phần mềm.

0: Tắt PVD 1: Bật

PVD

Bit 3 CSBF: Xóa cờ chờ.

Bit này luôn được đọc là 0.

0: Không có

hiệu lực 1: Xóa cờ chờ SBF (ghi).

Bit 2 CWUF: Xóa cờ đánh thức.

Bit này luôn được đọc là 0.

0: Không có

hiệu lực 1: Xóa Cờ đánh thức WUF sau 2 chu kỳ đồng hồ hệ thống. (viết)

Bit 1 PDDS: Tắt nguồn khi ngủ sâu.

bit này được thiết lập và xóa bằng phần mềm. Nó hoạt động cùng với bit LPDS.

0: Vào chế độ Stop khi CPU vào chế độ Deepsleep. Trạng thái bộ điều chỉnh phụ thuộc vào bit LPDS.

1: Vào chế độ Standby khi CPU vào chế độ Deepsleep.

Bit 0 LPDS: Ngủ sâu năng lượng thấp.

bit này được thiết lập và xóa bằng phần mềm. Nó hoạt động cùng với bit PDDS.

0: Bật bộ điều chỉnh điện áp trong chế độ Dừng

1: Bộ điều chỉnh điện áp ở chế độ năng lượng thấp trong chế độ Dừng

78/80 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Điều khiển công suất (PWR)

5.4.2 Thanh ghi trạng thái/điều khiển nguồn (PWR_CSR)

Độ lệch địa chỉ: 0x04

Giá trị đặt lại: 0x0000 0000 (không được đặt lại khi đánh thức từ chế độ Chờ)

Cần có các chu kỳ APB bổ sung để đọc thanh ghi này so với đọc APB tiêu chuẩn.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

EWUP PVDO SBF WUF


Kín đáo Kín đáo
rw r r r

Bit 31:9 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 8 EWUP: Kích hoạt chân WKUP

bit này được thiết lập và xóa bằng phần mềm.

0: Chân WKUP được sử dụng cho mục đích I/O chung. Sự kiện trên chân WKUP không đánh thức thiết bị từ chế
độ Chờ.

1: Chân WKUP được sử dụng để đánh thức từ chế độ Chờ và bắt buộc trong cấu hình kéo xuống đầu
vào (Cạnh tăng trên chân WKUP đánh thức hệ thống từ chế độ Chờ).

Lưu ý: Bit này được đặt lại bằng Thiết lập lại hệ thống.

Bit 7:3 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 2 PVDO: Đầu ra PVD

Bit này được thiết lập và xóa bằng phần cứng. Nó chỉ hợp lệ nếu PVD được kích hoạt bởi bit PVDE.

0: VDD/VDDA cao hơn ngưỡng PVD được chọn bằng bit PLS[2:0].

1: VDD/VDDA thấp hơn ngưỡng PVD được chọn bằng bit PLS[2:0].

Lưu ý: PVD bị dừng ở chế độ Chờ. Vì lý do này, bit này bằng 0 sau
Chờ hoặc đặt lại cho đến khi bit PVDE được đặt.

Bit 1 SBF: Cờ dự phòng

Bit này được thiết lập bằng phần cứng và chỉ bị xóa bằng POR/PDR (đặt lại nguồn khi bật/tắt nguồn) hoặc bằng
cách đặt bit CSBF trong thanh ghi điều khiển nguồn (PWR_CR)

0: Thiết bị chưa ở chế độ chờ

1: Thiết bị đang ở chế độ chờ

Bit 0 WUF: Cờ đánh thức

Bit này được thiết lập bằng phần cứng và bị xóa bằng phần cứng, bằng cách thiết lập lại hệ thống hoặc bằng cách đặt

Bit CWUF trong thanh ghi điều khiển nguồn (PWR_CR)

0: Không có sự kiện đánh thức nào xảy ra

1: Đã nhận được sự kiện đánh thức từ chân WKUP hoặc từ cảnh báo RTC

Lưu ý: Một sự kiện đánh thức bổ sung được phát hiện nếu chân WKUP được bật (bằng cách đặt
EWUP bit) khi mức chân WKUP đã ở mức cao.

RM0008 Phiên bản 21 79/80

80
Machine Translated by Google

Điều khiển công suất (PWR) RM0008

5.4.3 Sơ đồ đăng ký PWR

Bảng sau đây tóm tắt các thanh ghi PWR.

Bảng 16. Sơ đồ đăng ký PWR và giá trị đặt lại

Đăng ký bù đắp

1
7
5
6

0
3
8
9

2
4
Làm
PWR_CR
0x000 Kín đáo

PBD
ơn [2:0]

S DPL
E DVP
F BSC

S DDP
F UWC
Đặt lại giá trị 0 0 0 0 0 0 0 0

PWR_CSR
0x004 Kín đáo Kín đáo

FBS
FUW
ODVP
PUWE
Đặt lại giá trị 0 0 0 0

Tham khảo Bảng 3 trên trang 50 để biết địa chỉ biên của thanh ghi.

80/80 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Thanh ghi dự phòng (BKP)

6 Thanh ghi dự phòng (BKP)

Các thiết bị mật độ thấp là bộ vi điều khiển STM32F101xx, STM32F102xx và STM32F103xx


trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

Các thiết bị có mật độ trung bình là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 64 đến 128 Kbyte.

Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ nhớ
Flash nằm trong khoảng từ 256 đến 512 Kbyte.

Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ nhớ
Flash nằm trong khoảng từ 768 Kbyte đến 1 Mbyte.

Các thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

Phần này áp dụng cho toàn bộ họ STM32F101xx, trừ khi có quy định khác.

6.1 Giới thiệu BKP

Các thanh ghi dự phòng gồm 42 thanh ghi 16 bit để lưu trữ 84 byte dữ liệu ứng dụng của người dùng.

Chúng được triển khai trong miền dự phòng vẫn được VBAT cấp nguồn khi tắt nguồn VDD . Chúng không
được đặt lại khi thiết bị thức dậy từ chế độ Chờ hoặc bằng cách đặt lại hệ thống hoặc đặt lại
nguồn.

Ngoài ra, các thanh ghi điều khiển BKP được sử dụng để quản lý tính năng phát hiện giả mạo và hiệu
chuẩn RTC.

Sau khi đặt lại, quyền truy cập vào các thanh ghi Sao lưu và RTC bị vô hiệu hóa và miền Sao lưu
(BKP) được bảo vệ khỏi khả năng truy cập ghi ký sinh. Để cho phép truy cập vào các thanh ghi Sao
lưu và RTC, hãy tiến hành như sau:

• kích hoạt đồng hồ giao diện nguồn và dự phòng bằng cách thiết lập các bit PWREN và BKPEN
trong sổ đăng ký RCC_APB1ENR

• đặt bit DBP trong thanh ghi điều khiển nguồn (PWR_CR) để cho phép truy cập vào
Sao lưu các thanh ghi và RTC.

6.2 Các tính năng chính của BKP

• Thanh ghi dữ liệu 20 byte (trong thiết bị mật độ trung bình và mật độ thấp) hoặc thanh ghi dữ
liệu 84 byte (trong thiết bị đường truyền mật độ cao, mật độ XL và kết nối)

• Thanh ghi trạng thái/điều khiển để quản lý việc phát hiện giả mạo với khả năng ngắt

• Thanh ghi hiệu chuẩn để lưu trữ giá trị hiệu chuẩn RTC
• Khả năng xuất Đồng hồ hiệu chuẩn RTC, xung cảnh báo RTC hoặc xung thứ hai trên
Chân TAMPER PC13 (khi chân này không được sử dụng để phát hiện giả mạo)

RM0008 Phiên bản 21 81/1136

89
Machine Translated by Google

Thanh ghi dự phòng (BKP) RM0008

6.3 Mô tả chức năng BKP

6.3.1 Phát hiện giả mạo

Chân TAMPER tạo ra sự kiện phát hiện giả mạo khi chân thay đổi từ 0 thành 1 hoặc từ 1 thành 0 tùy
thuộc vào bit TPAL trong thanh ghi điều khiển dự phòng (BKP_CR). Một sự kiện phát hiện giả mạo sẽ
đặt lại tất cả các thanh ghi sao lưu dữ liệu.

Tuy nhiên, để tránh mất các sự kiện Giả mạo, tín hiệu được sử dụng để phát hiện cạnh được AND
một cách logic khi bật Tamper để phát hiện sự kiện Giả mạo trong trường hợp nó xảy ra trước khi
chân TAMPER được bật.

• Khi TPAL=0: Nếu chân TAMPER đã ở mức cao trước khi nó được bật (bằng cách đặt bit TPE), một sự
kiện Tamper bổ sung sẽ được phát hiện ngay khi chân TAMPER được bật (trong khi không có cạnh
tăng nào trên chân TAMPER sau đó TPE đã được thiết lập)

• Khi TPAL=1: Nếu chân TAMPER đã ở mức thấp trước khi được bật (bằng cách đặt bit TPE), một sự
kiện Tamper bổ sung sẽ được phát hiện ngay khi chân TAMPER được bật (trong khi không có
cạnh rơi nào trên chân TAMPER sau khi TPE được thiết lập)

Bằng cách thiết lập bit TPIE trong thanh ghi BKP_CSR, một ngắt được tạo ra khi xảy ra sự kiện phát
hiện giả mạo.

Sau khi phát hiện và xóa sự kiện Giả mạo, chân TAMPER phải được tắt rồi bật lại bằng TPE trước khi
ghi lại vào thanh ghi dữ liệu dự phòng (BKP_DRx).
Điều này ngăn phần mềm ghi vào các thanh ghi dữ liệu dự phòng (BKP_DRx), trong khi giá trị chân
TAMPER vẫn cho biết phát hiện Giả mạo. Điều này tương đương với việc phát hiện mức độ trên chân
TAMPER.

Ghi chú: Phát hiện giả mạo vẫn hoạt động khi tắt nguồn VDD . Để tránh việc đặt lại các thanh ghi sao lưu dữ
liệu không mong muốn, chân TAMPER phải được gắn bên ngoài ở mức chính xác.

6.3.2 Hiệu chuẩn RTC

Đối với mục đích đo lường, đồng hồ RTC có tần số chia cho 64 có thể được xuất ra trên chân TAMPER.
Điều này được kích hoạt bằng cách đặt bit CCO trong thanh ghi hiệu chỉnh đồng hồ RTC (BKP_RTCCR).

Đồng hồ có thể bị chậm lại tới 121 trang/phút bằng cách định cấu hình các bit CAL[6:0].

Để biết thêm chi tiết về hiệu chuẩn RTC và cách sử dụng nó để cải thiện độ chính xác của giờ hiện
hành, hãy tham khảo AN2604 "STM32F101xx và hiệu chuẩn RTC STM32F103xx".

82/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Thanh ghi dự phòng (BKP)

6,4 đăng ký BKP


Tham khảo Phần 2.2 trên trang 45 để biết danh sách các chữ viết tắt được sử dụng trong mô tả đăng ký.

Các thanh ghi ngoại vi có thể được truy cập bằng nửa từ (16 bit) hoặc từ (32 bit).

6.4.1 Thanh ghi dữ liệu dự phòng x (BKP_DRx) (x=1..42)

Độ lệch địa chỉ: 0x04 đến 0x28, 0x40 đến 0xBC

Giá trị đặt lại: 0x0000 0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

D[15:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bits 15:0 D[15:0] Sao lưu dữ liệu

Những bit này có thể được ghi bằng dữ liệu người dùng.

Lưu ý: Các thanh ghi BKP_DRx không được đặt lại bằng thiết lập lại Hệ thống hoặc Đặt lại nguồn hoặc khi
thiết bị thức dậy từ chế độ Chờ.
Chúng được đặt lại bằng cách đặt lại Miền dự phòng hoặc bằng sự kiện ghim TAMPER (nếu chức năng ghim
TAMPER được kích hoạt).

6.4.2 Thanh ghi hiệu chuẩn đồng hồ RTC (BKP_RTCCR)


Độ lệch địa chỉ: 0x2C

Giá trị đặt lại: 0x0000 0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

ASOS ASOE CCO CAL[6:0]


Kín đáo
rw rw rw rw rw rw rw rw rw rw

Bit 15:10 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 9 ASOS: Lựa chọn cảnh báo hoặc đầu ra thứ hai

Khi bit ASOE được đặt, bit ASOS có thể được sử dụng để chọn xem tín hiệu đầu ra trên chân TAMPER là tín
hiệu xung RTC thứ hai hay tín hiệu xung Cảnh báo:

0: Đã chọn đầu ra xung cảnh báo RTC

1: RTC Đầu ra xung thứ hai được chọn

Lưu ý: Bit này chỉ được đặt lại bằng cách đặt lại miền dự phòng.

RM0008 Phiên bản 21 83/1136

89
Machine Translated by Google

Thanh ghi dự phòng (BKP) RM0008

Bit 8 ASOE: Cho phép cảnh báo hoặc đầu ra thứ hai

Việc thiết lập bit này sẽ xuất ra tín hiệu xung Cảnh báo RTC hoặc tín hiệu xung thứ hai trên chân TAMPER tùy

thuộc vào bit ASOS.

Thời lượng xung đầu ra là một chu kỳ đồng hồ RTC. Chân TAMPER không được bật trong khi bit ASOE được đặt.

Lưu ý: Bit này chỉ được đặt lại bằng cách đặt lại miền dự phòng.

Bit 7 CCO: Đầu ra đồng hồ hiệu chuẩn

0: Không có hiệu lực

1: Đặt bit này sẽ xuất ra đồng hồ RTC với tần số chia cho 64 trên chân TAMPER.

Chân TAMPER không được bật trong khi bit CCO được đặt để tránh bị phát hiện Giả mạo không mong muốn.

Lưu ý: Bit này được đặt lại khi nguồn VDD bị tắt.

Bit 6:0 CAL[6:0]: Giá trị hiệu chuẩn

Giá trị này cho biết số lượng xung đồng hồ sẽ bị bỏ qua sau mỗi 2^20 xung đồng hồ.

Điều này cho phép hiệu chỉnh RTC, làm chậm đồng hồ theo các bước 1000000/2^20 PPM.

Đồng hồ của RTC có thể bị chậm lại từ 0 đến 121PPM.

6.4.3 Thanh ghi điều khiển dự phòng (BKP_CR)

Độ lệch địa chỉ: 0x30

Giá trị đặt lại: 0x0000 0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

TPAL TPE
Kín đáo
rw rw

Bit 15:2 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 1 TPAL: Mức hoạt động của chân TAMPER

0: Mức cao trên chân TAMPER sẽ đặt lại tất cả các thanh ghi sao lưu dữ liệu (nếu bit TPE được đặt).

1: Mức thấp trên chân TAMPER sẽ đặt lại tất cả các thanh ghi sao lưu dữ liệu (nếu bit TPE được đặt).

Bit 0 TPE: Kích hoạt chân TAMPER

0: Chân TAMPER miễn phí cho I/O cho mục đích chung

1: Chức năng I/O thay thế giả mạo được kích hoạt.

Ghi chú: Việc đặt các bit TPAL và TPE cùng lúc luôn an toàn, tuy nhiên, việc đặt lại cả hai cùng lúc có
thể tạo ra sự kiện giả mạo. Vì lý do này, chỉ nên thay đổi bit TPAL khi bit TPE được đặt lại.

6.4.4 Thanh ghi điều khiển/trạng thái dự phòng (BKP_CSR)

Độ lệch địa chỉ: 0x34

Giá trị đặt lại: 0x0000 0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

TIF TEF TPIE CTI CTE


Kín đáo Kín đáo
r r rw w w

84/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Thanh ghi dự phòng (BKP)

Bit 15:10 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 9 TIF: Cờ ngắt giả mạo Bit

này được thiết lập bởi phần cứng khi phát hiện sự kiện giả mạo và bit TPIE được thiết lập. Nó
được xóa bằng cách ghi 1 vào bit CTI (cũng xóa ngắt). Nó cũng bị xóa nếu bit TPIE được đặt lại.

0: Không có ngắt giả mạo


1: Đã xảy ra ngắt giả mạo

Lưu ý: Bit này chỉ được đặt lại bằng cách thiết lập lại hệ thống và đánh thức từ chế độ Chờ.

Bit 8 TEF: Cờ sự kiện giả mạo

Bit này được thiết lập bởi phần cứng khi phát hiện sự kiện giả mạo. Nó được xóa bằng cách ghi 1
vào bit CTE.

0: Không có sự kiện giả mạo

1: Xảy ra sự kiện giả mạo

Lưu ý: Sự kiện giả mạo sẽ đặt lại tất cả các thanh ghi BKP_DRx. Chúng được giữ ở trạng thái thiết lập lại miễn
là bit TEF được đặt. Nếu việc ghi vào thanh ghi BKP_DRx được thực hiện trong khi bit này được đặt,
giá trị sẽ không được lưu trữ.

Bit 7:3 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 2 TPIE: Cho phép ngắt chân TAMPER

0: Ngắt giả mạo bị vô hiệu hóa


1: Đã bật ngắt giả mạo (bit TPE cũng phải được đặt trong thanh ghi BKP_CR

Lưu ý: Ngắt giả mạo không đánh thức lõi từ chế độ năng lượng thấp.

Bit này chỉ được thiết lập lại bằng cách thiết lập lại hệ thống và đánh thức từ chế độ Chờ.

Bit 1 CTI: Xóa ngắt giả mạo

Bit này chỉ được ghi và luôn được đọc là 0.


0: Không có hiệu lực

1: Xóa cờ ngắt Tamper và cờ ngắt TIF Tamper.

Bit 0 CTE: Xóa sự kiện giả mạo

Bit này chỉ được ghi và luôn được đọc là 0.


0: Không có hiệu lực

1: Đặt lại cờ sự kiện TEF Tamper (và bộ phát hiện Tamper)

6.4.5 Bản đồ đăng ký BKP

Các thanh ghi BKP được ánh xạ dưới dạng các thanh ghi có thể định địa chỉ 16 bit như được mô tả trong bảng bên dưới:

Bảng 17. Bản đồ đăng ký BKP và giá trị đặt lại


1

Đăng ký bù đắp
5
ố8
s

7
6

0
3
9

2
4

0x00 Kín đáo

BKP_DR1 D[15:0]
0x04 Kín đáo

Đặt lại giá trị 0000000000000000

RM0008 Phiên bản 21 85/1136

89
Machine Translated by Google

Thanh ghi dự phòng (BKP) RM0008

Bảng 17. Sơ đồ đăng ký BKP và giá trị đặt lại (tiếp theo)

Đăng ký bù đắp

1
5
ố8
s

7
6

0
3
9

2
4
BKP_DR2 D[15:0]
0x08 Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR3 D[15:0]
0x0C Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR4 D[15:0]
0x10 Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR5 D[15:0]
0x14 Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR6 D[15:0]
0x18 Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR7 D[15:0]
0x1C Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR8 D[15:0]
0x20 Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR9 D[15:0]
0x24 Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR10 D[15:0]
0x28 Kín đáo

Đặt lại giá trị 0000000000000000

BKP_RTCCR CAL[6:0]
0x2 Kín đáo
OCC
SOSA
EOSA

Đặt lại giá trị 0000000000

BKP_CR
0x30 Kín đáo
EPT
LAPT

Đặt lại giá trị 0 0

BKP_CSR
FET

0x34 Kín đáo Kín đáo


ETC
EIPT

Đặt lại giá trị 00 000

0x38 Kín đáo

0x3C Kín đáo

BKP_DR11 D[15:0]
0x40 Kín đáo

Đặt lại giá trị 0000000000000000

86/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Thanh ghi dự phòng (BKP)

Bảng 17. Sơ đồ đăng ký BKP và giá trị đặt lại (tiếp theo)

Đăng ký bù đắp

1
5
ố8
s

7
6

0
3
9

2
4
BKP_DR12 D[15:0]
0x44 Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR13 D[15:0]
0x48 Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR14 D[15:0]
0x4C Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR15 D[15:0]
0x50 Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR16 D[15:0]
0x54 Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR17 D[15:0]
0x58 Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR18 D[15:0]
0x5C Kín đáo

Đặt lại giá trị 0000000000000000

0x60 BKP_DR19 D[15:0]


Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR20 D[15:0]
0x64 Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR21 D[15:0]
0x68 Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR22 D[15:0]
0x6C Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR23 D[15:0]
0x70 Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR24 D[15:0]
0x74 Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR25 D[15:0]
0x78 Kín đáo

Đặt lại giá trị 0000000000000000

RM0008 Phiên bản 21 87/1136


89
Machine Translated by Google

Thanh ghi dự phòng (BKP) RM0008

Bảng 17. Sơ đồ đăng ký BKP và giá trị đặt lại (tiếp theo)

Đăng ký bù đắp

1
5
ố8
s

7
6

0
3
9

2
4
BKP_DR26 D[15:0]
0x7C Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR27 D[15:0]
0x80 Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR28 D[15:0]
0x84 Kín đáo

Đặt lại giá trị 0000000000000000

0x88 BKP_DR29 D[15:0]


Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR30 D[15:0]
0x8C Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR31 D[15:0]
0x90 Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR32 D[15:0]
0x94 Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR33 D[15:0]
0x98 Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR34 D[15:0]
0x9C Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR35 D[15:0]
0xA0 Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR36 D[15:0]
0xA4 Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR37 D[15:0]
0xA8 Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR38 D[15:0]
0xAC Kín đáo

Đặt lại giá trị 0000000000000000

0xB0 BKP_DR39 D[15:0]


Kín đáo

Đặt lại giá trị 0000000000000000

88/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Thanh ghi dự phòng (BKP)

Bảng 17. Sơ đồ đăng ký BKP và giá trị đặt lại (tiếp theo)

Đăng ký bù đắp

1
5
ố8
s

7
6

0
3
9

2
4
BKP_DR40 D[15:0]
0xB4 Kín đáo

Đặt lại giá trị 0000000000000000

0xB8 BKP_DR41 D[15:0]


Kín đáo

Đặt lại giá trị 0000000000000000

BKP_DR42 D[15:0]
0xBC Kín đáo

Đặt lại giá trị 0000000000000000

Tham khảo Bảng 3 trên trang 50 để biết địa chỉ biên của thanh ghi.

RM0008 Phiên bản 21 89/1136

89
Machine Translated by Google

Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC) RM0008

7 Thiết lập lại và đồng hồ mật độ thấp, trung bình, cao và XL


điều khiển (RCC)

Các thiết bị mật độ thấp là bộ vi điều khiển STM32F101xx, STM32F102xx và STM32F103xx trong đó

mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

Các thiết bị có mật độ trung bình là bộ vi điều khiển STM32F101xx, STM32F102xx và STM32F103xx trong

đó mật độ bộ nhớ Flash nằm trong khoảng từ 64 đến 128 Kbyte.

Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ nhớ Flash nằm

trong khoảng từ 256 đến 512 Kbyte.

Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ nhớ Flash nằm

trong khoảng từ 768 Kbyte đến 1 Mbyte.

Các thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

Phần này áp dụng cho các thiết bị STM32F10xxx mật độ thấp, trung bình, cao và XL.

Các thiết bị đường dây kết nối được đề cập trong Phần 8: Các thiết bị đường dây kết nối: thiết lập lại và

điều khiển đồng hồ (RCC).

7.1 Cài lại

Có ba loại thiết lập lại, được định nghĩa là thiết lập lại hệ thống, thiết lập lại nguồn và thiết lập lại miền
dự phòng.

7.1.1 Thiết lập lại hệ thống

Việc thiết lập lại hệ thống sẽ đặt tất cả các thanh ghi về giá trị đặt lại của chúng (trừ khi được chỉ

định khác trong mô tả thanh ghi) ngoại trừ các cờ đặt lại trong thanh ghi CSR của bộ điều khiển đồng hồ

và các thanh ghi trong miền Sao lưu (xem Hình 4 ) .

Thiết lập lại hệ thống được tạo khi một trong các sự kiện sau xảy ra:

1. Mức thấp trên chân NRST (đặt lại bên ngoài)

2. Điều kiện kết thúc đếm của cơ quan giám sát cửa sổ (đặt lại WWDG)

3. Điều kiện kết thúc đếm của cơ quan giám sát độc lập (đặt lại IWDG)

4. Đặt lại phần mềm (Đặt lại SW) (xem Đặt lại phần mềm)

5. Đặt lại quản lý nguồn điện thấp (xem Đặt lại quản lý nguồn điện thấp)

Nguồn đặt lại có thể được xác định bằng cách kiểm tra các cờ đặt lại trong thanh ghi Điều khiển/Trạng thái,

RCC_CSR (xem Phần 7.3.10: Thanh ghi Điều khiển/trạng thái (RCC_CSR)).

Thiết lập lại phần mềm

Bit SYSRESETREQ trong thanh ghi Kiểm soát thiết lập lại và ngắt ứng dụng Cortex®-M3 phải được đặt để buộc
thiết lập lại phần mềm trên thiết bị. Tham khảo STM32F10xxx Cortex®-M3

hướng dẫn lập trình (xem Tài liệu liên quan) để biết thêm chi tiết.

90/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC)

Thiết lập lại quản lý năng lượng thấp

Có hai cách để tạo thiết lập lại quản lý năng lượng thấp:

1. Thiết lập lại được tạo khi vào chế độ Chờ: Kiểu thiết

lập lại này được kích hoạt bằng cách đặt lại bit nRST_STDBY trong Byte tùy chọn người dùng. Trong
trường hợp này, bất cứ khi nào trình tự nhập chế độ Chờ được thực hiện thành công, thiết bị sẽ
được đặt lại thay vì vào chế độ Chờ.

2. Reset khi vào chế độ Stop:

Kiểu đặt lại này được kích hoạt bằng cách đặt lại bit nRST_STOP trong Byte tùy chọn người dùng.
Trong trường hợp này, bất cứ khi nào trình tự nhập chế độ Dừng được thực hiện thành công, thiết
bị sẽ được đặt lại thay vì vào chế độ Dừng.

Để biết thêm thông tin về Byte tùy chọn người dùng, hãy tham khảo sách hướng dẫn lập trình
Flash STM32F10xxx.

7.1.2 Đặt lại nguồn

Thiết lập lại nguồn được tạo khi xảy ra một trong các sự kiện sau: 1. Đặt lại

bật/tắt nguồn (đặt lại POR/PDR)

2. Khi thoát khỏi chế độ Chờ

Việc đặt lại nguồn sẽ đặt tất cả các thanh ghi về giá trị đặt lại của chúng ngoại trừ miền Dự phòng
(xem Hình 4)

Các nguồn này tác động lên chân NRST và nó luôn được giữ ở mức thấp trong suốt pha trễ. Vectơ thường
trình dịch vụ RESET được cố định tại địa chỉ 0x0000_0004 trong bản đồ bộ nhớ.

Tín hiệu thiết lập lại hệ thống được cung cấp cho thiết bị được xuất ra trên chân NRST. Bộ tạo
xung đảm bảo thời lượng xung đặt lại tối thiểu là 20 µs cho mỗi nguồn đặt lại (đặt lại bên ngoài
hoặc bên trong). Trong trường hợp thiết lập lại bên ngoài, xung đặt lại được tạo ra trong khi chân
NRST được xác nhận ở mức thấp.

Hình 7. Sơ đồ đơn giản của mạch reset

VDD/VDDA

RPU
Bên ngoài
Lọc Thiết lập lại hệ thống
cài lại

NRST

Đặt lại WWDG


Xung
Đặt lại IWDG
máy phát điện
Đặt lại nguồn
(tối thiểu 20 μs)
Thiết lập lại phần mềm

Thiết lập lại quản lý năng lượng thấp

ai16095c

RM0008 Phiên bản 21 91/1136

122
Machine Translated by Google

Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC) RM0008

7.1.3 Đặt lại tên miền dự phòng

Miền dự phòng có hai lần đặt lại cụ thể chỉ ảnh hưởng đến miền dự phòng (xem Hình 4).

Việc đặt lại miền dự phòng được tạo khi xảy ra một trong các sự kiện sau:

1. Đặt lại phần mềm, được kích hoạt bằng cách đặt bit BDRST trong thanh ghi điều khiển miền dự phòng

(RCC_BDCR).

2. Bật nguồn VDD hoặc VBAT , nếu cả hai nguồn cung cấp trước đó đã bị tắt nguồn.

7.2 Đồng hồ

Ba nguồn đồng hồ khác nhau có thể được sử dụng để điều khiển đồng hồ hệ thống (SYSCLK):

• Đồng hồ dao động HSI

• Đồng hồ dao động HSE

• Đồng hồ PLL

Các thiết bị có hai nguồn xung nhịp phụ sau: RC bên trong tốc độ thấp 40 kHz

(LSI RC), điều khiển cơ quan giám sát độc lập và tùy chọn RTC được sử dụng để Tự động đánh thức từ chế độ Dừng/

Chờ.

• Tinh thể bên ngoài tốc độ thấp 32,768 kHz (tinh thể LSE), tùy chọn điều khiển

đồng hồ thời gian thực (RTCCLK)

Mỗi nguồn đồng hồ có thể được bật hoặc tắt độc lập khi không sử dụng để tối ưu hóa mức tiêu thụ điện năng.

92/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC)

Hình 8. Cây đồng hồ


FLITFCLK
sang giao diện lập trình Flash

USB USBCLK
48 MHz
Bộ đếm trước sang giao diện USB

/1, 1,5

I2S3CLK
tới I2S3

Đồng hồ ngoại vi
I2S2CLK
cho phép
tới I2S2

Đồng hồ ngoại vi
SDIOCLK
cho phép tới SDIO
8 MHz
Đồng hồ ngoại vi
HSI RC HSI
cho phép
FSMCCLK
tới FSMC
Đồng hồ ngoại vi
/2
cho phép
HCLK
Tối đa 72 MHz
tới bus, lõi, bộ
Cái đồng hồ nhớ và DMA AHB
Cho phép
/số 8 tới bộ đếm thời gian của hệ thống Cortex
PLLSRC SW
RẤT NHIỀU FCLK Cortex
HSI đồng hồ chạy miễn phí
..., x16 SYSCLK AHB APB1
tối đa 36 MHz PCLK1
Bộ đếm trước Bộ đếm trước
x2, x3, x4 PLLCLK 72 MHz tới APB1
PLL tối đa /1, 2..512 /1, 2, 4, 8, 16
thiết bị ngoại vi
Đồng hồ ngoại vi
HSE
Cho phép

TIM2,3,4,5,6,7,12,13,14
Nếu (bộ chia tỷ lệ trước APB1 =1) x1 đến TIM2,3,4,5,6,7,12,13,14
khác x2 TIMXCLK
CSS
Đồng hồ ngoại vi
Cho phép

PLLXTPRE APB2
Tối đa 72 MHz PCLK2
Bộ đếm trước
OSC_OUT /1, 2, 4, 8, 16 thiết bị ngoại vi tới APB2
4-16 MHz
Đồng hồ ngoại vi
OSC HSE Cho phép
OSC_IN /2
Bộ định thời TIM1,8,9,10,11
đến TIM1,8,9,10 và 11
Nếu (bộ chia tỷ lệ trước APB2 =1) x1
khác x2 TIMxCLK
Đồng hồ ngoại vi
/128 Cho phép
ADC đến ADC1, 2 hoặc 3
OSC32_IN đến RTC
Bộ đếm trước
LSE OSC LSE
ADCCLK tối đa 14 MHz
32,768 kHz RTCCLK /2, 4, 6, 8

OSC32_OUT
HCLK/2
RTCSEL[1:0] /2
Đến giao diện SDIO AHB

Đồng hồ ngoại vi
tới Cơ quan giám sát độc lập (IWDG)
LSI RC LSI cho phép
40 kHz IWDGCLK

Huyền thoại:
Chủ yếu
/2 PLLCLK
Đầu ra đồng hồ HSE = Tín hiệu đồng hồ bên ngoài tốc độ cao
MCO HSI
HSI = Tín hiệu xung nhịp bên trong tốc độ cao

HSE LSI = Tín hiệu đồng hồ bên trong tốc độ thấp

SYSCLK LSE = Tín hiệu đồng hồ bên ngoài tốc độ thấp

MCO
ai14752e

1. Khi HSI được sử dụng làm đầu vào đồng hồ PLL, tần số đồng hồ hệ thống tối đa có thể đạt được là
64 MHz.

2. Để biết chi tiết đầy đủ về các đặc tính nguồn đồng hồ bên trong và bên ngoài, hãy tham khảo phần “Điện

phần đặc điểm” trong biểu dữ liệu thiết bị của bạn.

Một số bộ đếm gộp trước cho phép cấu hình tần số AHB, miền APB tốc độ cao (APB2) và
miền APB tốc độ thấp (APB1). Tần số tối đa của miền AHB và APB2 là 72 MHz. Tần số tối đa
được phép của miền APB1 là 36 MHz. Giao diện SDIO AHB có xung nhịp cố định bằng HCLK/2

RCC cung cấp cho đồng hồ bên ngoài Cortex® System Hẹn giờ (SysTick) bằng đồng hồ AHB
(HCLK) chia cho 8. SysTick có thể hoạt động với đồng hồ này hoặc với đồng hồ Cortex® (HCLK),
có thể định cấu hình trong thanh ghi Trạng thái và Kiểm soát SysTick . Các ADC được tính
theo đồng hồ của miền Tốc độ cao (APB2) chia cho 2, 4, 6 hoặc 8.

Đồng hồ giao diện lập trình bộ nhớ Flash (FLITFCLK) luôn là đồng hồ HSI.

RM0008 Phiên bản 21 93/1136

122
Machine Translated by Google

Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC) RM0008

Tần số đồng hồ hẹn giờ được tự động cố định bằng phần cứng. Có hai trường hợp:
1. nếu bộ đếm gộp APB là 1, tần số đồng hồ hẹn giờ được đặt ở cùng tần số với tần số của miền
APB mà bộ hẹn giờ được kết nối.

2. nếu không, chúng được đặt thành tần số gấp đôi (×2) của miền APB mà bộ hẹn giờ được kết
nối.

FCLK hoạt động như đồng hồ chạy tự do Cortex®-M3 . Để biết thêm chi tiết, hãy tham khảo Arm®
Hướng dẫn tham khảo kỹ thuật Cortex-M3 r1p1 (TRM).

7.2.1 Đồng hồ HSE

Tín hiệu đồng hồ bên ngoài tốc độ cao (HSE) có thể được tạo từ hai đồng hồ có thể
nguồn:

• Bộ cộng hưởng tinh thể/gốm bên ngoài HSE •


Đồng hồ bên ngoài người dùng HSE

Bộ cộng hưởng và tụ tải phải được đặt càng gần các chân dao động càng tốt để giảm thiểu
độ méo đầu ra và thời gian ổn định khởi động. Các giá trị điện dung tải phải được điều
chỉnh theo bộ dao động đã chọn.

Hình 9. Nguồn xung nhịp HSE/LSE

Nguồn đồng hồ Cấu hình phần cứng

OSC_OUT
Đồng hồ bên ngoài

(Xin chào)

Bên ngoài
nguồn

OSC_IN OSC_OUT

Bộ cộng hưởng tinh


thể / gốm

CL1 CL2
Trọng tải

tụ điện

94/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC)

Nguồn bên ngoài (bỏ qua HSE)

Ở chế độ này, phải cung cấp nguồn đồng hồ bên ngoài. Nó có thể có tần số lên tới 25 MHz. Bạn chọn chế độ
này bằng cách thiết lập các bit HSEBYP và HSEON trong thanh ghi điều khiển Đồng hồ (RCC_CR). Tín hiệu đồng
hồ bên ngoài (hình vuông, hình sin hoặc hình tam giác) với chu kỳ hoạt động ~ 50% phải điều khiển chân
OSC_IN trong khi chân OSC_OUT phải được để ở mức hi-Z. Xem Hình 9.

Bộ cộng hưởng tinh thể/gốm bên ngoài (tinh thể HSE)

Bộ tạo dao động ngoài 4 đến 16 MHz có ưu điểm là tạo ra tốc độ rất chính xác trên đồng hồ chính.

Cấu hình phần cứng liên quan được hiển thị trong Hình 9. Tham khảo phần đặc tính điện của biểu
dữ liệu để biết thêm chi tiết.

Cờ HSERDY trong thanh ghi điều khiển xung nhịp (RCC_CR) cho biết bộ dao động ngoài tốc độ cao có ổn
định hay không. Khi khởi động, đồng hồ không được giải phóng cho đến khi bit này được thiết lập bằng phần
cứng. Một ngắt có thể được tạo ra nếu được bật trong thanh ghi ngắt Đồng hồ (RCC_CIR).

HSE Crystal có thể được bật và tắt bằng cách sử dụng bit HSEON trong thanh ghi điều khiển Đồng hồ
(RCC_CR).

7.2.2 đồng hồ HSI

Tín hiệu đồng hồ HSI được tạo từ Bộ tạo dao động RC 8 MHz bên trong và có thể được sử dụng trực tiếp
làm đồng hồ hệ thống hoặc chia cho 2 để sử dụng làm đầu vào PLL.

Bộ tạo dao động HSI RC có ưu điểm là cung cấp nguồn xung nhịp với chi phí thấp (không cần linh kiện bên
ngoài). Tuy nhiên, nó cũng có thời gian khởi động nhanh hơn bộ tạo dao động tinh thể HSE, ngay cả khi hiệu
chỉnh tần số vẫn kém chính xác hơn bộ tạo dao động tinh thể bên ngoài hoặc bộ cộng hưởng gốm.

Sự định cỡ

Tần số của bộ dao động RC có thể thay đổi do sự thay đổi của quy trình sản xuất, đây là lý do tại sao mỗi
thiết bị đều được hiệu chuẩn tại nhà máy bằng ST để có độ chính xác 1% ở TA=25°C.

Sau khi đặt lại, giá trị hiệu chuẩn gốc được tải trong các bit HSICAL[7:0] trong thanh ghi điều khiển Đồng
hồ (RCC_CR).

Nếu ứng dụng chịu sự thay đổi về điện áp hoặc nhiệt độ, điều này có thể ảnh hưởng đến tốc độ bộ dao
động RC. Tần số HSI trong ứng dụng có thể được cắt bằng cách sử dụng các bit HSITRIM[4:0]
trong thanh ghi điều khiển Đồng hồ (RCC_CR).

Cờ HSIRDY trong thanh ghi điều khiển xung nhịp (RCC_CR) cho biết HSI RC có ổn định hay không. Khi khởi
động, đồng hồ đầu ra HSI RC không được giải phóng cho đến khi bit này được thiết lập bằng phần cứng.

HSI RC có thể được bật và tắt bằng cách sử dụng bit HSION trong thanh ghi điều khiển Đồng hồ (RCC_CR).

Tín hiệu HSI cũng có thể được sử dụng làm nguồn dự phòng (Đồng hồ phụ) nếu bộ tạo dao động tinh thể
HSE bị lỗi. Tham khảo Phần 7.2.7: Hệ thống bảo mật đồng hồ (CSS).

RM0008 Phiên bản 21 95/1136

122
Machine Translated by Google

Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC) RM0008

7.2.3 PLL

PLL bên trong có thể được sử dụng để nhân tần số xung nhịp đầu ra HSI RC hoặc đầu ra tinh thể HSE.
Tham khảo Hình 8 và Thanh ghi điều khiển đồng hồ (RCC_CR).

Cấu hình PLL (lựa chọn bộ dao động HSI chia cho 2 hoặc bộ dao động HSE cho đồng hồ đầu vào PLL và
hệ số nhân) phải được thực hiện trước khi bật PLL. Khi PLL được kích hoạt, các thông số này không thể
thay đổi được.

Một ngắt có thể được tạo ra khi PLL sẵn sàng nếu được bật trong thanh ghi ngắt Đồng hồ (RCC_CIR).

Nếu giao diện USB được sử dụng trong ứng dụng, PLL phải được lập trình để xuất ra tần số 48 hoặc 72
MHz. Điều này là cần thiết để cung cấp USBCLK 48 MHz.

7.2.4 Đồng hồ LSE

Tinh thể LSE là bộ cộng hưởng gốm hoặc tinh thể bên ngoài tốc độ thấp 32,768 kHz. Nó có ưu điểm là cung
cấp nguồn đồng hồ tiêu thụ điện năng thấp nhưng có độ chính xác cao cho thiết bị ngoại vi đồng hồ
thời gian thực (RTC) cho đồng hồ/lịch hoặc các chức năng định giờ khác.

Tinh thể LSE được bật và tắt bằng cách sử dụng bit LSEON trong thanh ghi điều khiển miền dự phòng
(RCC_BDCR).

Cờ LSERDY trong thanh ghi điều khiển miền dự phòng (RCC_BDCR) cho biết tinh thể LSE có ổn định hay
không. Khi khởi động, tín hiệu đồng hồ đầu ra tinh thể LSE không được giải phóng cho đến khi bit này
được thiết lập bằng phần cứng. Một ngắt có thể được tạo ra nếu được bật trong thanh ghi ngắt Đồng
hồ (RCC_CIR).

Nguồn bên ngoài (bỏ qua LSE)

Ở chế độ này, phải cung cấp nguồn đồng hồ bên ngoài. Nó có thể có tần số lên tới 1 MHz. Bạn chọn chế
độ này bằng cách thiết lập các bit LSEBYP và LSEON trong thanh ghi điều khiển miền dự phòng (RCC_BDCR).
Tín hiệu đồng hồ bên ngoài (hình vuông, hình sin hoặc hình tam giác) với chu kỳ nhiệm vụ ~ 50% phải
điều khiển chân OSC32_IN trong khi chân OSC32_OUT phải được để lại Hi-Z. Xem Hình 9.

7.2.5 đồng hồ LSI

LSI RC hoạt động như một nguồn xung nhịp năng lượng thấp có thể tiếp tục chạy ở chế độ Dừng và
Chờ cho cơ quan giám sát độc lập (IWDG) và bộ phận Tự động đánh thức (AWU). Tần số xung nhịp là
khoảng 40 kHz (trong khoảng từ 30 kHz đến 60 kHz). Để biết thêm chi tiết, hãy tham khảo phần đặc tính
điện của bảng dữ liệu.

LSI RC có thể được bật và tắt bằng cách sử dụng bit LSION trong thanh ghi Điều khiển/trạng thái
(RCC_CSR).

Cờ LSIRDY trong thanh ghi Điều khiển/trạng thái (RCC_CSR) cho biết bộ dao động nội tốc độ thấp có
ổn định hay không. Khi khởi động, đồng hồ không được giải phóng cho đến khi bit này được thiết lập
bằng phần cứng. Một ngắt có thể được tạo ra nếu được bật trong thanh ghi ngắt Đồng hồ
(RCC_CIR).

Ghi chú: Hiệu chuẩn LSI chỉ khả dụng trên các thiết bị đường dây kết nối, mật độ XL và mật độ cao.

96/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC)

Hiệu chuẩn LSI

Sự phân tán tần số của bộ dao động RC nội bộ tốc độ thấp (LSI) có thể được hiệu chỉnh để có cơ sở thời
gian RTC chính xác và/hoặc thời gian chờ IWDG (khi LSI được sử dụng làm nguồn đồng hồ cho các thiết bị
ngoại vi này) với độ chính xác chấp nhận được.

Việc hiệu chuẩn này được thực hiện bằng cách đo tần số xung nhịp LSI tương ứng với xung nhịp đầu
vào TIM5 (TIM5CLK). Theo phép đo này được thực hiện với độ chính xác của bộ dao động HSE, phần mềm
có thể điều chỉnh bộ đếm gộp 20 bit có thể lập trình của RTC để có được cơ sở thời gian chính xác hoặc
có thể tính toán thời gian chờ IWDG chính xác.

Sử dụng quy trình sau để hiệu chỉnh LSI:

1. Bật bộ hẹn giờ TIM5 và định cấu hình kênh4 ở chế độ chụp đầu vào

2. Đặt bit TIM5CH4_IREMAP trong thanh ghi AFIO_MAPR để kết nối đồng hồ LSI bên trong với ghi đầu vào
TIM5 kênh4 nhằm mục đích hiệu chỉnh.

3. Đo tần số của đồng hồ LSI bằng sự kiện TIM5 Capture/so sánh 4 hoặc
ngắt.

4. Sử dụng tần số LSI đo được để cập nhật bộ chia tỷ lệ trước 20 bit của RTC tùy thuộc vào cơ sở thời
gian mong muốn và/hoặc để tính toán thời gian chờ IWDG.

7.2.6 Lựa chọn đồng hồ hệ thống (SYSCLK)


Sau khi thiết lập lại hệ thống, bộ dao động HSI được chọn làm đồng hồ hệ thống. Khi nguồn đồng hồ được
sử dụng trực tiếp hoặc thông qua PLL làm đồng hồ hệ thống thì không thể dừng nó.

Việc chuyển đổi từ nguồn đồng hồ này sang nguồn đồng hồ khác chỉ xảy ra nếu nguồn đồng hồ đích đã sẵn
sàng (đồng hồ ổn định sau khi khởi động trễ hoặc khóa PLL). Nếu nguồn đồng hồ chưa sẵn sàng được
chọn, việc chuyển đổi sẽ xảy ra khi nguồn đồng hồ sẵn sàng. Các bit trạng thái trong thanh ghi điều
khiển Đồng hồ (RCC_CR) cho biết (các) đồng hồ nào đã sẵn sàng và đồng hồ nào hiện đang được sử dụng làm
đồng hồ hệ thống.

7.2.7 Hệ thống bảo mật đồng hồ (CSS)


Hệ thống an ninh đồng hồ có thể được kích hoạt bằng phần mềm. Trong trường hợp này, bộ phát hiện
đồng hồ được bật sau độ trễ khởi động bộ tạo dao động HSE và bị vô hiệu hóa khi bộ tạo dao động này bị dừng.

Nếu phát hiện lỗi trên đồng hồ HSE, bộ tạo dao động HSE sẽ tự động bị tắt, sự kiện lỗi đồng hồ sẽ được
gửi đến đầu vào ngắt của bộ định thời điều khiển nâng cao (TIM1 và TIM8) và một ngắt được tạo ra để
thông báo cho phần mềm về lỗi. (Clock Security System Interrupt CSSI), cho phép MCU thực hiện các
hoạt động cứu hộ. CSSI được liên kết với vectơ ngoại lệ Cortex®-M3 NMI (Non-Maskable Interrupt).

Ghi chú: Khi CSS được bật và nếu đồng hồ HSE bị lỗi, ngắt CSS sẽ xảy ra và NMI sẽ tự động được tạo. NMI sẽ được
thực thi vô thời hạn trừ khi bit chờ ngắt CSS bị xóa. Do đó, trong NMI ISR, người dùng phải xóa ngắt
CSS bằng cách đặt bit CSSC trong thanh ghi ngắt Đồng hồ (RCC_CIR).

Nếu bộ tạo dao động HSE được sử dụng trực tiếp hoặc gián tiếp làm đồng hồ hệ thống (có nghĩa gián tiếp:
nó được sử dụng làm đồng hồ đầu vào PLL và đồng hồ PLL được sử dụng làm đồng hồ hệ thống), thì một
lỗi được phát hiện sẽ gây ra sự chuyển đổi đồng hồ hệ thống sang bộ tạo dao động HSI. và vô hiệu
hóa bộ dao động HSE. Nếu đồng hồ HSE (được chia hoặc không) là mục đồng hồ của PLL được sử dụng làm
đồng hồ hệ thống khi xảy ra lỗi thì PLL cũng bị vô hiệu hóa.

RM0008 Phiên bản 21 97/1136

122
Machine Translated by Google

Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC) RM0008

Đồng hồ RTC 7.2.8

Nguồn đồng hồ RTCCLK có thể là đồng hồ HSE/128, LSE hoặc LSI. Điều này được chọn bằng cách
lập trình các bit RTCSEL[1:0] trong thanh ghi điều khiển miền dự phòng (RCC_BDCR).
Không thể sửa đổi lựa chọn này nếu không đặt lại miền Sao lưu.

Đồng hồ LSE nằm trong miền Sao lưu, trong khi đồng hồ HSE và LSI thì không.
Do đó:
• Nếu LSE được chọn làm đồng hồ RTC:

– RTC tiếp tục hoạt động ngay cả khi nguồn VDD bị tắt, miễn là
Nguồn cung VBAT được duy trì.
• Nếu LSI được chọn làm đồng hồ Đơn vị tự động đánh thức (AWU):

– Trạng thái AWU không được đảm bảo nếu nguồn VDD bị tắt. Tham khảo Phần
7.2.5: Đồng hồ LSI để biết thêm chi tiết về hiệu chuẩn LSI.
• Nếu đồng hồ HSE chia cho 128 được sử dụng làm đồng hồ RTC:

– Trạng thái RTC không được đảm bảo nếu nguồn VDD bị tắt hoặc nếu bộ điều chỉnh điện áp
bên trong bị tắt (rút nguồn khỏi miền 1,8 V).

– Bit DPB (vô hiệu hóa bảo vệ ghi miền dự phòng) trong thanh ghi Bộ điều khiển nguồn
phải được đặt thành 1 (tham khảo Mục 5.4.1: Thanh ghi điều khiển nguồn
(PWR_CR)).

7.2.9 Đồng hồ canh gác

Nếu cơ quan giám sát độc lập (IWDG) được khởi động bằng tùy chọn phần cứng hoặc truy
cập phần mềm, bộ tạo dao động LSI sẽ bị BẬT và không thể tắt được. Sau khi tạm thời bộ
dao động LSI, đồng hồ được cung cấp cho IWDG.

7.2.10 Khả năng bấm giờ

Khả năng đầu ra xung nhịp của vi điều khiển (MCO) cho phép xung nhịp được xuất ra chân
MCO bên ngoài. Các thanh ghi cấu hình của cổng GPIO tương ứng phải được lập trình ở
chế độ chức năng thay thế. Một trong 4 tín hiệu đồng hồ có thể được chọn làm đồng hồ MCO.

• HỆ THỐNG

• HSI

• HSE

• Đồng hồ PLL chia cho 2

Việc lựa chọn được điều khiển bởi các bit MCO[2:0] của thanh ghi cấu hình Đồng hồ
(RCC_CFGR).

98/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC)

7.3 Thanh ghi RCC


Tham khảo Phần 2.2 trên trang 45 để biết danh sách các chữ viết tắt được sử dụng trong mô tả đăng ký.

7.3.1 Thanh ghi điều khiển đồng hồ (RCC_CR)

Độ lệch địa chỉ: 0x00

Giá trị đặt lại: 0x0000 XX83 trong đó X không xác định.

Truy cập: không có trạng thái chờ, truy cập từ, nửa từ và byte

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

PLL CSS HSE HSE HSE


PLON
RDY TRÊN BYP RDY TRÊN
Kín đáo Kín đáo

r rw rw rw r rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

HSI
HSICAL[7:0] HSITRIM[4:0] HSION
RDY
Res.

r r r r r r r r rw rw rw rw rw r rw

Bit 31:26 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 25 PLLRDY: Cờ sẵn sàng đồng hồ PLL

Được thiết lập bằng phần cứng để chỉ ra rằng PLL đã bị khóa.
0: PLL đã được mở khóa

1: PLL bị khóa

Bit 24 PLLON: Kích hoạt PLL

Thiết lập và xóa bằng phần mềm để kích hoạt PLL.

Bị xóa bằng phần cứng khi vào chế độ Dừng hoặc Chờ. Bit này không thể được đặt lại nếu đồng hồ PLL được sử

dụng làm đồng hồ hệ thống hoặc được chọn để trở thành đồng hồ hệ thống.
0: TẮT PLL

1: ĐĂNG KÝ

Bit 23:20 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 19 CSSON: Kích hoạt hệ thống bảo mật đồng hồ

Thiết lập và xóa bằng phần mềm để kích hoạt hệ thống bảo mật đồng hồ. Khi CSSON được đặt, bộ phát hiện đồng

hồ được bật bằng phần cứng khi bộ dao động HSE sẵn sàng và bị tắt bởi phần cứng nếu phát hiện lỗi đồng hồ
HSE.

0: Bộ dò đồng hồ TẮT

1: BẬT bộ phát hiện đồng hồ (BẬT bộ phát hiện đồng hồ nếu bộ dao động HSE sẵn sàng, TẮT nếu không).

Bit 18 HSEBYP: Bỏ qua đồng hồ tốc độ cao bên ngoài

Thiết lập và xóa bằng phần mềm để bỏ qua bộ dao động bằng đồng hồ bên ngoài. Đồng hồ bên ngoài phải được

bật với bộ bit HSEON để thiết bị sử dụng. Bit HSEBYP chỉ có thể được ghi nếu bộ dao động HSE bị tắt. 0: bộ

dao động 4-16 MHz bên ngoài không được bỏ qua

1: bộ dao động 4-16 MHz bên ngoài được bỏ qua với đồng hồ bên ngoài

Bit 17 HSERDY: Cờ sẵn sàng cho đồng hồ tốc độ cao bên ngoài

Được thiết lập bằng phần cứng để chỉ ra rằng bộ dao động HSE ổn định. Bit này cần 6 chu kỳ của xung nhịp dao
động HSE để giảm xuống sau khi thiết lập lại HSEON.

0: Bộ dao động HSE chưa sẵn sàng

1: Bộ dao động HSE sẵn sàng

RM0008 Phiên bản 21 99/1136

122
Machine Translated by Google

Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC) RM0008

Bit 16 HSEON: Bật đồng hồ HSE

Thiết lập và xóa bằng phần mềm.

Được xóa bằng phần cứng để dừng bộ dao động HSE khi vào chế độ Dừng hoặc Chờ. Bit này không thể được reset nếu bộ

dao động HSE được sử dụng trực tiếp hoặc gián tiếp làm đồng hồ hệ thống.
0: Bộ dao động HSE TẮT

1: Bộ dao động HSE BẬT

Bits 15:8 HSICAL[7:0]: Hiệu chỉnh đồng hồ tốc độ cao bên trong

Các bit này được khởi tạo tự động khi khởi động.

Bit 7:3 HSITRIM[4:0]: Cắt xung nhịp tốc độ cao bên trong

Các bit này cung cấp một giá trị cắt xén bổ sung do người dùng lập trình được thêm vào các bit HSICAL[7:0].

Nó có thể được lập trình để điều chỉnh theo sự thay đổi về điện áp và nhiệt độ ảnh hưởng đến tần số của HSI RC

bên trong.

Giá trị mặc định là 16, khi được thêm vào giá trị HSICAL, sẽ cắt HSI xuống còn 8 MHz ± 1%. Bước cắt xén

(Fhsitrim) là khoảng 40 kHz giữa hai bước HSICAL liên tiếp.

Bit 2 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 1 HSIRDY: Cờ sẵn sàng cho đồng hồ tốc độ cao bên trong

Được thiết lập bằng phần cứng để chỉ ra rằng bộ dao động RC 8 MHz bên trong ổn định. Sau khi bit HSION bị xóa,

HSIRDY xuống mức thấp sau 6 chu kỳ xung nhịp của bộ dao động RC 8 MHz bên trong.

0: Bộ tạo dao động RC 8 MHz bên trong chưa sẵn sàng

1: bộ tạo dao động RC 8 MHz bên trong đã sẵn sàng

Bit 0 HSION: Cho phép xung nhịp tốc độ cao bên trong

Thiết lập và xóa bằng phần mềm.

Được thiết lập bằng phần cứng để BẬT bộ tạo dao động RC 8 MHz bên trong khi rời khỏi chế độ Dừng hoặc Chờ hoặc

trong trường hợp bộ tạo dao động 4-16 MHz bên ngoài được sử dụng trực tiếp hoặc gián tiếp làm đồng hồ hệ thống

bị lỗi. Bit này không thể được đặt lại nếu RC 8 MHz bên trong được sử dụng trực tiếp hoặc gián tiếp làm đồng hồ

hệ thống hoặc được chọn để trở thành đồng hồ hệ thống.


0: Bộ dao động RC 8 MHz bên trong TẮT

1: BẬT bộ tạo dao động RC 8 MHz bên trong

100/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC)

7.3.2 Thanh ghi cấu hình đồng hồ (RCC_CFGR)


Độ lệch địa chỉ: 0x04

Giá trị đặt lại: 0x0000 0000

Truy cập: 0 trạng thái chờ 2, truy cập từ, nửa từ và byte

1 hoặc 2 trạng thái chờ chỉ được chèn nếu truy cập xảy ra trong quá trình chuyển đổi nguồn đồng hồ.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

USB PLL PLL


MCO[2:0] RẤT NHIỀU[3:0]
Kín đáo Res. TRƯỚC XTRE SRC

rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

ADCPRE[1:0] PRE2[2:0] PRE1[2:0] HPRE[3:0] SWS[1:0] SW[1:0]

rw rw rw rw rw rw rw rw rw rw rw rw r r rw rw

Bit 31:27 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 26:24 MCO: Đầu ra xung nhịp của vi điều khiển

Thiết lập và xóa bằng phần mềm.


0xx: Không có đồng hồ

100: Đã chọn đồng hồ hệ thống (SYSCLK)


101: Đồng hồ HSI được chọn

110: Đã chọn đồng hồ HSE

111: Đồng hồ PLL chia cho 2 được chọn

Lưu ý: Đầu ra đồng hồ này có thể có một số chu kỳ bị cắt ngắn khi khởi động hoặc trong khi đồng hồ MCO

chuyển nguồn.

Khi Đồng hồ hệ thống được chọn để xuất ra chân MCO, hãy đảm bảo rằng đồng hồ này không vượt quá 50 MHz

(tốc độ IO tối đa).

Bit 22 USBPRE: Bộ chia tỷ lệ trước USB

Thiết lập và xóa bằng phần mềm để tạo xung nhịp USB 48 MHz. Bit này phải hợp lệ trước khi bật đồng hồ USB

trong thanh ghi RCC_APB1ENR. Bit này không thể được đặt lại nếu đồng hồ USB được bật.

0: Đồng hồ PLL được chia cho 1,5


1: Đồng hồ PLL không được chia

RM0008 Phiên bản 21 101/1136

122
Machine Translated by Google

Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC) RM0008

Bits 21:18 PLLMUL: Hệ số nhân PLL

Các bit này được viết bằng phần mềm để xác định hệ số nhân PLL. Các bit này chỉ có thể được ghi khi PLL bị

vô hiệu hóa.

Thận trọng: Tần số đầu ra PLL không được vượt quá 72 MHz.

0000: Đồng hồ đầu vào PLL x 2

0001: Đồng hồ đầu vào PLL x 3

0010: Đồng hồ đầu vào PLL x 4

0011: Đồng hồ đầu vào PLL x 5

0100: Đồng hồ đầu vào PLL x 6

0101: Đồng hồ đầu vào PLL x 7

0110: Đồng hồ đầu vào PLL x 8

0111 : Đồng hồ đầu vào PLL x

9 1000: Đồng hồ đầu vào PLL x

10 1001: Đồng hồ đầu vào PLL x

11 1010: Đồng hồ đầu vào PLL x

12 1011: Đồng hồ đầu vào PLL x

13 1100: Đồng hồ đầu vào PLL x

14 1101: Đồng hồ đầu vào PLL x

15 1110: Đồng hồ đầu vào PLL x

16 1111: Đồng hồ đầu vào PLL x 16

Bit 17 PLLXTPRE: Bộ chia HSE cho mục nhập PLL

Thiết lập và xóa bằng phần mềm để phân chia HSE trước khi nhập PLL. Bit này chỉ có thể được ghi khi PLL
bị vô hiệu hóa.

0: Đồng hồ HSE không chia 1:

Đồng hồ HSE chia cho 2

Bit 16 PLLSRC: Nguồn đồng hồ đầu vào PLL Được

thiết lập và xóa bằng phần mềm để chọn nguồn đồng hồ PLL. Bit này chỉ có thể được ghi khi PLL bị vô hiệu
hóa.

0: Đồng hồ dao động HSI / 2 được chọn làm đồng hồ đầu vào PLL

1: Đồng hồ dao động HSE được chọn làm đồng hồ đầu vào PLL

Bit 15:14 ADCPRE: Bộ đếm trước ADC

Thiết lập và xóa bằng phần mềm để chọn tần số xung nhịp cho ADC.

00: PCLK2 chia cho 2 01:

PCLK2 chia cho 4 10: PCLK2

chia cho 6 11: PCLK2 chia

cho 8

Bit 13:11 PPRE2: Bộ chia tỷ lệ trước tốc độ cao APB (APB2)

Thiết lập và xóa bằng phần mềm để điều khiển hệ số chia của đồng hồ tốc độ cao APB (PCLK2). 0xx: HCLK
không chia
100: HCLK chia cho 2 101:

HCLK chia cho 4 110: HCLK

chia cho 8 111: HCLK chia

cho 16

102/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC)

Bit 10:8 PPRE1: Bộ chia tỷ lệ trước tốc độ thấp APB (APB1)

Thiết lập và xóa bằng phần mềm để điều khiển hệ số chia của xung nhịp tốc độ thấp APB (PCLK1).

Cảnh báo: phần mềm phải thiết lập chính xác các bit này để không vượt quá 36 MHz trên miền này. 0xx: HCLK
không chia 100: HCLK chia

cho 2 101: HCLK chia cho 4

110: HCLK chia cho 8 111:

HCLK chia cho 16

Bit 7:4 HPRE: Bộ đếm gộp AHB

Thiết lập và xóa bằng phần mềm để điều khiển hệ số chia của đồng hồ AHB. 0xxx: SYSCLK
không chia 1000: SYSCLK chia

cho 2 1001: SYSCLK chia cho 4

1010: SYSCLK chia cho 8 1011:

SYSCLK chia cho 16 1100: SYSCLK

chia cho 64 1101: SYSCLK chia cho

128 1110: SYSCLK chia cho 256 1111:

SYSCLK chia cho 512

Lưu ý: Bộ đệm tìm nạp trước phải được bật khi sử dụng bộ chia tỷ lệ trước khác 1 trên

Đồng hồ AHB. Tham khảo phần Đọc bộ nhớ Flash để biết thêm chi tiết.

Bit 3:2 SWS: Trạng thái chuyển đổi đồng hồ hệ thống

Được thiết lập và xóa bằng phần cứng để cho biết nguồn đồng hồ nào được sử dụng làm đồng hồ hệ thống.

00: Bộ tạo dao động HSI được sử dụng làm đồng hồ hệ

thống 01: Bộ tạo dao động HSE được sử dụng làm đồng hồ

hệ thống 10: PLL được sử dụng làm đồng

hồ hệ thống 11: không áp dụng

Bits 1:0 SW: Công tắc đồng hồ hệ thống

được thiết lập và xóa bằng phần mềm để chọn nguồn SYSCLK.

Được thiết lập bởi phần cứng để buộc lựa chọn HSI khi rời khỏi chế độ Dừng và Chờ hoặc trong trường hợp bộ

dao động HSE được sử dụng trực tiếp hoặc gián tiếp làm đồng hồ hệ thống (nếu Hệ thống bảo mật đồng hồ được

bật).

00: HSI được chọn làm đồng hồ hệ thống

01: HSE được chọn làm đồng hồ hệ thống

10: PLL được chọn làm đồng hồ hệ thống


11: không được phép

RM0008 Phiên bản 21 103/1136

122
Machine Translated by Google

Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC) RM0008

7.3.3 Thanh ghi ngắt đồng hồ (RCC_CIR)


Độ lệch địa chỉ: 0x08

Giá trị đặt lại: 0x0000 0000

Truy cập: không có trạng thái chờ, truy cập từ, nửa từ và byte

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

PLL HSE HSI LSE LSI


CSSC
Kín đáo Kín đáo RDYC RDYC RDYC RDYC RDYC

w wwww w

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

PLL HSE HSI LSE LSI PLL HSE HSI LSE LSI
CSSF
Kín đáo RDYIE RDYIE RDYIE RDYIE RDYIE Kín đáo RDYF RDYF RDYF RDYF RDYF

rw rw rw rw rw r r r r r r

Bit 31:24 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 23 CSSC: Xóa hệ thống bảo mật đồng hồ bị gián đoạn

Bit này được thiết lập bằng phần mềm để xóa cờ CSSF.
0: Không có hiệu lực

1: Xóa cờ CSSF

Bit 22:21 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 20 PLLRDYC: Xóa ngắt sẵn sàng PLL

Bit này được thiết lập bằng phần mềm để xóa cờ PLLRDYF.
0: Không có hiệu lực

1: PLLRDYF đã được xóa

Bit 19 HSERDYC: Xóa ngắt sẵn sàng HSE

Bit này được thiết lập bằng phần mềm để xóa cờ HSERDYF.
0: Không có hiệu lực

1: HSERDYF đã xóa

Bit 18 HSIRDYC: Xóa ngắt sẵn sàng HSI

Bit này được thiết lập phần mềm để xóa cờ HSIRDYF.


0: Không có hiệu lực

1: HSIRDYF đã xóa

Bit 17 LSERDYC: Xóa ngắt sẵn sàng LSE

Bit này được thiết lập bằng phần mềm để xóa cờ LSERDYF.
0: Không có hiệu lực

1: LSERDYF đã xóa

Bit 16 LSIRDYC: Xóa ngắt sẵn sàng LSI

Bit này được thiết lập bằng phần mềm để xóa cờ LSIRDYF.
0: Không có hiệu lực

1: LSIRDYF đã xóa

Bit 15:13 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 12 PLLRDYIE: Cho phép ngắt sẵn sàng PLL

Thiết lập và xóa bằng phần mềm để bật/tắt ngắt do khóa PLL gây ra.

0: Ngắt khóa PLL bị vô hiệu hóa

1: Đã bật ngắt khóa PLL

104/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC)

Bit 11 HSERDYIE: Cho phép ngắt sẵn sàng HSE

Thiết lập và xóa bằng phần mềm để bật/tắt ngắt do ổn định dao động 4-16 MHz bên ngoài gây ra.

0: Ngắt sẵn sàng HSE bị vô hiệu hóa

1: Đã bật ngắt sẵn sàng HSE

Bit 10 HSIRDYIE: Cho phép ngắt sẵn sàng HSI

Thiết lập và xóa bằng phần mềm để bật/tắt ngắt do ổn định bộ dao động RC 8 MHz bên trong gây ra.

0: Ngắt sẵn sàng HSI bị vô hiệu hóa

1: Đã cho phép ngắt sẵn sàng HSI

Bit 9 LSERDYIE: Cho phép ngắt sẵn sàng LSE

Được thiết lập và xóa bằng phần mềm để bật/tắt ngắt do ổn định bộ dao động 32 kHz bên ngoài gây ra.

0: Ngắt sẵn sàng LSE bị vô hiệu hóa

1: Ngắt sẵn sàng LSE bị vô hiệu hóa

Bit 8 LSIRDYIE: Cho phép ngắt sẵn sàng LSI

Được thiết lập và xóa bằng phần mềm để bật/tắt ngắt do quá trình ổn định dao động RC 40 kHz bên
trong gây ra.

0: Ngắt sẵn sàng LSI bị vô hiệu hóa

1: Đã bật ngắt sẵn sàng LSI

Bit 7 CSSF: Cờ ngắt hệ thống bảo mật đồng hồ Được đặt

bởi phần cứng khi phát hiện lỗi trong bộ dao động 4-16 MHz bên ngoài.

Xóa bằng phần mềm cài đặt bit CSSC.

0: Không có gián đoạn bảo mật đồng hồ do lỗi đồng hồ HSE 1: Ngắt

bảo mật đồng hồ do lỗi đồng hồ HSE

Bit 6:5 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 4 PLLRDYF: Cờ ngắt sẵn sàng PLL

Được đặt bằng phần cứng khi khóa PLL và PLLRDYDIE được đặt.

Xóa bằng phần mềm cài đặt bit PLLRDYC.

0: Không có ngắt đồng hồ sẵn sàng do khóa PLL 1: Ngắt

đồng hồ sẵn sàng do khóa PLL

Bit3 HSERDYF: Cờ ngắt sẵn sàng HSE được đặt bởi

phần cứng khi đồng hồ Tốc độ cao bên ngoài trở nên ổn định và HSERDYDIE được đặt.

Xóa bằng phần mềm cài đặt bit HSERDYC.

0: Không có ngắt sẵn sàng xung nhịp gây ra bởi bộ dao động 4-16 MHz bên ngoài 1:

Ngắt sẵn sàng xung nhịp gây ra bởi bộ dao động 4-16 MHz bên ngoài

RM0008 Phiên bản 21 105/1136

122
Machine Translated by Google

Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC) RM0008

Bit 2 HSIRDYF: Cờ ngắt sẵn sàng HSI

Được đặt bằng phần cứng khi đồng hồ Tốc độ cao bên trong ổn định và HSIRDYDIE được đặt.

Xóa bằng phần mềm cài đặt bit HSIRDYC.

0: Không có xung nhịp sẵn sàng bị gián đoạn do bộ dao động RC 8 MHz bên trong gây ra

1: Ngắt đồng hồ sẵn sàng do bộ tạo dao động RC 8 MHz bên trong gây ra

Bit 1 LSERDYF: Cờ ngắt sẵn sàng LSE

Được đặt bằng phần cứng khi đồng hồ Tốc độ thấp bên ngoài trở nên ổn định và LSERDYDIE được đặt.

Xóa bằng phần mềm cài đặt bit LSERDYC.

0: Không có xung nhịp sẵn sàng bị gián đoạn do bộ dao động 32 kHz bên ngoài gây ra

1: Ngắt đồng hồ sẵn sàng do bộ dao động 32 kHz bên ngoài gây ra

Bit 0 LSIRDYF: Cờ ngắt sẵn sàng LSI

Được đặt bằng phần cứng khi đồng hồ tốc độ thấp bên trong ổn định và LSIRDYDIE được đặt.

Xóa bằng phần mềm cài đặt bit LSIRDYC.

0: Không có xung nhịp sẵn sàng bị gián đoạn do bộ dao động RC 40 kHz bên trong gây ra

1: Ngắt đồng hồ sẵn sàng do bộ tạo dao động RC 40 kHz bên trong gây ra

7.3.4 Thanh ghi đặt lại ngoại vi APB2 (RCC_APB2RSTR)


Độ lệch địa chỉ: 0x0C

Giá trị đặt lại: 0x00000 0000

Truy cập: không có trạng thái chờ, truy cập từ, nửa từ và byte

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

TIM11 TIM10 TIM9


Kín đáo RST RST RST Kín đáo
rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

ADC3 USART1 TIM8 SPI1 TIM1 ADC2 ADC1 IOPG IOPF IOPE IOPD IOPC IOPB IOPA AFIO
Res.
RST RST RST RST RST RST RST RST RST RST RST RST RST RST RST

rw rw rw rw rw rw rw rw rw rw rw rw rw rw Res. rw

Bit 31:22 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 21 TIM11RST: Đặt lại bộ hẹn giờ TIM11

Thiết lập và xóa bằng phần mềm.

0: Không có hiệu lực

1: Đặt lại bộ hẹn giờ TIM11

Bit 20 TIM10RST: Đặt lại bộ hẹn giờ TIM10

Thiết lập và xóa bằng phần mềm.

0: Không có hiệu lực

1: Đặt lại bộ hẹn giờ TIM10

Bit 19 TIM9RST: Đặt lại bộ hẹn giờ TIM9

Thiết lập và xóa bằng phần mềm.

0: Không có hiệu lực

1: Đặt lại bộ hẹn giờ TIM9

Bit 18:16 Dành riêng, luôn đọc là 0.

106/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC)

Bit 15 ADC3RST: Đặt lại giao diện ADC3

Thiết lập và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại giao diện ADC3

Bit 14 USART1RST: Đặt lại USART1

Thiết lập và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại USART1

Bit 13 TIM8RST: Đặt lại bộ hẹn giờ TIM8

Thiết lập và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại bộ đếm thời gian TIM8

Bit 12 SPI1RST: Đặt lại SPI1

Thiết lập và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại SPI1

Bit 11 TIM1RST: Đặt lại bộ hẹn giờ TIM1

Thiết lập và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại bộ đếm thời gian TIM1

Bit 10 ADC2RST: Đặt lại giao diện ADC 2

Thiết lập và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại giao diện ADC 2

Bit 9 ADC1RST: Đặt lại giao diện ADC 1

Thiết lập và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại giao diện ADC 1

Bit 8 IOPGRST: Đặt lại cổng IO G Thiết lập

và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại cổng IO G

Bit 7 IOPFRST: Đặt lại cổng IO F Thiết lập

và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại cổng IO F

Bit 6 IOPERST: Reset cổng IO E Thiết lập và

xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại cổng IO E

Bit 5 IOPDRST: Đặt lại cổng IO D Thiết lập

và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại cổng IO D

RM0008 Phiên bản 21 107/1136

122
Machine Translated by Google

Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC) RM0008

Bit 4 IOPCRST: Đặt lại cổng IO C Thiết lập

và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại cổng IO C

Bit 3 IOPBRST: Đặt lại cổng IO B Thiết lập

và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại cổng IO B

Bit 2 IOPARST: Cổng IO A thiết lập lại

Thiết lập và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại cổng IO A

Bit 1 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 0 AFIORST: Chức năng thay thế IO reset

Thiết lập và xóa bằng phần mềm.

0: Không có

tác dụng 1: Đặt lại chức năng thay thế

108/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC)

7.3.5 Thanh ghi đặt lại ngoại vi APB1 (RCC_APB1RSTR)


Độ lệch địa chỉ: 0x10

Giá trị đặt lại: 0x0000 0000

Truy cập: không có trạng thái chờ, truy cập từ, nửa từ và byte

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

USART USART
ĐẮC LÒ NÒ BKP CÓ THỂ USB I2C2 I2C1 UART5 UART4
3 2
Kín đáo RST RST Độ phân giải RST. Độ phân giải RST. RST RST RST RST RST
RST Độ phân giải RST.

rw rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

SPI3 SPI2 WWDG TIM14 TIM13 TIM12 TIM7 TIM6 TIM5 TIM4 TIM3 TIM2
RST RST Kín đáo RST Kín đáo RST RST RST RST RST RST RST RST RST

rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:30 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 29 DACRST: Đặt lại giao diện DAC

Thiết lập và xóa bằng phần mềm.


0: Không có hiệu lực

1: Đặt lại giao diện DAC

Bit 28 PWRRST: Đặt lại giao diện nguồn

Thiết lập và xóa bằng phần mềm.


0: Không có hiệu lực

1: Đặt lại giao diện nguồn

Bit 27 BKPRST: Đặt lại giao diện dự phòng

Thiết lập và xóa bằng phần mềm.


0: Không có hiệu lực

1: Đặt lại giao diện sao lưu

Bit 26 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 25 CANRST: CÓ THỂ đặt lại

Thiết lập và xóa bằng phần mềm.


0: Không có hiệu lực

1: Đặt lại CÓ THỂ

Bit 24 Dành riêng, luôn đọc là 0.

Bit 23 USBRST: Đặt lại USB

Thiết lập và xóa bằng phần mềm.


0: Không có hiệu lực

1: Đặt lại USB

Bit 22 I2C2RST: Đặt lại I2C2

Thiết lập và xóa bằng phần mềm.


0: Không có hiệu lực

1: Đặt lại I2C2

Bit 21 I2C1RST: Đặt lại I2C1

Thiết lập và xóa bằng phần mềm.


0: Không có hiệu lực

1: Đặt lại I2C1

RM0008 Phiên bản 21 109/1136

122
Machine Translated by Google

Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC) RM0008

Bit 20 UART5RST: Đặt lại USART5

Thiết lập và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại USART5

Bit 19 UART4RST: Đặt lại USART4

Thiết lập và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại USART4

Bit 18 USART3RST: Đặt lại USART3

Thiết lập và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại USART3

Bit 17 USART2RST: Đặt lại USART2

Thiết lập và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại USART2

Bit 16 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 15 SPI3RST: Đặt lại SPI3

Thiết lập và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại SPI3

Bit 14 SPI2RST: Đặt lại SPI2

Thiết lập và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại SPI2

Bit 13:12 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 11 WWDGRST: Thiết lập lại cơ quan giám sát cửa sổ Thiết

lập và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại cơ quan giám sát cửa sổ

Bit 10:9 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 8 TIM14RST: Đặt lại bộ hẹn giờ TIM14

Thiết lập và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại TIM14

Bit 7 TIM13RST: Đặt lại bộ hẹn giờ TIM13

Thiết lập và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại TIM13

Bit 6 TIM12RST: Đặt lại bộ hẹn giờ TIM12

Thiết lập và xóa bằng phần mềm.

0: Không có hiệu lực

1: Đặt lại TIM12

110/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC)

Bit 5 TIM7RST: Đặt lại bộ hẹn giờ TIM7

Thiết lập và xóa bằng phần mềm.


0: Không có hiệu lực

1: Đặt lại TIM7

Bit 4 TIM6RST: Đặt lại bộ hẹn giờ TIM6

Thiết lập và xóa bằng phần mềm.


0: Không có hiệu lực

1: Đặt lại TIM6

Bit 3 TIM5RST: Đặt lại bộ hẹn giờ TIM5

Thiết lập và xóa bằng phần mềm.


0: Không có hiệu lực

1: Đặt lại TIM5

Bit 2 TIM4RST: Đặt lại bộ hẹn giờ TIM4

Thiết lập và xóa bằng phần mềm.


0: Không có hiệu lực

1: Đặt lại TIM4

Bit 1 TIM3RST: Đặt lại bộ hẹn giờ TIM3

Thiết lập và xóa bằng phần mềm.


0: Không có hiệu lực

1: Đặt lại TIM3

Bit 0 TIM2RST: Đặt lại bộ hẹn giờ TIM2

Thiết lập và xóa bằng phần mềm.


0: Không có hiệu lực

1: Đặt lại TIM2

7.3.6 Thanh ghi kích hoạt đồng hồ ngoại vi AHB (RCC_AHBENR)


Độ lệch địa chỉ: 0x14

Giá trị đặt lại: 0x0000 0014

Truy cập: không có trạng thái chờ, truy cập từ, nửa từ và byte

Ghi chú: Khi đồng hồ ngoại vi không hoạt động, phần mềm có thể không đọc được các giá trị thanh ghi ngoại vi
và giá trị trả về luôn là 0x0.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

SDIO FSMC CRCE FLITF SRAM DMA2 DMA1


Kín đáo VN Res. VN Res. N Res. EN Res. VN VN VN

rw rw rw rw rw rw rw

Bit 31:11 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 10 SDIOEN: Kích hoạt đồng hồ SDIO

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ SDIO bị tắt

1: Đã bật đồng hồ SDIO

Bit 9 dành riêng, luôn đọc là 0.

RM0008 Phiên bản 21 111/1136

122
Machine Translated by Google

Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC) RM0008

Bit 8 FSMCEN: Kích hoạt đồng hồ FSMC

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ FSMC bị tắt 1:

Đồng hồ FSMC được bật

Bit 7 dành riêng, luôn đọc là 0.

Bit 6 CRCEN: Cho phép đồng hồ CRC

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ CRC bị tắt 1:

Đồng hồ CRC được bật

Bit 5 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 4 FLITFEN: Kích hoạt đồng hồ FLITF

Thiết lập và xóa bằng phần mềm để tắt/bật đồng hồ FLITF trong chế độ Ngủ.

0: Đồng hồ FLITF bị tắt trong chế độ Ngủ 1: Đồng hồ

FLITF được bật trong chế độ Ngủ

Bit 3 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 2 SRAMEN: Cho phép đồng hồ giao diện SRAM

Thiết lập và xóa bằng phần mềm để tắt/bật đồng hồ giao diện SRAM trong chế độ Ngủ.

0: Đồng hồ giao diện SRAM bị tắt trong chế độ Ngủ.

1: Đồng hồ giao diện SRAM được bật trong chế độ Ngủ

Bit 1 DMA2EN: Kích hoạt đồng hồ DMA2

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ DMA2 bị tắt 1:

Đồng hồ DMA2 được bật

Bit 0 DMA1EN: Kích hoạt đồng hồ DMA1

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ DMA1 bị tắt 1:

Đồng hồ DMA1 được bật

7.3.7 Thanh ghi kích hoạt đồng hồ ngoại vi APB2 (RCC_APB2ENR)


Địa chỉ: 0x18

Giá trị đặt lại: 0x0000 0000

Truy cập: truy cập từ, nửa từ và byte

Không có trạng thái chờ, ngoại trừ trường hợp truy cập xảy ra trong khi đang diễn ra truy cập vào thiết bị ngoại vi

trong miền APB2. Trong trường hợp này, trạng thái chờ được chèn vào cho đến khi quá trình truy cập vào thiết bị ngoại vi
APB2 hoàn tất.

Ghi chú: Khi đồng hồ ngoại vi không hoạt động, phần mềm có thể không đọc được các giá trị thanh ghi ngoại
vi và giá trị trả về luôn là 0x0.

112/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC)

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

TIM11 TIM10 TIM9


Kín đáo VN VN VN Kín đáo
rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

ADC3 USART TIM8 SPI1 TIM1 ADC2 ADC1 IOPG IOPF IOPE IOPD IOPC IOPB IOPA AFIO
VN 1EN VN VN VN VN VN VN VN VN VN VN VN VN Res. VN

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:22 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 21 TIM11EN: Bật đồng hồ hẹn giờ TIM11

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ hẹn giờ TIM11 bị tắt

1: Đã bật đồng hồ hẹn giờ TIM11

Bit 20 TIM10EN: Bật đồng hồ hẹn giờ TIM10

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ hẹn giờ TIM10 bị tắt

1: Đã bật đồng hồ hẹn giờ TIM10

Bit 19 TIM9EN: Bật đồng hồ hẹn giờ TIM9

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ hẹn giờ TIM9 bị tắt

1: Đã bật đồng hồ hẹn giờ TIM9

Bit 18:16 Dành riêng, luôn đọc là 0.

Bit 15 ADC3EN: Kích hoạt đồng hồ giao diện ADC3

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ giao diện ADC3 bị tắt

1: Đã bật đồng hồ giao diện ADC3

Bit 14 USART1EN: Kích hoạt đồng hồ USART1

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ USART1 bị tắt

1: Đã bật đồng hồ USART1

Bit 13 TIM8EN: Bật đồng hồ hẹn giờ TIM8

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ hẹn giờ TIM8 bị tắt

1: Đã bật đồng hồ hẹn giờ TIM8

Bit 12 SPI1EN: Kích hoạt đồng hồ SPI1

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ SPI1 bị tắt

1: Đã bật đồng hồ SPI1

Bit 11 TIM1EN: Bật đồng hồ hẹn giờ TIM1

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ hẹn giờ TIM1 bị tắt

1: Đã bật đồng hồ hẹn giờ TIM1

Bit 10 ADC2EN: Cho phép đồng hồ giao diện ADC 2

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ giao diện ADC 2 bị tắt

1: Đã bật đồng hồ giao diện ADC 2

RM0008 Phiên bản 21 113/1136

122
Machine Translated by Google

Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC) RM0008

Bit 9 ADC1EN: Cho phép đồng hồ giao diện ADC 1

Thiết lập và xóa bằng phần mềm.


0: Đã tắt giao diện ADC 1 1: Đã

bật đồng hồ giao diện ADC 1

Bit 8 IOPGEN: Cho phép đồng hồ cổng IO G Thiết

lập và xóa bằng phần mềm.

0: Đồng hồ cổng G IO bị vô hiệu

hóa 1: Đồng hồ cổng G IO được bật

Bit 7 IOPFEN: Cho phép đồng hồ cổng IO F Thiết

lập và xóa bằng phần mềm.

0: Đồng hồ cổng F của IO bị vô hiệu

hóa 1: Đồng hồ của cổng IO F được bật

Bit 6 IOPEEN: Bật đồng hồ cổng IO E Thiết lập

và xóa bằng phần mềm.

0: Đồng hồ cổng E của IO bị vô hiệu

hóa 1: Đồng hồ của cổng IO E được bật

Bit 5 IOPDEN: Bật đồng hồ cổng IO D Thiết lập và

xóa bằng phần mềm.

0: Đồng hồ cổng D của IO bị vô hiệu

hóa 1: Đồng hồ của cổng IO D được bật

Bit 4 IOPCEN: Cho phép đồng hồ cổng IO C Thiết

lập và xóa bằng phần mềm.

0: Đồng hồ cổng IO C bị vô hiệu

hóa 1: Đồng hồ cổng IO C được bật

Bit 3 IOPBEN: Bật xung nhịp cổng IO B Thiết lập

và xóa bằng phần mềm.

0: Đồng hồ cổng B IO bị vô hiệu

hóa 1: Đồng hồ cổng B IO được bật

Bit 2 IOPAEN: Cổng IO Kích hoạt đồng hồ Thiết

lập và xóa bằng phần mềm.

0: Cổng IO Đồng hồ A bị vô hiệu

hóa 1: Cổng IO Đồng hồ A được bật

Bit 1 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 0 AFIOEN: Chức năng thay thế cho phép đồng hồ IO

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ IO chức năng thay thế bị vô hiệu hóa

1: Đồng hồ IO chức năng thay thế được bật

114/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC)

7.3.8 Thanh ghi kích hoạt đồng hồ ngoại vi APB1 (RCC_APB1ENR)

Địa chỉ: 0x1C

Giá trị đặt lại: 0x0000 0000

Truy cập: truy cập từ, nửa từ và byte

Không có trạng thái chờ, trừ khi việc truy cập xảy ra trong khi quyền truy cập vào thiết bị ngoại vi trên miền APB1

đang diễn ra. Trong trường hợp này, trạng thái chờ được chèn cho đến khi việc truy cập vào thiết bị ngoại vi
APB1 này hoàn tất.

Ghi chú: Khi đồng hồ ngoại vi không hoạt động, phần mềm có thể không đọc được các giá trị thanh ghi ngoại vi và giá trị trả về

luôn là 0x0.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

ĐẮC LÒ NÒ BKP CÓ THỂ USB I2C2 I2C1 UART5 UART4 USART3 USART2
Kín đáo VN VN VN Res. VN Res. VN VN VN VN VN VN VN Res.
rw rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

SPI3 SPI2 WWD TIM14 TIM13 TIM12 TIM7 TIM6 TIM5 TIM4 TIM3 TIM2
VN VN Kín đáo GEN Kín đáo VN VN VN VN VN VN VN VN VN

rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:30 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 29 DACEN: Cho phép đồng hồ giao diện DAC

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ giao diện DAC bị tắt

1: Kích hoạt đồng hồ giao diện DAC

Bit 28 PWREN: Kích hoạt đồng hồ giao diện nguồn

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ giao diện nguồn bị tắt

1: Bật đồng hồ giao diện nguồn

Bit 27 BKPEN: Kích hoạt đồng hồ giao diện dự phòng

Thiết lập và xóa bằng phần mềm.

0: Đồng hồ giao diện sao lưu bị tắt

1: Đã bật đồng hồ giao diện sao lưu

Bit 26 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 25 CANEN: Kích hoạt đồng hồ CAN

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ CAN bị tắt

1: Đã bật đồng hồ CAN

Bit 24 Dành riêng, luôn đọc là 0.

Bit 23 USBEN: Bật đồng hồ USB

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ USB bị vô hiệu hóa

1: Đã bật đồng hồ USB

RM0008 Phiên bản 21 115/1136

122
Machine Translated by Google

Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC) RM0008

Bit 22 I2C2EN: Kích hoạt đồng hồ I2C2

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ I2C2 bị tắt 1:

Đồng hồ I2C2 được bật

Bit 21 I2C1EN: Kích hoạt đồng hồ I2C1

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ I2C1 bị tắt 1:

Đồng hồ I2C1 được bật

Bit 20 UART5EN: Kích hoạt đồng hồ USART5

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ USART5 bị tắt 1: Đồng

hồ USART5 được bật

Bit 19 UART4EN: Kích hoạt đồng hồ USART4

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ USART4 bị tắt 1: Đồng

hồ USART4 được bật

Bit 18 USART3EN: Kích hoạt đồng hồ USART3

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ USART3 bị tắt 1: Đồng

hồ USART3 được bật

Bit 17 USART2EN: Kích hoạt đồng hồ USART2

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ USART2 bị tắt 1: Đồng

hồ USART2 được bật

Bit 16 Dành riêng, luôn đọc là 0.

Bit 15 SPI3EN: Kích hoạt đồng hồ SPI 3

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ SPI 3 bị tắt 1:

Đồng hồ SPI 3 được bật

Bit 14 SPI2EN: Kích hoạt đồng hồ SPI2

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ SPI2 bị tắt 1:

Đồng hồ SPI2 được bật

Bit 13:12 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 11 WWDGEN: Bật đồng hồ giám sát cửa sổ Đặt và xóa bằng phần

mềm.

0: Đồng hồ giám sát cửa sổ bị tắt 1: Đã bật

đồng hồ giám sát cửa sổ

Bit 10:9 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 8 TIM14EN: Bật đồng hồ hẹn giờ TIM14

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ TIM14 bị tắt 1:

Đồng hồ TIM14 được bật

116/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC)

Bit 7 TIM13EN: Bật đồng hồ hẹn giờ TIM13

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ TIM13 bị tắt 1:

Đồng hồ TIM13 được bật

Bit 6 TIM12EN: Bật đồng hồ hẹn giờ TIM12

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ TIM12 bị tắt 1:

Đồng hồ TIM12 được bật

Bit 5 TIM7EN: Bật đồng hồ hẹn giờ TIM7

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ TIM7 bị tắt 1:

Đồng hồ TIM7 được bật

Bit 4 TIM6EN: Bật đồng hồ hẹn giờ TIM6

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ TIM6 bị tắt 1:

Đồng hồ TIM6 được bật

Bit 3 TIM5EN: Bật đồng hồ hẹn giờ TIM5

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ TIM5 bị tắt 1:

Đồng hồ TIM5 được bật

Bit 2 TIM4EN: Bật đồng hồ hẹn giờ TIM4

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ TIM4 bị tắt

1: Đã bật đồng hồ TIM4

Bit 1 TIM3EN: Bật đồng hồ hẹn giờ TIM3

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ TIM3 bị tắt 1:

Đồng hồ TIM3 được bật

Bit 0 TIM2EN: Bật đồng hồ hẹn giờ TIM2

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ TIM2 bị tắt 1:

Đồng hồ TIM2 được bật

RM0008 Phiên bản 21 117/1136

122
Machine Translated by Google

Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC) RM0008

7.3.9 Đăng ký kiểm soát miền dự phòng (RCC_BDCR)


Độ lệch địa chỉ: 0x20

Giá trị đặt lại: 0x0000 0000, đặt lại bằng Đặt lại tên miền dự phòng.
Truy cập: 0 trạng thái chờ 3, truy cập từ, nửa từ và byte
Trạng thái chờ được chèn vào trong trường hợp truy cập liên tiếp vào thanh ghi này.

Ghi chú: Các bit LSEON, LSEBYP, RTCSEL và RTCEN của thanh ghi điều khiển miền dự phòng (RCC_BDCR) nằm trong miền
dự phòng. Kết quả là, sau khi Đặt lại, các bit này được bảo vệ ghi và bit DBP trong thanh ghi Điều
khiển nguồn (PWR_CR) phải được đặt trước khi chúng có thể được sửa đổi. Tham khảo Phần 5: Điều khiển
công suất (PWR) để biết thêm thông tin.
Các bit này chỉ được đặt lại sau khi Đặt lại miền dự phòng (xem Phần 7.1.3: Đặt lại miền dự phòng). Bất kỳ
thiết lập lại bên trong hoặc bên ngoài nào sẽ không có bất kỳ ảnh hưởng nào đến các bit này.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

BDRST
Kín đáo
rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

RTC LSE LSE


RTCSEL[1:0] LSEON
VN Kín đáo Kín đáo BYP RDY

rw rw rw rw r rw

Bit 31:17 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 16 BDRST: Thiết lập lại phần mềm miền dự phòng

Thiết lập và xóa bằng phần mềm.


0: Đặt lại chưa được kích hoạt

1: Reset toàn bộ miền Backup

Bit 15 RTCEN: Kích hoạt đồng hồ RTC

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ RTC bị tắt

1: Đã bật đồng hồ RTC

Bit 14:10 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 9:8 RTCSEL[1:0]: Lựa chọn nguồn đồng hồ RTC

Được thiết lập bằng phần mềm để chọn nguồn xung nhịp cho RTC. Khi nguồn đồng hồ RTC đã được chọn, nó không thể

thay đổi được nữa trừ khi miền Sao lưu được đặt lại. Bit BDRST có thể được sử dụng để thiết lập lại chúng.

00: Không có đồng hồ

01: Đồng hồ dao động LSE được sử dụng làm đồng hồ RTC

10: Đồng hồ dao động LSI dùng làm đồng hồ RTC

11: Đồng hồ dao động HSE chia cho 128 dùng làm đồng hồ RTC

Bit 7:3 Dự trữ, phải được giữ ở giá trị đặt lại.

118/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC)

Bit 2 LSEBYP: Bỏ qua bộ dao động tốc độ thấp bên ngoài

Thiết lập và xóa bằng phần mềm để bỏ qua bộ dao động ở chế độ gỡ lỗi. Bit này chỉ có thể được ghi khi bộ tạo dao động
32 kHz bên ngoài bị tắt.

0: Bộ dao động LSE không được bỏ qua

1: Bộ dao động LSE bị bỏ qua

Bit 1 LSERDY: Bộ dao động tốc độ thấp bên ngoài sẵn sàng

Được thiết lập và xóa bằng phần cứng để cho biết khi nào bộ dao động 32 kHz bên ngoài ổn định. Sau khi bit LSEON bị

xóa, LSERDY xuống mức thấp sau 6 chu kỳ xung nhịp của bộ dao động tốc độ thấp bên ngoài.

0: Bộ tạo dao động 32 kHz bên ngoài chưa sẵn sàng

1: Bộ dao động 32 kHz bên ngoài sẵn sàng

Bit 0 LSEON: Cho phép bộ dao động tốc độ thấp bên ngoài

Thiết lập và xóa bằng phần mềm.

0: Bộ dao động 32 kHz bên ngoài TẮT

1: Bộ dao động 32 kHz bên ngoài BẬT

7.3.10 Thanh ghi điều khiển/trạng thái (RCC_CSR)

Địa chỉ: 0x24

Giá trị đặt lại: 0x0C00 0000, đặt lại bằng Đặt lại hệ thống, ngoại trừ cờ đặt lại chỉ bằng Đặt lại nguồn.

Truy cập: 0 trạng thái chờ 3, truy cập từ, nửa từ và byte

Trạng thái chờ được chèn vào trong trường hợp truy cập liên tiếp vào thanh ghi này.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

LPWR WWDG IWDG SFT por GHIM


RMVF
RSTF RSTF RSTF RSTF RSTF RSTF Res. Kín đáo
rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

LSI
LSION
Kín đáo RDY

r rw

RM0008 Phiên bản 21 119/1136

122
Machine Translated by Google

Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC) RM0008

Bit 31 LPWRRSTF: Cờ đặt lại nguồn điện thấp Được

thiết lập bởi phần cứng khi xảy ra quá trình thiết lập lại quản lý nguồn điện thấp.

Xóa bằng cách ghi vào bit RMVF.

0: Không xảy ra thiết lập lại quản lý nguồn điện thấp 1:

Đã xảy ra thiết lập lại quản lý nguồn điện thấp. Để

biết thêm thông tin về thiết lập lại quản lý nguồn điện thấp, hãy tham khảo Thiết lập lại quản lý nguồn điện thấp.

Bit 30 WWDGRSTF: Cờ đặt lại cơ quan giám sát cửa sổ được đặt

bởi phần cứng khi xảy ra quá trình đặt lại cơ quan giám sát cửa sổ.

Xóa bằng cách ghi vào bit RMVF.

0: Không xảy ra thiết lập lại cơ quan giám sát cửa sổ

1: Đã xảy ra thiết lập lại cơ quan giám sát cửa sổ

Bit 29 IWDGRSTF: Cờ đặt lại cơ quan giám sát độc lập

Được thiết lập bằng phần cứng khi xảy ra quá trình thiết lập lại cơ quan giám sát độc lập từ miền VDD .

Xóa bằng cách ghi vào bit RMVF.

0: Không xảy ra thiết lập lại cơ quan giám sát

1: Đã xảy ra thiết lập lại cơ quan giám sát

Bit 28 SFTRSTF: Cờ đặt lại phần mềm Được đặt

bởi phần cứng khi xảy ra quá trình thiết lập lại phần mềm.

Xóa bằng cách ghi vào bit RMVF.


0: Không xảy ra cài đặt lại phần mềm

1: Không xảy ra cài đặt lại phần mềm

Bit 27 PORRSTF: Cờ đặt lại POR/PDR Được đặt bằng

phần cứng khi xảy ra đặt lại POR/PDR.

Xóa bằng cách ghi vào bit RMVF.


0: Không xảy ra thiết lập lại POR/PDR

1: xảy ra thiết lập lại POR/PDR

Bit 26 PINRSTF: Cờ đặt lại mã PIN Được

đặt bằng phần cứng khi xảy ra việc đặt lại từ chân NRST.

Xóa bằng cách ghi vào bit RMVF.

0: Không xảy ra reset từ chân NRST 1: Xảy ra

reset từ chân NRST

Bit 25 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 24 RMVF: Xóa cờ reset Thiết lập bằng

phần mềm để xóa cờ reset.


0: Không có

tác dụng 1: Xóa cờ reset

Bit 23:2 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 1 LSIRDY: Bộ dao động tốc độ thấp bên trong đã sẵn sàng

Được thiết lập và xóa bằng phần cứng để cho biết khi nào bộ dao động RC 40 kHz bên trong ổn định.

Sau khi bit LSION bị xóa, LSIRDY xuống mức thấp sau 3 chu kỳ xung nhịp của bộ dao động RC 40 kHz bên trong.

0: Bộ tạo dao động RC 40 kHz bên trong chưa sẵn sàng

1: Bộ tạo dao động RC 40 kHz bên trong sẵn sàng

Bit 0 LSION: Cho phép bộ dao động tốc độ thấp bên trong Thiết

lập và xóa bằng phần mềm.


0: Bộ tạo dao động RC 40 kHz bên trong TẮT 1: Bộ

tạo dao động RC 40 kHz bên trong BẬT

120/1136 RM0008 Phiên bản 21


0x14
0x04

0x20
0x00

0x18
0x08

0x1C
0x0C

0x010
RM0008

Đăng ký bù đắp

RCC_CR

RCC_BDCR
RCC_CFGR

RCC_CIR

RCC_AHBENR

RCC_APB1ENR
RCC_APB2ENR
RCC_APB1RSTR
RCC_APB2RSTR

Đặt lại giá trị


Đặt lại giá trị
Đặt lại giá trị
Đặt lại giá trị
Đặt lại giá trị
Đặt lại giá trị
Đặt lại giá trị
Đặt lại giá trị
Đặt lại giá trị
Machine Translated by Google

13
0

o íđ
K ná
o íđ
K

NECAD TSRCAD
92

Kín đáo
NERWP TSRRWP

Kín đáo
7.3.11 Bản đồ đăng ký RCC

82
7

NEPKB TSRPKB

Kín đáo

o íđ
K ná
o íđ
K

Kín đáo
Kín đáo
62
NENAC TSRNAC LD
YLR
P

MCO
52

000 0 0000000 00
000 0 0000000 00
00

[2:0]

o íđ
K ná
o íđ
K GT
IẬ
NIB
U
ÒX
V
L

42

Kín đáo
NEBSU TSRBSU CSSC ná
o íđ
K
32
NE2C2I TSR2C2I ERPBSU
22

o íđ
K

0 00000
NE1C2I 11MN
IVT TSR1C2I TSR11MIT
Kín đáo

12

Kín đáo
NE5TRAU 01MIV
T TSR5TRAU TSR01MIT CYDRLLP
02
NE4TRAU 9MN
IV
T TSR4TRAU TSR9MIT CYDRESH NOSSC
[3:0]

91
8
RẤT NHIỀU

NE3TRASU TSR3TRASU CYDRISH 000 000000000000000000000000 PYBESH

NE2TRASU TSR2TRASU ná
o íđ
K CYDRESL ERPTXLLP DRESH

RM0008 Phiên bản 21


71

Dự trữ
TSRDB ná
o íđ
K ná
o íđ
K CYDRISL CRSLLP NOESH
61
5

00
000 00000000000000 0
000 00000000000000 0
NECTR NE3IPS NE3CDA TSR3IPS TSR3CDA
ADC

NE2IPS NE1TRASU TSR2IPS TSR1TRASU ná


o íđ
K
TRƯỚC

[1:0]

41
00000000000010000 11

NE8MIT TSR8MIT
31
2

o íđ
K ná
o íđ
K

NE1IPS TSR1IPS EIYDRLLP


PPR2

Kín đáo
[2:0]
Bảng 18. Sơ đồ thanh ghi RCC và giá trị đặt lại

NEGDWW NE1EMIT TSRGDWW TSR1EMIT EIYDRESH


11
Bảng sau đây cung cấp bản đồ thanh ghi RCC và các giá trị đặt lại.

NE2CDA NEOIDS TSR2CDA EIYDRISH

0
HSICAL[7:0]


o íđ
K

NE1CDA ná
o íđ
K TSR1CDA EIYDRESL

rved
PPR1

Đặt lại
000000 00000

09
1

00
[2:0]

RTC
0 000000000
0 000000000
NE41MIT TSR41MIT

TỰ ĐỘNG
NEGPOI NECMSF TSRGPOI EIYDRISL

[1:0]
ố8
s

NE31MIT NEFPOI ná
o íđ
K TSR31MIT TSRFPOI FSSC
7
NE21MIT NEEPOI NECRC TSR21MIT TSREPOI

0

o íđ
K
6
NE7MIT NEDPOI ná
o íđ
K TSR7MT TSRDPOI
5

Kín đáo
HPRE[3:0]

NE6MIT NECPOI NEFTILF TSR6MT TSRCPOI FYDRLLP


3
4
HSITRIM[4:0]

NE5MIT NEBPOI ná
o íđ
K TSR5MT TSRBPOI FYDRESH

1 100
SWS

PYBESL NE4MIT NEAPOI NEMARS TSR4MIT TSRAPOI FYDRISH ná


oíđ
K
[1:0]

2
Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC)

000
YDRESL NE3MIT ná
o íđ
K NE2AMD TSR3MIT ná
o íđ
K FYDRESL YDRISH
0
1
SW

121/1136
NOESL NE2MIT NEOIFA NE1AMD TSR2MIT CỚƯRT FYDRISL NOISH
[1:0]

122
Machine Translated by Google

Điều khiển đồng hồ và đặt lại mật độ thấp, trung bình, cao và XL (RCC) RM0008

Bảng 18. Sơ đồ thanh ghi RCC và giá trị đặt lại (tiếp theo)

Đăng ký bù đắp

0
1
5
ố8
s

7
6
09
1

2
3
4
11
13

12
0

RCC_CSR
0x24 Kín đáo

FVMR

NOISL
YDRISL
FTSRNIP
FTSRFS

FTSROP
FTSRWPL

FTSRGDWI

íđ
K
FTSRGDWW


o
Đặt lại giá trị 000011 0 0 0

Tham khảo Bảng 3 trên trang 50 để biết địa chỉ biên của thanh ghi.

122/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC)

số 8
Thiết bị đường kết nối: reset và điều khiển đồng hồ
(RCC)

Các thiết bị mật độ thấp là bộ vi điều khiển STM32F101xx, STM32F102xx và STM32F103xx


trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

Các thiết bị có mật độ trung bình là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 64 đến 128 Kbyte.

Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ nhớ
Flash nằm trong khoảng từ 256 đến 512 Kbyte.

Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ nhớ
Flash nằm trong khoảng từ 768 Kbyte đến 1 Mbyte.

Các thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

Phần này áp dụng cho tất cả các thiết bị đường kết nối, trừ khi có quy định khác.

8.1 Cài lại

Có ba loại thiết lập lại, được định nghĩa là thiết lập lại hệ thống, thiết lập lại nguồn và thiết lập lại miền
dự phòng.

8.1.1 Thiết lập lại hệ thống

Việc thiết lập lại hệ thống sẽ đặt tất cả các thanh ghi về giá trị đặt lại của chúng ngoại trừ các cờ đặt

lại trong thanh ghi CSR của bộ điều khiển đồng hồ và các thanh ghi trong miền Sao lưu (xem Hình 4).

Thiết lập lại hệ thống được tạo khi một trong các sự kiện sau xảy ra:

1. Mức thấp trên chân NRST (đặt lại bên ngoài)

2. Điều kiện kết thúc đếm của cơ quan giám sát cửa sổ (đặt lại WWDG)

3. Điều kiện kết thúc đếm của cơ quan giám sát độc lập (đặt lại IWDG)

4. Đặt lại phần mềm (Đặt lại SW) (xem Đặt lại phần mềm)

5. Đặt lại quản lý nguồn điện thấp (xem Đặt lại quản lý nguồn điện thấp)

Nguồn đặt lại có thể được xác định bằng cách kiểm tra các cờ đặt lại trong thanh ghi Điều khiển/
Trạng thái, RCC_CSR (xem Phần 8.3.10: Thanh ghi Điều khiển/trạng thái (RCC_CSR)).

Thiết lập lại phần mềm

Bit SYSRESETREQ trong thanh ghi Kiểm soát thiết lập lại và ngắt ứng dụng Cortex®-M3 phải được
đặt để buộc thiết lập lại phần mềm trên thiết bị. Tham khảo STM32F10xxx Cortex®-M3

hướng dẫn lập trình (xem Tài liệu liên quan) để biết thêm chi tiết.

RM0008 Phiên bản 21 123/1136

158
Machine Translated by Google

Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC) RM0008

Thiết lập lại quản lý năng lượng thấp

Có hai cách để tạo thiết lập lại quản lý năng lượng thấp:

1. Thiết lập lại được tạo khi vào chế độ Chờ: Kiểu thiết

lập lại này được kích hoạt bằng cách đặt lại bit nRST_STDBY trong Byte tùy chọn người dùng. Trong
trường hợp này, bất cứ khi nào trình tự nhập chế độ Chờ được thực hiện thành công, thiết bị sẽ
được đặt lại thay vì vào chế độ Chờ.

2. Reset khi vào chế độ Stop:

Kiểu đặt lại này được kích hoạt bằng cách đặt lại bit nRST_STOP trong Byte tùy chọn người dùng.
Trong trường hợp này, bất cứ khi nào trình tự nhập chế độ Dừng được thực hiện thành công, thiết
bị sẽ được đặt lại thay vì vào chế độ Dừng.

Để biết thêm thông tin về Byte tùy chọn người dùng, hãy tham khảo sách hướng dẫn lập trình
Flash STM32F10xxx.

8.1.2 Đặt lại nguồn

Thiết lập lại nguồn được tạo khi xảy ra một trong các sự kiện sau: 1. Đặt lại

bật/tắt nguồn (đặt lại POR/PDR)

2. Khi thoát khỏi chế độ Chờ

Việc đặt lại nguồn sẽ đặt tất cả các thanh ghi về giá trị đặt lại của chúng ngoại trừ miền Dự phòng
(xem Hình 4)

Các nguồn này tác động lên chân NRST và nó luôn được giữ ở mức thấp trong suốt pha trễ. Vectơ thường
trình dịch vụ RESET được cố định tại địa chỉ 0x0000_0004 trong bản đồ bộ nhớ. Để biết thêm chi tiết,
tham khảo Bảng 63: Bảng vectơ cho các thiết bị STM32F10xxx khác.

Tín hiệu thiết lập lại hệ thống được cung cấp cho thiết bị được xuất ra trên chân NRST. Bộ tạo
xung đảm bảo thời lượng xung đặt lại tối thiểu là 20 µs cho mỗi nguồn đặt lại (đặt lại bên ngoài
hoặc bên trong). Trong trường hợp thiết lập lại bên ngoài, xung đặt lại được tạo ra trong khi chân
NRST được xác nhận ở mức thấp.

Hình 10. Sơ đồ đơn giản của mạch reset

VDD/VDDA

RPU
Bên ngoài
Lọc Thiết lập lại hệ thống
cài lại

NRST

Đặt lại WWDG


Xung
Đặt lại IWDG
máy phát điện
Đặt lại nguồn
(tối thiểu 20 μs)
Thiết lập lại phần mềm

Thiết lập lại quản lý năng lượng thấp

ai16095c

124/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC)

8.1.3 Đặt lại tên miền dự phòng

Miền dự phòng có hai lần đặt lại cụ thể chỉ ảnh hưởng đến miền dự phòng (xem Hình 4).

Thiết lập lại miền dự phòng được tạo khi xảy ra một trong các sự kiện sau: 1. Thiết lập lại phần

mềm, được kích hoạt bằng cách đặt bit BDRST trong thanh ghi kiểm soát miền dự phòng (RCC_BDCR).

2. Bật nguồn VDD hoặc VBAT , nếu cả hai nguồn cung cấp trước đó đã bị tắt nguồn.

8.2 Đồng hồ

Ba nguồn đồng hồ khác nhau có thể được sử dụng để điều khiển đồng hồ hệ thống (SYSCLK):

• Đồng hồ dao động HSI

• Đồng hồ dao động HSE

• Đồng hồ PLL

Các thiết bị có hai nguồn xung nhịp thứ cấp sau: • RC bên trong tốc độ thấp

40 kHz (LSI RC) điều khiển cơ quan giám sát độc lập và tùy chọn RTC được sử dụng để Tự động đánh thức từ chế độ

Dừng/Chờ.

• Tinh thể bên ngoài tốc độ thấp 32,768 kHz (tinh thể LSE) tùy chọn điều khiển đồng hồ thời gian thực (RTCCLK)

Mỗi nguồn đồng hồ có thể được bật hoặc tắt độc lập khi không sử dụng để tối ưu hóa mức tiêu thụ điện năng.

RM0008 Phiên bản 21 125/1136

158
Machine Translated by Google

Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC) RM0008

Hình 11. Cây đồng hồ

40 kHz
LSI đến cơ quan giám sát độc lập

RC IWDGCLK

LSI
OSC32_IN 32,768 kHz đến RTC
LSE
LSE RTCCLK
OSC32_OUT OSC
/128
CSS
RTCSEL[1:0]
HSE

sang chương trình Flash. NẾU FLITFCLK

XT1 đến MCO 8 MHz HSI SYSCLK


HSI RC RẤT NHIỀU
đồng hồ hệ thống
/2
OSC_IN 3-25 MHz
x4, x5,...x9, PLLCLK
HSE x6.5
OSC_OUT OSC
/1,2,3....
SW
..../15, /16
PLLVCO (2 × PLLCLK)
PLLSCR
PREDIV1 Bộ chia tỷ lệ trước USB

PREDIV1SCR /2,3

otgfsclk
PLL2MUL
48 MHz
sang USBOTG FS

x8, x9,...
x14, x16, x20
PREDIV2 sang giao diện I2S2

/1,2,3.... PLL3MUL PLL2CLK


..../15, /16 tới MCO
sang giao diện I2S3
PLL3VCO
x8, x9,...
(2 × PLL3CLK)
x14, x16, x20

PLL3CLK sang MCO

MCO[3:0]
Bus HCLK đến AHB, bộ nhớ lõi và DMA
HSE
HSI /số 8
tới bộ đếm thời gian của hệ thống Cortex

MCO PLLCLK/2 Đồng hồ chạy miễn phí FCLK Cortex


PLL2CLK
tối đa 36 MHz
PLL3CLK/2 Bộ đếm trước APB1 PCLK1
PLL3CLK /1, 2, 4, 8, 16
Kích hoạt đồng hồ ngoại vi đến thiết bị ngoại vi APB1
XT1

đến TIM2,3,4,5,
TIM2,3,4,5,6,7 6 & 7
Nếu (bộ đếm gộp trước APB1 =1) x1
SYSCLK Bộ đếm trước AHB
khác x2 TIMxCLK
Tối đa 72 MHz. /1,/2 ../512
(xem ghi chú 1) Kích hoạt đồng hồ ngoại vi

Tối đa 72 MHz
Bộ đếm trước APB2 PCLK2
/1, 2, 4, 8, 16
Kích hoạt đồng hồ ngoại vi đến thiết bị ngoại vi APB2

Ethernet
vật lý

TIM1
tới TIM1
Nếu (bộ chia tỷ lệ trước APB2 =1) x1
khác x2 TIMxCLK

ETH_MII_TX_CLK MACTXCLK
Kích hoạt đồng hồ ngoại vi
MII_RMII_SEL
/2, /20
trong AFIO_MAPR
tới Ethernet MAC
ETH_MII_RX_CLK MACRXCLK Bộ đếm trước ADC ADCCLK
đến ADC1,2
/2, 4, 6, 8 tối đa 14 MHz

MACRMIICLK

ai15699d

1. Khi HSI được sử dụng làm đầu vào đồng hồ PLL, tần số đồng hồ hệ thống tối đa có thể đạt được là
36 MHz.

2. Để biết chi tiết đầy đủ về các đặc tính nguồn đồng hồ bên trong và bên ngoài, hãy tham khảo phần “Điện
phần đặc điểm” trong biểu dữ liệu thiết bị của bạn.

Bộ điều khiển đồng hồ tiên tiến có 3 PLL để mang lại mức độ linh hoạt cao cho ứng dụng trong việc
lựa chọn tinh thể hoặc bộ tạo dao động bên ngoài để chạy lõi và thiết bị ngoại vi ở tần số cao nhất
và đảm bảo tần số thích hợp cho Ethernet và USBOTG FS.

Một tinh thể 25 MHz duy nhất có thể tạo xung nhịp cho toàn bộ hệ thống và tất cả các thiết bị
ngoại vi bao gồm các thiết bị ngoại vi Ethernet và USBOTG FS. Để đạt được hiệu suất âm thanh chất
lượng cao, có thể sử dụng tinh thể âm thanh. Trong trường hợp này, đồng hồ chính I2S có thể tạo ra
tất cả các tần số lấy mẫu tiêu chuẩn từ 8 kHz đến 96 kHz với độ chính xác dưới 0,5%.
Để biết thêm chi tiết về cấu hình đồng hồ cho các ứng dụng yêu cầu Ethernet, USBOTG FS và/hoặc I2S
(âm thanh), hãy tham khảo "Phụ lục A sơ đồ khối ứng dụng" trong đường kết nối của bạn
bảng dữ liệu thiết bị.

126/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC)

Một số bộ đếm gộp trước cho phép cấu hình tần số AHB, miền APB tốc độ cao (APB2) và miền APB
tốc độ thấp (APB1). Tần số tối đa của miền AHB và APB2 là 72 MHz. Tần số tối đa được phép của miền
APB1 là 36 MHz.

Tất cả các đồng hồ ngoại vi đều bắt nguồn từ đồng hồ hệ thống (SYSCLK) ngoại trừ:

• Đồng hồ giao diện lập trình bộ nhớ Flash (FLITFCLK) luôn là đồng hồ HSI

• Đồng hồ USBOTG FS 48 MHz được lấy từ đồng hồ PLL VCO (2 ×


PLLCLK), theo sau là bộ đếm gộp trước có thể lập trình (chia cho 3 hoặc 2). Việc lựa chọn
này được thực hiện thông qua bit OGFSPRE trong thanh ghi RCC_CFGR. Để hoạt động chính xác của
USBOTG FS FS, PLL phải được cấu hình để xuất ra 72 MHz hoặc 48 MHz.

• Đồng hồ I2S2 và I2S3 có thể được lấy từ đồng hồ hệ thống (SYSCLK) hoặc
đồng hồ PLL3 VCO (2 × PLL3CLK). Lựa chọn này được thực hiện thông qua bit I2SxSRC trong thanh
ghi RCC_CFGR2. Để biết thêm thông tin về PLL3 và cách định cấu hình đồng hồ I2S để đạt được
hiệu suất âm thanh chất lượng cao, hãy tham khảo Phần 25.4.3: Trình tạo đồng hồ.

• Đồng hồ MAC Ethernet (TX, RX và RMII) được cung cấp từ PHY bên ngoài. Để biết thêm thông tin
về cấu hình Ethernet, hãy tham khảo Phần 29.4.4: Lựa chọn MII/RMII.

Khi sử dụng Ethernet, tần số xung nhịp AHB phải tối thiểu là 25 MHz.

RCC cung cấp cho đồng hồ bên ngoài Cortex® System Hẹn giờ (SysTick) bằng đồng hồ AHB (HCLK)
chia cho 8. SysTick có thể hoạt động với đồng hồ này hoặc với đồng hồ Cortex® (HCLK), có thể định
cấu hình trong thanh ghi Trạng thái và Kiểm soát SysTick . Các ADC được tính theo đồng hồ của
miền Tốc độ cao (APB2) chia cho 2, 4, 6 hoặc 8.

Tần số đồng hồ hẹn giờ được tự động cố định bằng phần cứng. Có hai trường hợp:
1. nếu bộ đếm gộp APB là 1, tần số đồng hồ hẹn giờ được đặt ở cùng tần số với tần số của miền
APB mà bộ hẹn giờ được kết nối.

2. nếu không, chúng được đặt thành tần số gấp đôi (×2) của miền APB mà bộ hẹn giờ được kết nối.

FCLK hoạt động như đồng hồ chạy tự do Cortex®-M3 . Để biết thêm chi tiết, hãy tham khảo Arm®
Hướng dẫn tham khảo kỹ thuật Cortex-M3 r1p1 (TRM).

8.2.1 Đồng hồ HSE

Tín hiệu đồng hồ bên ngoài tốc độ cao (HSE) có thể được tạo từ hai đồng hồ có thể
nguồn:

• Bộ cộng hưởng tinh thể/gốm bên ngoài HSE


• Đồng hồ bên ngoài người dùng HSE

Bộ cộng hưởng và tụ tải phải được đặt càng gần các chân dao động càng tốt để giảm thiểu độ
méo đầu ra và thời gian ổn định khởi động. Các giá trị điện dung tải phải được điều chỉnh
theo bộ dao động đã chọn.

RM0008 Phiên bản 21 127/1136

158
Machine Translated by Google

Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC) RM0008

Hình 12. Nguồn xung nhịp HSE/LSE

Nguồn đồng hồ Cấu hình phần cứng

OSC_OUT

Đồng hồ bên ngoài

(Xin chào)

Bên ngoài
nguồn

OSC_IN OSC_OUT

Pha lê/gốm
bộ cộng hưởng

CL1 CL2
Trọng tải

tụ điện

Nguồn bên ngoài (bỏ qua HSE)

Ở chế độ này, phải cung cấp nguồn đồng hồ bên ngoài. Nó có thể có tần số lên tới 50 MHz. Chọn chế
độ này bằng cách thiết lập các bit HSEBYP và HSEON trong thanh ghi điều khiển Đồng hồ (RCC_CR).
Tín hiệu đồng hồ bên ngoài (hình vuông, hình sin hoặc hình tam giác) với chu kỳ hoạt động ~ 50%
phải điều khiển chân OSC_IN trong khi chân OSC_OUT phải được để ở mức hi-Z. Xem Hình 12.

Bộ cộng hưởng tinh thể/gốm bên ngoài (tinh thể HSE)

Bộ tạo dao động ngoài 3 đến 25 MHz có ưu điểm là tạo ra tốc độ rất chính xác trên đồng hồ chính.

Cấu hình phần cứng liên quan được hiển thị trong Hình 12. Tham khảo phần đặc tính điện của
biểu dữ liệu để biết thêm chi tiết.

Cờ HSERDY trong thanh ghi điều khiển xung nhịp (RCC_CR) cho biết bộ dao động ngoài tốc độ cao
có ổn định hay không. Khi khởi động, đồng hồ không được giải phóng cho đến khi bit này được thiết
lập bằng phần cứng. Một ngắt có thể được tạo ra nếu được bật trong thanh ghi ngắt Đồng
hồ (RCC_CIR).

Tinh thể HSE có thể được bật và tắt bằng cách sử dụng bit HSEON trong thanh ghi điều khiển
Đồng hồ (RCC_CR).

8.2.2 đồng hồ HSI

Tín hiệu đồng hồ HSI được tạo từ Bộ tạo dao động RC 8 MHz bên trong và có thể được sử dụng trực
tiếp làm đồng hồ hệ thống hoặc chia cho 2 để sử dụng làm đầu vào PLL.

Bộ tạo dao động HSI RC có ưu điểm là cung cấp nguồn xung nhịp với chi phí thấp (không cần linh kiện
bên ngoài). Tuy nhiên, nó cũng có thời gian khởi động nhanh hơn bộ tạo dao động tinh thể HSE, ngay
cả khi hiệu chỉnh tần số vẫn kém chính xác hơn bộ tạo dao động tinh thể bên ngoài hoặc bộ cộng
hưởng gốm.

128/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC)

Sự định cỡ

Tần số dao động RC có thể thay đổi từ chip này sang chip khác do sự khác biệt trong quy trình sản xuất,
đây là lý do tại sao mỗi thiết bị đều được hiệu chuẩn tại nhà máy bằng ST để có độ chính xác 1% ở TA= 25 °C.

Sau khi đặt lại, giá trị hiệu chuẩn gốc được tải trong các bit HSICAL[7:0] trong thanh ghi điều khiển Đồng
hồ (RCC_CR).

Nếu ứng dụng chịu sự thay đổi về điện áp hoặc nhiệt độ, điều này có thể ảnh hưởng đến tốc độ bộ dao
động RC. Bạn có thể cắt tần số HSI trong ứng dụng bằng cách sử dụng các bit HSITRIM[4:0] trong thanh ghi
điều khiển Đồng hồ (RCC_CR).

Cờ HSIRDY trong thanh ghi điều khiển xung nhịp (RCC_CR) cho biết HSI RC có ổn định hay không. Khi khởi
động, đồng hồ đầu ra HSI RC không được giải phóng cho đến khi bit này được thiết lập bằng phần cứng.

HSI RC có thể được bật và tắt bằng cách sử dụng bit HSION trong thanh ghi điều khiển Đồng hồ (RCC_CR).

Tín hiệu HSI cũng có thể được sử dụng làm nguồn dự phòng (Đồng hồ phụ) nếu bộ tạo dao động tinh thể
HSE bị lỗi. Tham khảo Phần 8.2.7: Hệ thống bảo mật đồng hồ (CSS).

8.2.3 PLL

PLL chính cung cấp hệ số nhân tần số bắt đầu từ một trong các đồng hồ sau
nguồn:

• Đồng hồ HSI chia cho 2

• Đồng hồ HSE hoặc PLL2 thông qua bộ chia có thể định cấu hình

Tham khảo Hình 11 và Thanh ghi điều khiển đồng hồ (RCC_CR).

PLL2 và PLL3 được HSE bấm giờ thông qua một bộ chia có thể cấu hình cụ thể. Tham khảo Hình 11 và
Thanh ghi cấu hình đồng hồ2 (RCC_CFGR2)

Cấu hình của mỗi PLL (lựa chọn nguồn đồng hồ, hệ số phân chia và hệ số nhân) phải được thực
hiện trước khi kích hoạt PLL. Mỗi PLL phải được kích hoạt sau khi đồng hồ đầu vào của nó ổn định (cờ
sẵn sàng). Khi PLL được bật, các tham số này không thể thay đổi được.

Khi thay đổi nguồn đồng hồ đầu vào của PLL chính, nguồn đồng hồ gốc chỉ phải được tắt sau khi chọn
nguồn đồng hồ mới (được thực hiện thông qua bit PLLSRC trong thanh ghi cấu hình Đồng hồ (RCC_CFGR)).

Một ngắt có thể được tạo ra khi PLL sẵn sàng nếu được bật trong thanh ghi ngắt Đồng hồ (RCC_CIR).

8.2.4 Đồng hồ LSE

Tinh thể LSE là bộ cộng hưởng gốm hoặc tinh thể bên ngoài tốc độ thấp 32,768 kHz. Nó có ưu điểm là cung
cấp nguồn đồng hồ tiêu thụ điện năng thấp nhưng có độ chính xác cao cho thiết bị ngoại vi đồng hồ
thời gian thực (RTC) cho đồng hồ/lịch hoặc các chức năng định giờ khác.

Tinh thể LSE được bật và tắt bằng cách sử dụng bit LSEON trong thanh ghi điều khiển miền dự phòng
(RCC_BDCR).

Cờ LSERDY trong thanh ghi điều khiển miền dự phòng (RCC_BDCR) cho biết tinh thể LSE có ổn định hay không.
Khi khởi động, tín hiệu đồng hồ đầu ra tinh thể LSE không được giải phóng cho đến khi bit này được
thiết lập bằng phần cứng. Một ngắt có thể được tạo ra nếu được bật trong thanh ghi ngắt Đồng hồ
(RCC_CIR).

RM0008 Phiên bản 21 129/1136

158
Machine Translated by Google

Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC) RM0008

Nguồn bên ngoài (bỏ qua LSE)

Ở chế độ này, phải cung cấp nguồn đồng hồ bên ngoài. Nó có thể có tần số lên tới 1 MHz. Bạn chọn
chế độ này bằng cách thiết lập các bit LSEBYP và LSEON trong thanh ghi điều khiển miền dự phòng
(RCC_BDCR). Tín hiệu đồng hồ bên ngoài (hình vuông, hình sin hoặc hình tam giác) với chu kỳ
nhiệm vụ ~ 50% phải điều khiển chân OSC32_IN trong khi chân OSC32_OUT phải được để lại Hi-Z. Xem
Hình 12.

8.2.5 đồng hồ LSI

LSI RC hoạt động như một nguồn xung nhịp năng lượng thấp có thể tiếp tục chạy ở chế độ Dừng
và Chờ cho cơ quan giám sát độc lập (IWDG) và bộ phận Tự động đánh thức (AWU). Tần số xung nhịp
là khoảng 40 kHz (trong khoảng từ 30 kHz đến 60 kHz). Để biết thêm chi tiết, hãy tham khảo phần đặc
tính điện của bảng dữ liệu.

LSI RC có thể được bật và tắt bằng cách sử dụng bit LSION trong thanh ghi Điều khiển/trạng thái
(RCC_CSR).

Cờ LSIRDY trong thanh ghi Điều khiển/trạng thái (RCC_CSR) cho biết bộ dao động nội tốc độ thấp
có ổn định hay không. Khi khởi động, đồng hồ không được giải phóng cho đến khi bit này được thiết
lập bằng phần cứng. Một ngắt có thể được tạo ra nếu được bật trong thanh ghi ngắt Đồng
hồ (RCC_CIR).

Hiệu chuẩn LSI

Sự phân tán tần số của bộ dao động RC nội bộ tốc độ thấp (LSI) có thể được hiệu chỉnh để có cơ sở
thời gian RTC chính xác và/hoặc thời gian chờ IWDG (khi LSI được sử dụng làm nguồn đồng hồ cho các
thiết bị ngoại vi này) với độ chính xác chấp nhận được.

Việc hiệu chuẩn này được thực hiện bằng cách đo tần số xung nhịp LSI tương ứng với xung nhịp
đầu vào TIM5 (TIM5CLK). Theo phép đo này được thực hiện với độ chính xác của bộ dao động HSE,
phần mềm có thể điều chỉnh bộ đếm gộp 20 bit có thể lập trình của RTC để có được cơ sở thời gian
chính xác hoặc có thể tính toán thời gian chờ IWDG chính xác.

Sử dụng quy trình sau để hiệu chỉnh LSI:

1. Bật bộ hẹn giờ TIM5 và định cấu hình kênh4 ở chế độ chụp đầu vào

2. Đặt bit TIM5CH4_IREMAP trong thanh ghi AFIO_MAPR để kết nối đồng hồ LSI bên trong với ghi đầu
vào TIM5 kênh4 nhằm mục đích hiệu chỉnh.

3. Đo tần số của đồng hồ LSI bằng sự kiện TIM5 Capture/so sánh 4 hoặc
ngắt.

4. Sử dụng tần số LSI đo được để cập nhật bộ chia tỷ lệ trước 20 bit của RTC tùy thuộc vào cơ sở
thời gian mong muốn và/hoặc để tính toán thời gian chờ IWDG.

8.2.6 Lựa chọn đồng hồ hệ thống (SYSCLK)


Sau khi thiết lập lại hệ thống, bộ dao động HSI được chọn làm đồng hồ hệ thống. Khi nguồn đồng hồ
được sử dụng trực tiếp hoặc thông qua PLL làm đồng hồ hệ thống thì không thể dừng nó.

Việc chuyển đổi từ nguồn đồng hồ này sang nguồn đồng hồ khác chỉ xảy ra nếu nguồn đồng hồ đích đã
sẵn sàng (đồng hồ ổn định sau khi khởi động trễ hoặc khóa PLL). Nếu nguồn đồng hồ chưa sẵn sàng
được chọn, việc chuyển đổi sẽ xảy ra khi nguồn đồng hồ sẵn sàng. Các bit trạng thái trong thanh ghi
điều khiển Đồng hồ (RCC_CR) cho biết (các) đồng hồ nào đã sẵn sàng và đồng hồ nào hiện đang được sử
dụng làm đồng hồ hệ thống.

130/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC)

8.2.7 Hệ thống bảo mật đồng hồ (CSS)


Hệ thống an ninh đồng hồ có thể được kích hoạt bằng phần mềm. Trong trường hợp này,
bộ phát hiện đồng hồ được bật sau độ trễ khởi động bộ tạo dao động HSE và bị vô hiệu hóa

khi bộ tạo dao động này bị dừng. phát hiện lỗi trên đồng hồ HSE, Bộ tạo dao động HSE tự
động bị tắt, sự kiện lỗi đồng hồ được gửi đến đầu vào ngắt của bộ hẹn giờ điều khiển TIM1
Advanced và một ngắt được tạo ra để thông báo cho phần mềm về lỗi (CSI ngắt hệ thống bảo
mật đồng hồ ), cho phép MCU thực hiện các hoạt động cứu hộ. CSSI được liên kết với vectơ
ngoại lệ Cortex®-M3 NMI (Non-Maskable Interrupt).

Ghi chú: Khi CSS được bật và nếu đồng hồ HSE bị lỗi, ngắt CSS sẽ xảy ra và NMI sẽ tự động được tạo.
NMI sẽ được thực thi vô thời hạn trừ khi bit chờ ngắt CSS bị xóa. Do đó, trong NMI ISR,
người dùng phải xóa ngắt CSS bằng cách đặt bit CSSC trong thanh ghi ngắt Đồng hồ (RCC_CIR).

Nếu bộ dao động HSE được sử dụng trực tiếp hoặc gián tiếp làm đồng hồ hệ thống (có nghĩa gián tiếp:
nó được sử dụng làm đồng hồ đầu vào PLL trực tiếp hoặc thông qua PLL2 và đồng hồ PLL được sử
dụng làm đồng hồ hệ thống), thì lỗi được phát hiện sẽ gây ra chuyển đổi đồng hồ hệ thống. tới bộ dao
động HSI và vô hiệu hóa bộ dao động HSE bên ngoài. Nếu đồng hồ dao động HSE (được chia hoặc không)
là đầu vào đồng hồ của PLL (trực tiếp hoặc thông qua PLL2) được sử dụng làm đồng hồ hệ thống khi
xảy ra lỗi thì PLL cũng bị vô hiệu hóa.

Đồng hồ RTC 8.2.8

Nguồn đồng hồ RTCCLK có thể là đồng hồ HSE/128, LSE hoặc LSI. Điều này được chọn bằng cách
lập trình các bit RTCSEL[1:0] trong thanh ghi điều khiển miền dự phòng (RCC_BDCR).
Không thể sửa đổi lựa chọn này nếu không đặt lại miền Sao lưu.

Đồng hồ LSE nằm trong miền Sao lưu, trong khi đồng hồ HSE và LSI thì không.
Do đó:
• Nếu LSE được chọn làm đồng hồ RTC:

– RTC tiếp tục hoạt động ngay cả khi nguồn VDD bị tắt, miễn là
Nguồn cung VBAT được duy trì.
• Nếu LSI được chọn làm đồng hồ Đơn vị tự động đánh thức (AWU):

– Trạng thái AWU không được đảm bảo nếu nguồn VDD bị tắt. Tham khảo Phần 8.2.5:
Đồng hồ LSI để biết thêm chi tiết về hiệu chuẩn LSI.
• Nếu đồng hồ HSE chia cho 128 được sử dụng làm đồng hồ RTC:

– Trạng thái RTC không được đảm bảo nếu nguồn VDD bị tắt hoặc nếu bộ điều chỉnh điện áp
bên trong bị tắt (rút nguồn khỏi miền 1,8 V).

– Bit DPB (Tắt tính năng bảo vệ ghi miền dự phòng) trong thanh ghi Bộ điều khiển
nguồn phải được đặt thành 1 (tham khảo Mục 5.4.1: Thanh ghi điều khiển
nguồn (PWR_CR)).

8.2.9 Đồng hồ canh gác


Nếu cơ quan giám sát độc lập (IWDG) được khởi động bằng tùy chọn phần cứng hoặc truy
cập phần mềm, bộ tạo dao động LSI sẽ bị BẬT và không thể tắt được. Sau khi tạm thời bộ
dao động LSI, đồng hồ được cung cấp cho IWDG.

RM0008 Phiên bản 21 131/1136

158
Machine Translated by Google

Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC) RM0008

8.2.10 Khả năng bấm giờ

Khả năng đầu ra xung nhịp của vi điều khiển (MCO) cho phép xung nhịp được xuất ra chân MCO
bên ngoài. Các thanh ghi cấu hình của cổng GPIO tương ứng phải được lập trình ở chế độ
chức năng thay thế. Một trong 8 tín hiệu đồng hồ có thể được chọn làm đồng hồ MCO.

• HỆ THỐNG

• HSI

• HSE

• Đồng hồ PLL chia cho 2 chọn


• Đồng hồ PLL2 được chọn

• Đồng hồ PLL3 chia cho 2 chọn

• Đồng hồ dao động 3-25 MHz bên ngoài của XT1 được chọn (cho Ethernet)

• Đồng hồ PLL3 được chọn (cho Ethernet)

Đồng hồ được chọn để xuất ra MCO không được vượt quá 50 MHz (tốc độ I/O tối đa).

Việc lựa chọn được điều khiển bởi các bit MCO[3:0] của thanh ghi cấu hình Đồng hồ
(RCC_CFGR).

8.3 Thanh ghi RCC


Tham khảo Phần 2.2 trên trang 45 để biết danh sách các chữ viết tắt được sử dụng trong mô tả đăng ký.

8.3.1 Thanh ghi điều khiển đồng hồ (RCC_CR)

Độ lệch địa chỉ: 0x00

Giá trị đặt lại: 0x0000 XX83 trong đó X không xác định.

Truy cập: không có trạng thái chờ, truy cập từ, nửa từ và byte

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

PLL3 PLL3 PLL2 PLL2 PLLRD HSEBY HSERD


PLON CSSON HSEON
RDY TRÊN RDY TRÊN Y P Y
Kín đáo Kín đáo

r rw r rw r rw rw rw r rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

HSICAL[7:0] HSITRIM[4:0] HSIRDY HSION


Res.
r r r r r r r r rw rw rw rw rw r rw

Bit 31:30 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 29 PLL3RDY: Cờ sẵn sàng đồng hồ PLL3

Được thiết lập bằng phần cứng để chỉ ra rằng PLL3 đã bị khóa.
0: PLL3 đã được mở khóa

1: PLL3 bị khóa

Bit 28 PLL3ON: Kích hoạt PLL3

Thiết lập và xóa bằng phần mềm để kích hoạt PLL3.

Bị xóa bằng phần cứng khi vào chế độ Dừng hoặc Chờ.
0: TẮT PLL3

1: BẬT PLL3

132/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC)

Bit 27 PLL2RDY: Cờ sẵn sàng đồng hồ PLL2

Được thiết lập bằng phần cứng để chỉ ra rằng PLL2 đã bị khóa.
0: PLL2 đã được mở khóa

1: PLL2 bị khóa

Bit 26 PLL2ON: Kích hoạt PLL2

Thiết lập và xóa bằng phần mềm để kích hoạt PLL2.

Bị xóa bằng phần cứng khi vào chế độ Dừng hoặc Chờ. Bit này không thể bị xóa nếu đồng hồ PLL2 được sử dụng gián

tiếp làm đồng hồ hệ thống (tức là nó được sử dụng làm mục nhập đồng hồ PLL được sử dụng làm đồng hồ hệ thống).

0: TẮT PLL2

1: BẬT PLL2

Bit 25 PLLRDY: Cờ sẵn sàng đồng hồ PLL

Được thiết lập bằng phần cứng để chỉ ra rằng PLL đã bị khóa.
0: PLL đã được mở khóa

1: PLL bị khóa

Bit 24 PLLON: Kích hoạt PLL

Thiết lập và xóa bằng phần mềm để kích hoạt PLL.

Bị xóa bằng phần cứng khi vào chế độ Dừng hoặc Chờ. Bit này không thể được đặt lại nếu đồng hồ PLL được sử

dụng làm đồng hồ hệ thống hoặc được chọn để trở thành đồng hồ hệ thống. Phần mềm phải vô hiệu hóa đồng hồ

USBOTG FS trước khi xóa bit này.


0: TẮT PLL

1: ĐĂNG KÝ

Bit 23:20 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 19 CSSON: Kích hoạt hệ thống bảo mật đồng hồ

Thiết lập và xóa bằng phần mềm để kích hoạt hệ thống bảo mật đồng hồ. Khi CSSON được đặt, bộ phát hiện đồng hồ

được bật bằng phần cứng khi bộ dao động HSE sẵn sàng và bị tắt bởi phần cứng nếu phát hiện lỗi đồng hồ HSE.

0: Bộ dò đồng hồ TẮT

1: BẬT bộ phát hiện đồng hồ (BẬT bộ phát hiện đồng hồ nếu bộ dao động HSE sẵn sàng, TẮT nếu không)

Bit 18 HSEBYP: Bỏ qua đồng hồ tốc độ cao bên ngoài

Thiết lập và xóa bằng phần mềm để bỏ qua bộ dao động bằng đồng hồ bên ngoài. Đồng hồ bên ngoài phải được bật

với bộ bit HSEON để thiết bị sử dụng. Bit HSEBYP chỉ có thể được ghi nếu bộ dao động HSE bị tắt. 0: bộ dao động

3-25 MHz bên ngoài không được bỏ qua

1: bộ dao động 3-25 MHz bên ngoài được bỏ qua với đồng hồ bên ngoài

Bit 17 HSERDY: Cờ sẵn sàng cho đồng hồ tốc độ cao bên ngoài

Được thiết lập bằng phần cứng để chỉ ra rằng bộ dao động HSE ổn định. Bit này cần 6 chu kỳ của xung nhịp dao
động HSE để giảm xuống sau khi thiết lập lại HSEON.

0: Bộ dao động HSE chưa sẵn sàng

1: Bộ dao động HSE sẵn sàng

Bit 16 HSEON: Bật đồng hồ HSE

Thiết lập và xóa bằng phần mềm.

Được xóa bằng phần cứng để dừng bộ dao động HSE khi vào chế độ Dừng hoặc Chờ. Bit này không thể được reset nếu

bộ dao động HSE được sử dụng trực tiếp hoặc gián tiếp làm đồng hồ hệ thống.
0: Bộ dao động HSE TẮT

1: Bộ dao động HSE BẬT

Bits 15:8 HSICAL[7:0]: Hiệu chỉnh đồng hồ tốc độ cao bên trong

Các bit này được khởi tạo tự động khi khởi động.

RM0008 Phiên bản 21 133/1136

158
Machine Translated by Google

Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC) RM0008

Bit 7:3 HSITRIM[4:0]: Cắt xung nhịp tốc độ cao bên trong

Các bit này cung cấp một giá trị cắt xén bổ sung do người dùng lập trình được thêm vào các bit HSICAL[7:0]. Nó có

thể được lập trình để điều chỉnh theo sự thay đổi về điện áp và nhiệt độ ảnh hưởng đến tần số của HSI RC bên trong.

Giá trị mặc định là 16, khi được thêm vào giá trị HSICAL, sẽ cắt HSI xuống còn 8 MHz ± 1%. Bước cắt xén (Fhsitrim)

là khoảng 40 kHz giữa hai bước HSICAL liên tiếp.

Bit 2 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 1 HSIRDY: Cờ sẵn sàng cho đồng hồ tốc độ cao bên trong

Được thiết lập bằng phần cứng để chỉ ra rằng bộ dao động RC 8 MHz bên trong ổn định. Sau khi bit HSION bị xóa, HSIRDY

xuống mức thấp sau 6 chu kỳ xung nhịp của bộ dao động RC 8 MHz bên trong.

0: Bộ tạo dao động RC 8 MHz bên trong chưa sẵn sàng

1: Bộ tạo dao động RC 8 MHz bên trong đã sẵn sàng

Bit 0 HSION: Cho phép xung nhịp tốc độ cao bên trong

Thiết lập và xóa bằng phần mềm.

Được thiết lập bằng phần cứng để BẬT bộ tạo dao động RC 8 MHz bên trong khi rời khỏi chế độ Dừng hoặc Chờ hoặc trong

trường hợp bộ tạo dao động 3-25 MHz bên ngoài được sử dụng trực tiếp hoặc gián tiếp làm đồng hồ hệ thống bị hỏng.

Không thể xóa bit này nếu RC 8 MHz bên trong được sử dụng trực tiếp hoặc gián tiếp làm đồng hồ hệ thống hoặc

được chọn để trở thành đồng hồ hệ thống.

0: Bộ tạo dao động RC 8 MHz bên trong TẮT

1: Bộ tạo dao động RC 8 MHz bên trong BẬT

8.3.2 Thanh ghi cấu hình đồng hồ (RCC_CFGR)


Độ lệch địa chỉ: 0x04

Giá trị đặt lại: 0x0000 0000

Truy cập: 0 trạng thái chờ 2, truy cập từ, nửa từ và byte

1 hoặc 2 trạng thái chờ chỉ được chèn nếu truy cập xảy ra trong quá trình chuyển đổi nguồn đồng hồ.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

otgfs PLL PLL


MCO[3:0] RẤT NHIỀU[3:0]
Kín đáo Res. TRƯỚC XTRE SRC

rw rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

ADC TRƯỚC[1:0] PRE2[2:0] PRE1[2:0] HPRE[3:0] SWS[1:0] SW[1:0]

rw rw rw rw rw rw rw rw rw rw rw rw r r rw rw

134/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC)

Bit 31:27 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 26:24 MCO[3:0]: Đầu ra xung nhịp của vi điều khiển

Thiết lập và xóa bằng phần mềm.


00xx: Không có đồng hồ

0100: Đồng hồ hệ thống (SYSCLK) được chọn


0101: Đồng hồ HSI được chọn

0110: Đồng hồ HSE được chọn

0111: Đồng hồ PLL chia 2 được chọn


1000: Đồng hồ PLL2 được chọn

1001: Đồng hồ PLL3 chia cho 2 được chọn

1010: Đã chọn xung nhịp dao động 3-25 MHz bên ngoài của XT1 (cho Ethernet)

1011: Đồng hồ PLL3 được chọn (cho Ethernet)

Lưu ý: Đầu ra đồng hồ này có thể có một số chu kỳ bị cắt ngắn khi khởi động hoặc trong nguồn đồng hồ MCO

chuyển đổi.

Đồng hồ được chọn để xuất ra chân MCO không được vượt quá 50 MHz (tốc độ I/O tối đa).

Bit 22 OGFSPRE: Bộ chia tỷ lệ trước USBOTG FS

Thiết lập và xóa bằng phần mềm để tạo ra đồng hồ USBOTG FS 48 MHz. Bit này phải hợp lệ trước khi kích hoạt đồng hồOTG

FS trong thanh ghi RCC_APB1ENR. Bit này không thể bị xóa nếu đồng hồ FS-OTG được bật.

0: Đồng hồ PLL VCO (2 × PLLCLK) được chia cho 3 (PLL phải được cấu hình để xuất ra 72 MHz)

1: Đồng hồ PLL VCO (2 × PLLCLK) được chia cho 2 (PLL phải được cấu hình để xuất ra 48 MHz)

Bit 21:18 PLLMUL[3:0]: Hệ số nhân PLL

Các bit này được viết bằng phần mềm để xác định hệ số nhân PLL. Chúng chỉ có thể được ghi khi PLL bị vô hiệu hóa. 000x:
Dành riêng

0010: Đồng hồ đầu vào PLL x 4

0011: Đồng hồ đầu vào PLL x 5

0100: Đồng hồ đầu vào PLL x 6

0101: Đồng hồ đầu vào PLL x 7

0110: Đồng hồ đầu vào PLL x 8

0111: Đồng hồ đầu vào PLL x 9


10xx: Dự trữ

1100: Dự trữ

1101: Đồng hồ đầu vào PLL x 6,5


111x: Dự trữ

Thận trọng: Tần số đầu ra PLL không được vượt quá 72 MHz.

Bit 17 PLLXTPRE: LSB của hệ số chia PREDIV1

Thiết lập và xóa bằng phần mềm để chọn bit có trọng số nhỏ nhất của hệ số phân chia PREDIV1. Nó giống bit với bit(0) trong

thanh ghi RCC_CFGR2, do đó việc sửa đổi bit(0) trong thanh ghi RCC_CFGR2 sẽ thay đổi bit này tương ứng.

Nếu bit[3:1] trong thanh ghi RCC_CFGR2 không được đặt, bit này sẽ kiểm soát xem PREDIV1 có chia đồng hồ đầu vào của nó cho

2 (PLLXTPRE=1) hay không (PLLXTPRE=0).

Bit này chỉ có thể được ghi khi PLL bị vô hiệu hóa.

RM0008 Phiên bản 21 135/1136

158
Machine Translated by Google

Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC) RM0008

Bit 16 PLLSRC: Nguồn đồng hồ đầu vào PLL Được

thiết lập và xóa bằng phần mềm để chọn nguồn đồng hồ PLL. Bit này chỉ có thể được ghi khi PLL bị vô hiệu hóa.

0: Đồng hồ dao động HSI / 2 được chọn làm đồng hồ đầu vào PLL

1: Đồng hồ từ PREDIV1 được chọn làm đồng hồ đầu vào PLL

Lưu ý: Khi thay đổi nguồn đồng hồ đầu vào của PLL chính, nguồn đồng hồ gốc phải được chuyển đổi
chỉ tắt sau khi chọn nguồn đồng hồ mới.

Bit 14:14 ADCPRE[1:0]: Bộ chia tỷ lệ trước ADC

Thiết lập và xóa bằng phần mềm để chọn tần số xung nhịp cho ADC.

00: PCLK2 chia cho 2 01:

PCLK2 chia cho 4 10: PCLK2

chia cho 6 11: PCLK2 chia

cho 8

Bit 13:11 PPRE2[2:0]: Bộ chia tỷ lệ trước tốc độ cao APB (APB2)

Thiết lập và xóa bằng phần mềm để điều khiển hệ số chia của đồng hồ tốc độ cao APB (PCLK2). 0xx: HCLK không chia
100: HCLK chia cho 2 101:

HCLK chia cho 4 110: HCLK

chia cho 8 111: HCLK chia

cho 16

Bit 10:8 PPRE1[2:0]: Bộ chia tỷ lệ trước tốc độ thấp APB (APB1)

Thiết lập và xóa bằng phần mềm để điều khiển hệ số chia của đồng hồ tốc độ thấp APB (PCLK1). 0xx: HCLK không
chia 100: HCLK chia cho 2

101: HCLK chia cho 4 110:

HCLK chia cho 8 111: HCLK

chia cho 16

Thận trọng: Phần mềm phải cấu hình các bit này để đảm bảo tần số trong miền này không vượt quá 36 MHz.

136/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC)

Bit 7:4 HPRE[3:0]: Bộ đếm gộp AHB

Thiết lập và xóa bằng phần mềm để điều khiển hệ số phân chia xung nhịp AHB.
0xxx: SYSCLK không được chia

1000: SYSCLK chia cho 2

1001: SYSCLK chia cho 4

1010: SYSCLK chia cho 8

1011: SYSCLK chia cho 16

1100: SYSCLK chia cho 64

1101: SYSCLK chia cho 128

1110: SYSCLK chia cho 256

1111: SYSCLK chia cho 512

Lưu ý: Bộ đệm tìm nạp trước phải được bật khi sử dụng bộ chia tỷ lệ trước khác 1 trên đồng hồ AHB.
Tham khảo phần Đọc bộ nhớ Flash để biết thêm chi tiết.

Thận trọng: Tần số xung nhịp AHB phải ít nhất là 25 MHz khi sử dụng Ethernet.

Bit 3:2 SWS[1:0]: Trạng thái chuyển đổi đồng hồ hệ thống

Đặt và xóa bằng phần cứng để cho biết nguồn đồng hồ nào được sử dụng làm đồng hồ hệ thống.

00: Bộ dao động HSI được sử dụng làm đồng hồ hệ thống

01: Bộ dao động HSE dùng làm đồng hồ hệ thống

10: PLL được sử dụng làm đồng hồ hệ thống

11: Không áp dụng

Bit 1:0 SW[1:0]: Chuyển đổi đồng hồ hệ thống

Thiết lập và xóa bằng phần mềm để chọn nguồn SYSCLK.

Được thiết lập bởi phần cứng để buộc lựa chọn HSI khi rời khỏi chế độ Dừng và Chờ hoặc trong trường hợp bộ dao động
HSE được sử dụng trực tiếp hoặc gián tiếp làm đồng hồ hệ thống (nếu Hệ thống bảo mật đồng hồ được bật).

00: HSI được chọn làm đồng hồ hệ thống

01: HSE được chọn làm đồng hồ hệ thống

10: PLL được chọn làm đồng hồ hệ thống


11: Không được phép

8.3.3 Thanh ghi ngắt đồng hồ (RCC_CIR)

Độ lệch địa chỉ: 0x08

Giá trị đặt lại: 0x0000 0000

Truy cập: không có trạng thái chờ, truy cập từ, nửa từ và byte

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

PLL3 PLL2 PLL HSE HSI LSE LSI


CSSC
Kín đáo RDYC RDYC RDYC RDYC RDYC RDYC RDYC

wwwww w

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

PLL3 PLL2 PLL HSE HSI LSE LSI PLL3 PLL2 PLL HSE HSI LSE LSI
CSSF
Res. RDYIE RDYIE RDYIE RDYIE RDYIE RDYIE RDYIE RDYF RDYF RDYF RDYF RDYF RDYF RDYF

rw rw rw rw rw rw rw r r r r r r r r

RM0008 Phiên bản 21 137/1136

158
Machine Translated by Google

Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC) RM0008

Bit 31:24 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 23 CSSC: Xóa hệ thống bảo mật đồng hồ bị gián đoạn

Bit này được thiết lập bằng phần mềm để xóa cờ CSSF.
0: Không có

hiệu lực 1: Xóa cờ CSSF

Bit 22 PLL3RDYC: Xóa ngắt sẵn sàng PLL3 Bit này được

thiết lập bằng phần mềm để xóa cờ PLL3RDYF.


0: Không có

hiệu lực 1: Xóa cờ PLL3RDYF

Bit 21 PLL2RDYC: Xóa ngắt sẵn sàng PLL2 Bit này được

thiết lập bằng phần mềm để xóa cờ PLL2RDYF.


0: Không có

hiệu lực 1: Xóa cờ PLL2RDYF

Bit 20 PLLRDYC: Xóa ngắt sẵn sàng PLL Bit này được

thiết lập bằng phần mềm để xóa cờ PLLRDYF.


0: Không có

hiệu lực 1: Xóa cờ PLLRDYF

Bit 19 HSERDYC: Xóa ngắt sẵn sàng HSE Bit này được

thiết lập bằng phần mềm để xóa cờ HSERDYF.


0: Không có

hiệu lực 1: Xóa cờ HSERDYF

Bit 18 HSIRDYC: Xóa ngắt sẵn sàng HSI Bit này được

thiết lập bằng phần mềm để xóa cờ HSIRDYF.


0: Không có

hiệu lực 1: Xóa cờ HSIRDYF

Bit 17 LSERDYC: Xóa ngắt sẵn sàng LSE Bit này được

thiết lập bằng phần mềm để xóa cờ LSERDYF.


0: Không có

hiệu lực 1: Xóa cờ LSERDYF

Bit 16 LSIRDYC: Xóa ngắt sẵn sàng LSI Bit này

được thiết lập bằng phần mềm để xóa cờ LSIRDYF.


0: Không có

hiệu lực 1: Xóa cờ LSIRDYF

Bit 15 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 14 PLL3RDYIE: Kích hoạt ngắt sẵn sàng PLL3

Thiết lập và xóa bằng phần mềm để bật/tắt ngắt do khóa PLL3 gây ra.

0: Ngắt khóa PLL3 bị vô hiệu hóa 1:

Cho phép ngắt khóa PLL3

Bit 13 PLL2RDYIE: Kích hoạt ngắt sẵn sàng PLL2

Thiết lập và xóa bằng phần mềm để bật/tắt ngắt do khóa PLL2 gây ra.

0: Ngắt khóa PLL2 bị vô hiệu hóa 1:

Cho phép ngắt khóa PLL2

Bit 12 PLLRDYIE: Cho phép ngắt sẵn sàng PLL Thiết lập

và xóa bằng phần mềm để kích hoạt/vô hiệu hóa ngắt do khóa PLL gây ra.

0: Ngắt khóa PLL bị vô hiệu hóa

1: Cho phép ngắt khóa PLL

138/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC)

Bit 11 HSERDYIE: Cho phép ngắt sẵn sàng HSE

Thiết lập và xóa bằng phần mềm để bật/tắt ngắt do ổn định dao động 3-25 MHz bên ngoài gây ra.

0: Ngắt sẵn sàng HSE bị vô hiệu hóa

1: Đã bật ngắt sẵn sàng HSE

Bit 10 HSIRDYIE: Cho phép ngắt sẵn sàng HSI

Thiết lập và xóa bằng phần mềm để bật/tắt ngắt do ổn định bộ dao động RC 8 MHz bên trong gây ra.

0: Ngắt sẵn sàng HSI bị vô hiệu hóa

1: Đã bật ngắt sẵn sàng HSI

Bit 9 LSERDYIE: Cho phép ngắt sẵn sàng LSE

Được thiết lập và xóa bằng phần mềm để bật/tắt ngắt do ổn định bộ dao động 32 kHz bên ngoài gây ra.

0: Ngắt sẵn sàng LSE bị vô hiệu hóa

1: Đã bật ngắt sẵn sàng LSE

Bit 8 LSIRDYIE: Cho phép ngắt sẵn sàng LSI

Được thiết lập và xóa bằng phần mềm để bật/tắt ngắt do quá trình ổn định dao động RC 40 kHz bên trong
gây ra.

0: Ngắt sẵn sàng LSI bị vô hiệu hóa

1: Đã bật ngắt sẵn sàng LSI

Bit 7 CSSF: Cờ ngắt hệ thống bảo mật đồng hồ

Được thiết lập bằng phần cứng khi phát hiện lỗi trong bộ dao động 3-25 MHz bên ngoài. Nó được xóa bằng
phần mềm cài đặt bit CSSC.

0: Không có sự gián đoạn bảo mật đồng hồ do lỗi đồng hồ HSE

1: Gián đoạn bảo mật đồng hồ do lỗi đồng hồ HSE

Bit 6 PLL3RDYF: Cờ ngắt sẵn sàng PLL3

Được thiết lập bằng phần cứng khi PLL3 khóa và PLL3RDYIE được thiết lập. Nó được xóa bằng phần mềm

cài đặt bit PLL3RDYC.

0: Không có xung đồng hồ bị gián đoạn do khóa PLL3

1: Đồng hồ sẵn sàng bị gián đoạn do khóa PLL3

Bit 5 PLL2RDYF: Cờ ngắt sẵn sàng PLL2

Được đặt bằng phần cứng khi khóa PLL2 và PLL2RDYDIE được đặt. Nó được xóa bằng phần mềm cài đặt bit
PLL2RDYC.

0: Không có xung đồng hồ bị gián đoạn do khóa PLL2

1: Đồng hồ sẵn sàng bị gián đoạn do khóa PLL2

Bit 4 PLLRDYF: Cờ ngắt sẵn sàng PLL

Được đặt bằng phần cứng khi khóa PLL và PLLRDYDIE được đặt. Nó được xóa bằng phần mềm cài đặt bit
PLLRDYC.

0: Không có xung đồng hồ bị gián đoạn do khóa PLL

1: Đồng hồ sẵn sàng bị gián đoạn do khóa PLL

Bit3 HSERDYF: Cờ ngắt sẵn sàng HSE

Được đặt bằng phần cứng khi đồng hồ Tốc độ cao bên ngoài ổn định và HSERDYIE được đặt. Nó được xóa bằng

phần mềm cài đặt bit HSERDYC.

0: Không có xung nhịp sẵn sàng bị gián đoạn do bộ dao động 3-25 MHz bên ngoài gây ra

1: Ngắt đồng hồ sẵn sàng do bộ dao động 3-25 MHz bên ngoài gây ra

RM0008 Phiên bản 21 139/1136

158
Machine Translated by Google

Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC) RM0008

Bit 2 HSIRDYF: Cờ ngắt sẵn sàng HSI

Được đặt bằng phần cứng khi đồng hồ Tốc độ cao bên trong ổn định và HSIRDYIE được đặt.

Nó được xóa bằng phần mềm cài đặt bit HSIRDYC.

0: Không có xung nhịp sẵn sàng bị gián đoạn do bộ dao động RC 8 MHz bên trong gây ra

1: Ngắt đồng hồ sẵn sàng do bộ tạo dao động RC 8 MHz bên trong gây ra

Bit 1 LSERDYF: Cờ ngắt sẵn sàng LSE

Được đặt bằng phần cứng khi đồng hồ Tốc độ thấp bên ngoài trở nên ổn định và LSERDYIE được đặt.

Nó được xóa bằng phần mềm cài đặt bit LSERDYC.

0: Không có xung nhịp sẵn sàng bị gián đoạn do bộ dao động 32 kHz bên ngoài gây ra

1: Ngắt đồng hồ sẵn sàng do bộ dao động 32 kHz bên ngoài gây ra

Bit 0 LSIRDYF: Cờ ngắt sẵn sàng LSI

Được đặt bằng phần cứng khi đồng hồ Tốc độ thấp bên trong ổn định và LSIRDYIE được đặt. Nó được xóa bằng

phần mềm cài đặt bit LSIRDYC.

0: Không có xung nhịp sẵn sàng bị gián đoạn do bộ dao động RC 40 kHz bên trong gây ra

1: Ngắt đồng hồ sẵn sàng do bộ tạo dao động RC 40 kHz bên trong gây ra

140/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC)

8.3.4 Thanh ghi đặt lại ngoại vi APB2 (RCC_APB2RSTR)


Độ lệch địa chỉ: 0x0C

Giá trị đặt lại: 0x00000 0000

Truy cập: không có trạng thái chờ, truy cập từ, nửa từ và byte

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

USART1 SPI1 TIM1 ADC2 ADC1 IOPE IOPD IOPC IOPB IOPA AFIO
Res. Độ phân giải RST. RST RST RST RST Kín đáo RST RST RST RST Độ phân giải RST. RST

rw rw rw rw rw rw rw rw rw rw rw

Bit 31:15 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 14 USART1RST: Đặt lại USART1

Thiết lập và xóa bằng phần mềm.

0: Không có hiệu lực

1: Đặt lại USART1

Bit 13 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 12 SPI1RST: Đặt lại SPI 1

Thiết lập và xóa bằng phần mềm.

0: Không có hiệu lực

1: Đặt lại SPI 1

Bit 11 TIM1RST: Đặt lại bộ hẹn giờ TIM1

Thiết lập và xóa bằng phần mềm.

0: Không có hiệu lực

1: Đặt lại bộ hẹn giờ TIM1

Bit 10 ADC2RST: Đặt lại giao diện ADC 2

Thiết lập và xóa bằng phần mềm.

0: Không có hiệu lực

1: Đặt lại giao diện ADC 2

Bit 9 ADC1RST: Đặt lại giao diện ADC 1

Thiết lập và xóa bằng phần mềm.

0: Không có hiệu lực

1: Đặt lại giao diện ADC 1

Bit 8:7 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 6 IOPERST: Đặt lại cổng I/O E

Thiết lập và xóa bằng phần mềm.

0: Không có hiệu lực

1: Đặt lại cổng I:O E

Bit 5 IOPDRST: Đặt lại cổng I/O D

Thiết lập và xóa bằng phần mềm.

0: Không có hiệu lực

1: Đặt lại cổng I/O D

RM0008 Phiên bản 21 141/1136

158
Machine Translated by Google

Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC) RM0008

Bit 4 IOPCRST: Đặt lại cổng IO C

Thiết lập và xóa bằng phần mềm.


0: Không có hiệu lực

1: Đặt lại cổng I/O C

Bit 3 IOPBRST: Đặt lại cổng IO B

Thiết lập và xóa bằng phần mềm.


0: Không có hiệu lực

1: Đặt lại cổng I/O B

Bit 2 IOPARST: Đặt lại cổng I/O A

Thiết lập và xóa bằng phần mềm.


0: Không có hiệu lực

1: Đặt lại cổng I/O A

Bit 1 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 0 AFIORST: Đặt lại I/O chức năng thay thế

Thiết lập và xóa bằng phần mềm.


0: Không có hiệu lực

1: Đặt lại chức năng thay thế

8.3.5 Thanh ghi đặt lại ngoại vi APB1 (RCC_APB1RSTR)


Độ lệch địa chỉ: 0x10

Giá trị đặt lại: 0x0000 0000

Truy cập: không có trạng thái chờ, truy cập từ, nửa từ và byte

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

ĐẮC LÒ NÒ BKP CAN2 CAN1 I2C2 I2C1 UART5 UART4 USART3 USART2
Res.
Kín đáo RST RST RST RST RST Kín đáo RST RST RST RST RST RST

rw rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

SPI3 SPI2 WWDG TIM7 TIM6 TIM5 TIM4 TIM3 TIM2


RST RST Kín đáo RST Kín đáo RST RST RST RST RST RST

rw rw rw rw rw rw rw rw rw

Bit 31:30 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 29 DACRST: Đặt lại giao diện DAC

Thiết lập và xóa bằng phần mềm.


0: Không có hiệu lực

1: Đặt lại giao diện DAC

Bit 28 PWRRST: Đặt lại giao diện nguồn

Thiết lập và xóa bằng phần mềm.


0: Không có hiệu lực

1: Đặt lại giao diện nguồn

Bit 27 BKPRST: Đặt lại giao diện dự phòng

Thiết lập và xóa bằng phần mềm.


0: Không có hiệu lực

1: Đặt lại giao diện sao lưu

142/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC)

Bit 26 CAN2RST: Đặt lại CAN2

Thiết lập và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại CAN2

Bit 25 CAN1RST: Đặt lại CAN1

Thiết lập và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại CAN1

Bit 24:23 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 22 I2C2RST: Đặt lại I2C 2

Thiết lập và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại I2C 2

Bit 21 I2C1RST: Đặt lại I2C1

Thiết lập và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại I2C 1

Bit 20 UART5RST: Đặt lại USART 5

Thiết lập và xóa bằng phần mềm.

0: Không có

tác dụng 1: Đặt lại USART 5

Bit 19 UART4RST: Đặt lại USART 4

Thiết lập và xóa bằng phần mềm.

0: Không có

tác dụng 1: Đặt lại USART 4

Bit 18 USART3RST: Đặt lại USART 3

Thiết lập và xóa bằng phần mềm.

0: Không có

tác dụng 1: Đặt lại USART 3

Bit 17 USART2RST: Đặt lại USART 2

Thiết lập và xóa bằng phần mềm.

0: Không có

tác dụng 1: Đặt lại USART 2

Bits 16 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 15 SPI3RST: Đặt lại SPI3

Thiết lập và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại SPI 3

Bit 14 SPI2RST: Đặt lại SPI2

Thiết lập và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại SPI2

Bit 13:12 Dành riêng, phải được giữ ở giá trị đặt lại.

RM0008 Phiên bản 21 143/1136

158
Machine Translated by Google

Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC) RM0008

Bit 11 WWDGRST: Thiết lập lại cơ quan giám sát cửa sổ Thiết lập

và xóa bằng phần mềm.

0: Không có tác

dụng 1: Đặt lại cơ quan giám sát cửa sổ

Bit 10:6 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 5 TIM7RST: Đặt lại bộ định thời 7

Thiết lập và xóa bằng phần mềm.

0: Không có tác dụng

1: Đặt lại bộ đếm thời gian 7

Bit 4 TIM6RST: Đặt lại bộ định thời 6

Thiết lập và xóa bằng phần mềm.

0: Không có tác dụng

1: Đặt lại bộ đếm thời gian 6

Bit 3 TIM5RST: Đặt lại bộ định thời 5

Thiết lập và xóa bằng phần mềm.

0: Không có tác dụng

1: Đặt lại bộ đếm thời gian 5

Bit 2 TIM4RST: Đặt lại bộ định thời 4

Thiết lập và xóa bằng phần mềm.

0: Không có tác dụng

1: Đặt lại bộ đếm thời gian 4

Bit 1 TIM3RST: Đặt lại bộ định thời 3

Thiết lập và xóa bằng phần mềm.

0: Không có tác dụng

1: Đặt lại bộ đếm thời gian 3

Bit 0 TIM2RST: Đặt lại bộ định thời 2

Thiết lập và xóa bằng phần mềm.

0: Không có tác dụng

1: Đặt lại bộ đếm thời gian 2

144/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC)

8.3.6 Thanh ghi kích hoạt đồng hồ ngoại vi AHB (RCC_AHBENR)

Độ lệch địa chỉ: 0x14

Giá trị đặt lại: 0x0000 0014

Truy cập: không có trạng thái chờ, truy cập từ, nửa từ và byte

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

ETHMAC
Kín đáo RXEN

rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

ETHMAC ETHMA otgfs SRAM DMA2 DMA1


CRCEN FLITFEN
TXEN CEN Res. VN Kín đáo Res. Res. VN VN VN

rw rw rw rw rw rw rw rw

Bit 31:17 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 16 ETHMACRXEN: Kích hoạt đồng hồ Ethernet MAC RX

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ Ethernet MAC RX bị tắt

1: Đã bật đồng hồ Ethernet MAC RX

Lưu ý: Ở chế độ RMII, nếu đồng hồ này được bật thì đồng hồ RMII của MAC cũng được bật.

Bit 15 ETHMACTXEN: Kích hoạt đồng hồ Ethernet MAC TX

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ Ethernet MAC TX bị tắt

1: Đã bật đồng hồ Ethernet MAC TX

Lưu ý: Ở chế độ RMII, nếu đồng hồ này được bật thì đồng hồ RMII của MAC cũng được bật.

Bit 14 ETHMACEN: Kích hoạt đồng hồ Ethernet MAC

Thiết lập và xóa bằng phần mềm. Việc lựa chọn giao diện PHY (MII/RMII) phải được thực hiện trước khi bật đồng

hồ MAC.
0: Đồng hồ Ethernet MAC bị tắt

1: Đã bật đồng hồ Ethernet MAC

Bit 13 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 12 otgfsen: bật đồng hồ USB otg fs

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ USBOTG FS bị vô hiệu hóa

1: Đã bật đồng hồ USBOTG FS

Bit 11:7 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 6 CRCEN: Cho phép đồng hồ CRC

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ CRC bị vô hiệu hóa

1: Đã bật đồng hồ CRC

Bit 5 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 4 FLITFEN: Kích hoạt đồng hồ FLITF

Thiết lập và xóa bằng phần mềm để tắt/bật đồng hồ FLITF trong chế độ ngủ.

0: Đồng hồ FLITF bị tắt trong chế độ Ngủ

1: Đồng hồ FLITF được bật trong chế độ Ngủ

RM0008 Phiên bản 21 145/1136

158
Machine Translated by Google

Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC) RM0008

Bit 3 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 2 SRAMEN: Cho phép đồng hồ giao diện SRAM

Thiết lập và xóa bằng phần mềm để tắt/bật đồng hồ giao diện SRAM trong chế độ Ngủ.

0: Đồng hồ giao diện SRAM bị tắt trong chế độ Ngủ

1: Đồng hồ giao diện SRAM được bật trong chế độ Ngủ

Bit 1 DMA2EN: Kích hoạt đồng hồ DMA2

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ DMA2 bị tắt

1: Đã bật đồng hồ DMA2

Bit 0 DMA1EN: Kích hoạt đồng hồ DMA1

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ DMA1 bị tắt

1: Đã bật đồng hồ DMA1

8.3.7 Thanh ghi kích hoạt đồng hồ ngoại vi APB2 (RCC_APB2ENR)

Địa chỉ: 0x18

Giá trị đặt lại: 0x0000 0000

Truy cập: truy cập từ, nửa từ và byte

Không có trạng thái chờ, ngoại trừ trường hợp truy cập xảy ra trong khi đang diễn ra truy cập vào thiết bị ngoại vi

trong miền APB2. Trong trường hợp này, trạng thái chờ được chèn vào cho đến khi quá trình truy cập vào thiết bị ngoại vi
APB2 hoàn tất.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

USART SPI1 TIM1 ADC2 ADC1 IOPE IOPD IOPC IOPB IOPA AFIO
Res. 1EN Res. VN VN VN VN Kín đáo VN VN VN VN VN Res. VN

rw rw rw rw rw rw rw rw rw rw rw

Bit 31:15 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 14 USART1EN: Kích hoạt đồng hồ USART1

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ USART1 bị tắt

1: Đã bật đồng hồ USART1

Bit 13 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 12 SPI1EN: Kích hoạt đồng hồ SPI 1

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ SPI 1 bị tắt

1: Đã bật đồng hồ SPI 1

Bit 11 TIM1EN: Bật đồng hồ hẹn giờ TIM1

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ hẹn giờ TIM1 bị tắt

1: Đã bật đồng hồ hẹn giờ TIM1

146/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC)

Bit 10 ADC2EN: Cho phép đồng hồ giao diện ADC 2

Thiết lập và xóa bằng phần mềm.

0: Đồng hồ giao diện ADC 2 bị vô hiệu hóa 1:

Đồng hồ giao diện ADC 2 được bật

Bit 9 ADC1EN: Cho phép đồng hồ giao diện ADC 1

Thiết lập và xóa bằng phần mềm.

0: Đã tắt giao diện ADC 1 1: Đã bật

đồng hồ giao diện ADC 1

Bit 8:7 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 6 IOPEEN: Cho phép đồng hồ E của cổng I/O Thiết

lập và xóa bằng phần mềm.

0: Đồng hồ E cổng I/O bị vô hiệu hóa

1: Đồng hồ E cổng I/O được bật

Bit 5 IOPDEN: Bật đồng hồ cổng I/O D Thiết lập và xóa

bằng phần mềm.

0: Đồng hồ cổng D của I/O bị vô hiệu hóa

1: Đồng hồ của cổng I/O D bị vô hiệu hóa

Bit 4 IOPCEN: Cho phép đồng hồ cổng I/O C Thiết lập

và xóa bằng phần mềm.

0: Đồng hồ cổng I/O C bị vô hiệu hóa

1: Đồng hồ cổng C I/O được bật

Bit 3 IOPBEN: Kích hoạt đồng hồ cổng B I/O Thiết lập

và xóa bằng phần mềm.

0: Đồng hồ cổng B bị vô hiệu hóa 1:

Đồng hồ của cổng I/O B bị vô hiệu hóa

Bit 2 IOPAEN: Cổng I/O Kích hoạt đồng hồ Thiết lập

và xóa bằng phần mềm.

0: Cổng I/O Đồng hồ bị vô hiệu hóa

1: Cổng I/O Đồng hồ được bật

Bit 1 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 0 AFIOEN: Kích hoạt đồng hồ I/O chức năng thay thế

Thiết lập và xóa bằng phần mềm.

0: Đồng hồ I/O chức năng thay thế bị vô hiệu hóa 1:

Đồng hồ I/O chức năng thay thế được bật

RM0008 Phiên bản 21 147/1136

158
Machine Translated by Google

Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC) RM0008

8.3.8 Thanh ghi kích hoạt đồng hồ ngoại vi APB1 (RCC_APB1ENR)


Địa chỉ: 0x1C

Giá trị đặt lại: 0x0000 0000

Truy cập: truy cập từ, nửa từ và byte

Không có trạng thái chờ, trừ khi việc truy cập xảy ra trong khi quyền truy cập vào thiết bị ngoại vi trên miền APB1

đang diễn ra. Trong trường hợp này, trạng thái chờ được chèn cho đến khi việc truy cập vào thiết bị ngoại vi
APB1 này hoàn tất.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

ĐẮC LÒ NÒ BKP CAN2 CAN1 I2C2 I2C1 UART5E UART4E USART3 USART2
Kín đáo VN VN VN VN VN Kín đáo VN VN N N VN VN Res.
rw rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

SPI3 SPI2 WWD TIM7 TIM6 TIM5 TIM4 TIM3 TIM2


VN VN Kín đáo GEN Kín đáo VN VN VN VN VN VN

rw rw rw rw rw rw rw rw rw

Bit 31:30 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 29 DACEN: Cho phép đồng hồ giao diện DAC

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ giao diện DAC bị tắt

1: Kích hoạt đồng hồ giao diện DAC

Bit 28 PWREN: Kích hoạt đồng hồ giao diện nguồn

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ giao diện nguồn bị tắt

1: Bật đồng hồ giao diện nguồn

Bit 27 BKPEN: Kích hoạt đồng hồ giao diện dự phòng

Thiết lập và xóa bằng phần mềm.

0: Đồng hồ giao diện sao lưu bị tắt

1: Đã bật đồng hồ giao diện sao lưu

Bit 26 CAN2EN: Kích hoạt đồng hồ CAN2

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ CAN2 bị tắt

1: Đã bật đồng hồ CAN2

Bit 25 CAN1EN: Kích hoạt đồng hồ CAN1

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ CAN1 bị tắt

1: Đã bật đồng hồ CAN1

Bit 24:23 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 22 I2C2EN: Kích hoạt đồng hồ I2C 2

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ I2C 2 bị tắt

1: Đã bật đồng hồ I2C 2

148/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC)

Bit 21 I2C1EN: Kích hoạt đồng hồ I2C 1

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ I2C 1 bị tắt 1:

Đồng hồ I2C 1 được bật

Bit 20 UART5EN: Kích hoạt đồng hồ USART 5

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ USART 5 bị tắt 1: Đồng

hồ USART 5 được bật

Bit 19 UART4EN: Kích hoạt đồng hồ USART 4

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ USART 4 bị tắt 1: Đồng

hồ USART 4 được bật

Bit 18 USART3EN: Kích hoạt đồng hồ USART 3

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ USART 3 bị tắt 1: Đồng

hồ USART 3 được bật

Bit 17 USART2EN: Kích hoạt đồng hồ USART 2

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ USART 2 bị tắt 1: Đồng

hồ USART 2 được bật

Bits 16 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 15 SPI3EN: Kích hoạt đồng hồ SPI 3

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ SPI 3 bị tắt 1:

Đồng hồ SPI 3 được bật

Bit 14 SPI2EN: Kích hoạt đồng hồ SPI 2

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ SPI 2 bị tắt 1:

Đồng hồ SPI 2 được bật

Bit 13:12 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 11 WWDGEN: Bật đồng hồ giám sát cửa sổ Đặt và xóa bằng phần

mềm.

0: Đồng hồ giám sát cửa sổ bị tắt 1: Đã bật

đồng hồ giám sát cửa sổ

Bit 10:6 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 5 TIM7EN: Kích hoạt đồng hồ hẹn giờ 7

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ hẹn giờ 7 bị vô hiệu hóa

1: Đã bật đồng hồ hẹn giờ 7

Bit 4 TIM6EN: Kích hoạt đồng hồ hẹn giờ 6

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ hẹn giờ 6 bị vô hiệu hóa

1: Đã bật đồng hồ hẹn giờ 6

RM0008 Phiên bản 21 149/1136

158
Machine Translated by Google

Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC) RM0008

Bit 3 TIM5EN: Kích hoạt đồng hồ hẹn giờ 5

Thiết lập và xóa bằng phần mềm.

0: Đồng hồ hẹn giờ 5 bị vô hiệu hóa

1: Đã bật đồng hồ hẹn giờ 5

Bit 2 TIM4EN: Kích hoạt đồng hồ hẹn giờ 4

Thiết lập và xóa bằng phần mềm.

0: Đồng hồ hẹn giờ 4 bị vô hiệu hóa

1: Đã bật đồng hồ hẹn giờ 4

Bit 1 TIM3EN: Kích hoạt đồng hồ hẹn giờ 3

Thiết lập và xóa bằng phần mềm.

0: Đồng hồ hẹn giờ 3 bị vô hiệu hóa

1: Đã bật đồng hồ hẹn giờ 3

Bit 0 TIM2EN: Kích hoạt đồng hồ hẹn giờ 2

Thiết lập và xóa bằng phần mềm.

0: Đồng hồ hẹn giờ 2 bị vô hiệu hóa

1: Đã bật đồng hồ hẹn giờ 2

8.3.9 Đăng ký kiểm soát miền dự phòng (RCC_BDCR)


Địa chỉ: 0x20

Giá trị đặt lại: 0x0000 0000, đặt lại bằng Đặt lại tên miền dự phòng.

Truy cập: 0 trạng thái chờ 3, truy cập từ, nửa từ và byte

Trạng thái chờ được chèn vào trong trường hợp truy cập liên tiếp vào thanh ghi này.

Ghi chú: Các bit LSEON, LSEBYP, RTCSEL và RTCEN của thanh ghi điều khiển miền dự phòng (RCC_BDCR) nằm trong
miền dự phòng. Kết quả là, sau khi Đặt lại, các bit này được bảo vệ ghi và bit DBP trong thanh ghi
Điều khiển nguồn (PWR_CR) phải được đặt trước khi chúng có thể được sửa đổi. Tham khảo Phần 6: Thanh ghi
dự phòng (BKP) để biết thêm thông tin.
Các bit này chỉ được đặt lại sau khi Đặt lại miền dự phòng (xem Phần 8.1.3: Đặt lại miền dự phòng). Bất kỳ
thiết lập lại bên trong hoặc bên ngoài nào sẽ không có bất kỳ ảnh hưởng nào đến các bit này.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

BDRST
Kín đáo
rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

RTC LSE LSE


RTCSEL[1:0] LSEON
VN Kín đáo Kín đáo BYP RDY

rw rw rw rw r rw

150/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC)

Bit 31:17 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 16 BDRST: Thiết lập lại phần mềm miền sao lưu Thiết

lập và xóa bằng phần mềm.


0: Reset chưa được kích

hoạt 1: Reset toàn bộ miền Backup

Bit 15 RTCEN: Kích hoạt đồng hồ RTC

Thiết lập và xóa bằng phần mềm.


0: Đồng hồ RTC bị tắt 1:

Đồng hồ RTC được bật

Bit 14:10 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 9:8 RTCSEL[1:0]: Lựa chọn nguồn đồng hồ RTC

Được thiết lập bằng phần mềm để chọn nguồn xung nhịp cho RTC. Khi nguồn đồng hồ RTC đã được chọn, nó không

thể thay đổi được nữa trừ khi miền Sao lưu được đặt lại. Bit BDRST có thể được sử dụng để đặt lại các bit

RTCSEL[1:0].
00: Không có

đồng hồ 01: Đồng hồ dao động LSE được sử dụng làm

đồng hồ RTC 10: Đồng hồ dao động LSI được sử dụng

làm đồng hồ RTC 11: Đồng hồ dao động HSE chia cho 128 dùng làm đồng hồ RTC

Bit 7:3 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 2 LSEBYP: Bỏ qua bộ tạo dao động tốc độ thấp bên ngoài Được

thiết lập và xóa bằng phần mềm để bỏ qua bộ tạo dao động ở chế độ gỡ lỗi. Bit này chỉ có thể được ghi khi bộ
tạo dao động 32 kHz bên ngoài bị tắt.

0: Bộ dao động LSE không được bỏ qua

1: Bộ dao động LSE bị bỏ qua

Bit 1 LSERDY: Bộ dao động tốc độ thấp bên ngoài sẵn sàng Được

thiết lập và xóa bằng phần cứng để cho biết khi nào bộ dao động 32 kHz bên ngoài ổn định. Sau khi bit LSEON

bị xóa, LSERDY xuống mức thấp sau 6 chu kỳ xung nhịp của bộ tạo dao động tốc độ thấp bên ngoài 0: Bộ tạo

dao

động 32 kHz bên ngoài chưa sẵn sàng 1: Bộ tạo

dao động 32 kHz bên ngoài sẵn sàng

Bit 0 LSEON: Cho phép bộ dao động tốc độ thấp bên ngoài

Thiết lập và xóa bằng phần mềm.


0: Bộ tạo dao động 32 kHz bên ngoài TẮT 1: BẬT

bộ tạo dao động 32 kHz bên ngoài

RM0008 Phiên bản 21 151/1136

158
Machine Translated by Google

Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC) RM0008

8.3.10 Thanh ghi điều khiển/trạng thái (RCC_CSR)

Địa chỉ: 0x24

Giá trị đặt lại: 0x0C00 0000, đặt lại bằng Đặt lại hệ thống, ngoại trừ cờ đặt lại chỉ bằng Đặt lại nguồn.

Truy cập: 0 trạng thái chờ 3, truy cập từ, nửa từ và byte

Trạng thái chờ được chèn vào trong trường hợp truy cập liên tiếp vào thanh ghi này.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

LPWR WWDG IWDG SFT por GHIM


RMVF
RSTF RSTF RSTF RSTF RSTF RSTF Res. Kín đáo
rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

LSI
LSION
Kín đáo RDY

r rw

Bit 31 LPWRRSTF: Cờ đặt lại nguồn điện thấp

Được thiết lập bởi phần cứng khi xảy ra quá trình thiết lập lại quản lý nguồn điện thấp. Nó được xóa bằng cách ghi vào bit
RMVF.

0: Không xảy ra việc thiết lập lại quản lý nguồn điện thấp

1: Đã xảy ra thiết lập lại quản lý nguồn điện thấp

Để biết thêm thông tin về việc đặt lại quản lý nguồn điện thấp, hãy tham khảo Đặt lại quản lý nguồn điện thấp.

Bit 30 WWDGRSTF: Cờ đặt lại cơ quan giám sát cửa sổ

Được thiết lập bằng phần cứng khi xảy ra quá trình thiết lập lại cơ quan giám sát cửa sổ. Nó được xóa bằng cách ghi vào bit
RMVF.

0: Không xảy ra việc thiết lập lại cơ quan giám sát cửa sổ

1: Đã xảy ra quá trình thiết lập lại cơ quan giám sát cửa sổ

Bit 29 IWDGRSTF: Cờ đặt lại cơ quan giám sát độc lập

Được thiết lập bằng phần cứng khi xảy ra quá trình thiết lập lại cơ quan giám sát độc lập từ miền VDD . Nó được xóa

bằng cách ghi vào bit RMVF.

0: Không xảy ra việc thiết lập lại cơ quan giám sát

1: Đã xảy ra thiết lập lại cơ quan giám sát

Bit 28 SFRTSTF: Cờ reset phần mềm

Được thiết lập bằng phần cứng khi xảy ra quá trình thiết lập lại phần mềm. Nó được xóa bằng cách ghi vào bit RMVF.
0: Không xảy ra cài đặt lại phần mềm

1: Đã xảy ra cài đặt lại phần mềm

Bit 27 PORRSTF: Cờ đặt lại POR/PDR

Được thiết lập bằng phần cứng khi xảy ra quá trình thiết lập lại POR/PDR. Nó được xóa bằng cách ghi vào bit RMVF.

0: Không xảy ra cài đặt lại POR/PDR

1: Đã xảy ra thiết lập lại POR/PDR

Bit 26 PINRSTF: Cờ đặt lại mã PIN

Được thiết lập bằng phần cứng khi xảy ra việc thiết lập lại từ chân NRST. Nó được xóa bằng cách ghi vào bit RMVF.

0: Không xảy ra reset từ chân NRST

1: Xảy ra reset từ chân NRST

Bit 25 Dành riêng, phải được giữ ở giá trị đặt lại.

152/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC)

Bit 24 RMVF: Xóa cờ reset

Đặt bằng phần mềm để xóa cờ reset.


0: Không có hiệu lực

1: Xóa cờ reset

Bit 23:2 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 1 LSIRDY: Bộ dao động tốc độ thấp bên trong đã sẵn sàng

Được thiết lập và xóa bằng phần cứng để cho biết khi nào bộ dao động RC 40 kHz bên trong ổn định.

Sau khi bit LSION bị xóa, LSIRDY xuống mức thấp sau 3 chu kỳ xung nhịp của bộ dao động RC 40 kHz bên trong.

0: Bộ tạo dao động RC 40 kHz bên trong chưa sẵn sàng

1: Bộ tạo dao động RC 40 kHz bên trong đã sẵn sàng

Bit 0 LSION: Cho phép bộ dao động tốc độ thấp bên trong

Thiết lập và xóa bằng phần mềm.


0: Bộ tạo dao động RC 40 kHz bên trong TẮT

1: Bộ tạo dao động RC 40 kHz bên trong BẬT

8.3.11 Thanh ghi đặt lại đồng hồ ngoại vi AHB (RCC_AHBRSTR)

Độ lệch địa chỉ: 0x28

Giá trị đặt lại: 0x0000 0000

Truy cập: không có trạng thái chờ, truy cập từ, nửa từ và byte

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

ETHMAC otgfsr
RST ST
Res. Res. Kín đáo
rw rw

Bit 31:15 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 14 ETHMACRST Thiết lập lại MAC Ethernet

Thiết lập và xóa bằng phần mềm.


0: Không có hiệu lực

1: Đặt lại MAC ETHERNET

Bit 13 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 12 OTGFSRST Thiết lập lại USBOTG FS

Thiết lập và xóa bằng phần mềm.


0: Không có hiệu lực

1: Đặt lại USBOTG FS

Bit 11:0 Dự trữ, phải được giữ ở giá trị đặt lại.

RM0008 Phiên bản 21 153/1136

158
Machine Translated by Google

Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC) RM0008

8.3.12 Thanh ghi cấu hình đồng hồ2 (RCC_CFGR2)


Độ lệch địa chỉ: 0x2C

Giá trị đặt lại: 0x0000 0000

Truy cập: không có trạng thái chờ, truy cập từ, nửa từ và byte

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

I2S3SR I2S2SR TRƯỚC

Kín đáo C C 1SRC

rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

PLL3MUL[3:0] PLL2MUL[3:0] PREDIV2[3:0] PREDIV1[3:0]


rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:19 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 18 I2S3SRC: Nguồn xung nhịp I2S3

Thiết lập và xóa bằng phần mềm để chọn nguồn xung nhịp I2S3. Bit này phải hợp lệ trước khi kích hoạt
đồng hồ I2S3.

0: Đồng hồ hệ thống (SYSCLK) được chọn làm mục nhập đồng hồ I2S3

1: Đồng hồ PLL3 VCO được chọn làm mục nhập đồng hồ I2S3

Bit 17 I2S2SRC: Nguồn xung nhịp I2S2

Thiết lập và xóa bằng phần mềm để chọn nguồn xung nhịp I2S2. Bit này phải hợp lệ trước khi kích hoạt
đồng hồ I2S2.

0: Đồng hồ hệ thống (SYSCLK) được chọn làm mục nhập đồng hồ I2S2

1: Đồng hồ PLL3 VCO được chọn làm mục nhập đồng hồ I2S2

Bit 16 PREDIV1SRC: Nguồn xung nhịp đầu vào PREDIV1

Thiết lập và xóa bằng phần mềm để chọn nguồn xung nhịp PREDIV1. Bit này chỉ có thể được ghi khi PLL bị
vô hiệu hóa.

0: Đồng hồ dao động HSE được chọn làm mục nhập đồng hồ PREDIV1

1: PLL2 được chọn làm mục nhập đồng hồ PREDIV1

Bit 15:12 PLL3MUL[3:0]: Hệ số nhân PLL3

Thiết lập và xóa bằng phần mềm để điều khiển hệ số nhân PLL3. Các bit này chỉ có thể được ghi khi PLL3 bị
vô hiệu hóa.
00xx: Đã đặt trước

010x: Dự trữ

0110: Mục đồng hồ PLL3 x 8

0111: Mục đồng hồ PLL3 x 9

1000: Mục đồng hồ PLL3 x 10

1001: Mục đồng hồ PLL3 x 11

1010: Mục đồng hồ PLL3 x 12

1011: Mục đồng hồ PLL3 x 13

1100: Mục đồng hồ PLL3 x 14


1101: Dự trữ

1110: Mục đồng hồ PLL3 x 16

1111: Mục đồng hồ PLL3 x 20

154/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC)

Bit 11:8 PLL2MUL[3:0]: Hệ số nhân PLL2 được thiết lập và xóa

bằng phần mềm để điều khiển hệ số nhân PLL2. Các bit này chỉ có thể được ghi khi PLL2 bị vô hiệu hóa.
00xx: Dự trữ 010x: Dự trữ 0110:
Mục đồng hồ PLL2

x 8 0111: Mục đồng

hồ PLL2 x 9 1000: Mục nhập đồng

hồ PLL2 x 10 1001: Mục nhập

đồng hồ PLL2 x 11 1010: Mục nhập

đồng hồ PLL2 x 12 1011: Mục nhập

đồng hồ PLL2 x 13 1100: Mục đồng

hồ PLL2 x 14 1101: Dự trữ 1110:

Mục đồng hồ PLL2 x 16 1111: Mục


đồng hồ PLL2 x 20

Bit 7:4 PREDIV2[3:0]: Hệ số chia PREDIV2 Thiết lập và xóa

bằng phần mềm để chọn hệ số chia PREDIV2. Các bit này chỉ có thể được ghi khi cả PLL2 và PLL3 đều bị vô
hiệu hóa.

0000: Đồng hồ đầu vào PREDIV2 không chia 0001:

Đồng hồ đầu vào PREDIV2 chia cho 2 0010: Đồng

hồ đầu vào PREDIV2 chia cho 3 0011: Đồng hồ đầu

vào PREDIV2 chia cho 4 0100: Đồng hồ đầu vào

PREDIV2 chia cho 5 0101: Đồng hồ đầu vào PREDIV2

chia cho 6 0110: PREDIV2 Đồng hồ đầu vào chia

cho 7 0111: Đồng hồ đầu vào PREDIV2 chia cho 8

1000: Đồng hồ đầu vào PREDIV2 chia cho 9 1001:

Đồng hồ đầu vào PREDIV2 chia cho 10 1010: Đồng

hồ đầu vào PREDIV2 chia cho 11 1011: Đồng hồ đầu

vào PREDIV2 chia cho 12 1100: Đồng hồ đầu vào

PREDIV2 chia cho 13 1101: Đồng hồ đầu vào PREDIV2

chia cho 14 1110: Đồng hồ đầu vào PREDIV2 chia

cho 15 1111: Đồng hồ đầu vào PREDIV2 chia cho 16

RM0008 Phiên bản 21 155/1136

158
Machine Translated by Google

Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC) RM0008

Bits 3:0 PREDIV1[3:0]: Hệ số chia PREDIV1 Thiết

lập và xóa bằng phần mềm để chọn hệ số chia PREDIV1. Các bit này chỉ có thể được ghi khi PLL
bị vô hiệu hóa.

Lưu ý: Bit(0) giống với bit(17) trong thanh ghi RCC_CFGR, do đó việc sửa đổi bit(17) trong
thanh ghi RCC_CFGR sẽ thay đổi Bit(0) tương ứng.
0000: Đồng hồ đầu vào PREDIV1 không chia
0001: Đồng hồ đầu vào PREDIV1 chia cho 2
0010: Đồng hồ đầu vào PREDIV1 chia cho 3
0011: Đồng hồ đầu vào PREDIV1 chia cho 4
0100: Đồng hồ đầu vào PREDIV1 chia cho 5
0101: Đồng hồ đầu vào PREDIV1 chia cho 6
0110: PREDIV1 Đồng hồ đầu vào chia cho 7
0111: Đồng hồ đầu vào PREDIV1 chia cho 8
1000: Đồng hồ đầu vào PREDIV1 chia cho 9
1001: Đồng hồ đầu vào PREDIV1 chia cho 10
1010: Đồng hồ đầu vào PREDIV1 chia cho 11
1011: Đồng hồ đầu vào PREDIV1 chia cho 12
1100: Đồng hồ đầu vào PREDIV1 chia cho 13
1101: Đồng hồ đầu vào PREDIV1 chia cho 14
1110: Đồng hồ đầu vào PREDIV1 chia cho 15
1111: Đồng hồ đầu vào PREDIV1 chia cho 16

8.3.13 Bản đồ đăng ký RCC

Bảng sau đây cung cấp bản đồ thanh ghi RCC và các giá trị đặt lại.

Bảng 19. Sơ đồ thanh ghi RCC và giá trị đặt lại

1
5
ố8
s

7
6

0
3
9

2
4
11
91
81
71
61
51
41

21

01
13
03
92
82

62
52
42
32
22
12

Đăng ký bù đắp
3
7

RCC_CR Đặt lại HSICAL[7:0] HSITRIM[4:0]


0x000 Kín đáo NOISH
NOLP

NOESH
NOSSC

YDRISH
PYBESH
LB
P

LB
P

LR
P

YDRESH

rved
LR
P

LR
P
LẬ

LẬ

LD
LD

LD
3T

2T

íđ
K
3Y

2Y


o

Đặt lại giá trị 000000 0000 xxxxxxxx10000 11

ADC
RẤT NHIỀU PPR2 PPR1 SWS SW
RCC_CFGR MCO [3:0] TRƯỚC HPRE[3:0]
0x004 Kín đáo [3:0] [2:0] [2:0] [1:0] [1:0]
CRSLLP

[1:0]
ERPTXLLP
erpsfto

o íđ
K

Đặt lại giá trị 0000 000000000000000000000000

RCC_CIR
FSSC
CSSC

0x008 Kín đáo


FYDRISL
CYDRISL

FYDRISH
CYDRISH

FYDRLLP
EIYDRISL
CYDRLLP

FYDRESL
EIYDRISH
CYDRESL

FYDRESH
EIYDRLLP
CYDRESH

EIYDRESL

FYDR3LLP

FYDR2LLP
EIYDRESH
CYDR3LLP

CYDR2LLP

EIYDR3LLP

EIYDR2LLP

o íđ
K

Đặt lại giá trị 00000000 000000000000000

156/1136 RM0008 Phiên bản 21


0x01C
0x00C

0x028
0x024
0x020
0x014
0x010
RM0008

Đăng ký bù đắp

0x018 RCC_APB2ENR

RCC_CSR
RCC_BDCR
RCC_AHBENR

RCC_AHBSTR
RCC_APB2RSTR

Đặt lại giá trị


Đặt lại giá trị
Đặt lại giá trị
Đặt lại giá trị
Đặt lại giá trị
Machine Translated by Google

FTSRWPL

Đặt lại RCC_APB1ENR


Đặt lại RCC_APB1RSTR
13
FTSRGDWW

rved
rved
03
FTSRGDWI NECAD TSRCAD
92
FTSRFS NERWP TSRRWP

Đặt lại giá trị 000011 0


82
7

FTSROP NEPKB TSRPKB

FTSRNIP NE2NAC TSR2NAC


62

o íđ
K NE1NAC TSR1ỂH
ÓTC

52

Giá trị đặt lại 00000 000000 00 0


Giá trị đặt lại 00000 000000 00 0
FVMR
42

o íđ
K ná
o íđ
K

Kín đáo
Kín đáo
32

Kín đáo
Kín đáo
Kín đáo

NE2C2I TSR2C2I
22
NE1C2I TSR1C2I
12
0

NE5TRAU TSR5TRAU

NE4TRAU TSR4TRAU
91
NE3TRASU TSR3TRASU
81

RM0008 Phiên bản 21


NE2TRASU TSR2TRASU
71
TSRDB ná
o íđ
K NEXRCAMHTE ná
o íđ
K
61

00
NECTR NE3IPS NEXTCAMHTE TSR3IPS
51
000 0
TSRCAMHTE NE2IPS NE1TRASU NECAMHTE TSR2IPS TSR1TRASU

0
41
3


o íđ
K ná
o íđ
K ná
o íđ
K ná
o íđ
K

o íđ
K ná
o íđ
K

tsrsfto NE1IPS NESFTO TSR1IPS

0
Kín đáo
21

Kín đáo
NEGDWW NE1EMIT TSRGDWW TSR1EMIT
11
NE2CDA TSR2CDA
0 0000 00000 0 01
0 0000 00000 0
Bảng 19. Sơ đồ thanh ghi RCC và giá trị đặt lại (tiếp theo)

NE1CDA TSR1CDA

00
]0:
C1
L T[
E R
S
9
Kín đáo

ố8
s

o íđ
K ná
o íđ
K

Kín đáo
Kín đáo

7
NEEPOI NECRC TSREPOI
0

6
NE7MIT NEDPOI ná
o íđ
K TSR7MIT TSRDPOI

Kín đáo
5

Kín đáo
NE6MIT NECPOI NEFTILF TSR6MIT TSRCPOI
4
000000
000000

NE5MIT NEBPOI ná
o íđ
K TSR5MIT TSRBPOI
3
1 100

PYBESL NE4MIT NEAPOI NEMARS TSR4MIT TSRAPOI


2

000
YDRISL YDRESL NE3MIT ná
o íđ
K NEA2MD TSR3MIT ná
o íđ
K
Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC)

00
1
NOISL NOESL NE2MIT NEOIFA NEA1MD TSR2MIT CỚƯRT

157/1136
0

158
Machine Translated by Google

Thiết bị đường kết nối: reset và điều khiển xung nhịp (RCC) RM0008

Bảng 19. Sơ đồ thanh ghi RCC và giá trị đặt lại (tiếp theo)

Đăng ký bù đắp

1
5
ố8
s

7
6

0
3
9

2
4
PLL3MUL PLL2MUL PREDIV2[3: PREDIV1[3:
RCC_CFGR2
0x02C Kín đáo [3:0] [3:0] 0] 0]

CRS2S2I
CRS3S2I

CRS1VIDERP
Đặt lại giá trị 0000000000000000000

Tham khảo Bảng 3 trên trang 50 để biết địa chỉ biên của thanh ghi.

158/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 I/O có mục đích chung và chức năng thay thế (GPIO và AFIO)

9 I/O mục đích chung và chức năng thay thế


(GPIO và AFIO)

Các thiết bị mật độ thấp là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

Các thiết bị có mật độ trung bình là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 64 đến 128 Kbyte.

Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ
nhớ Flash nằm trong khoảng từ 256 đến 512 Kbyte.

Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ


bộ nhớ Flash nằm trong khoảng từ 768 Kbyte đến 1 Mbyte.

Các thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

Phần này áp dụng cho toàn bộ họ STM32F10xxx, trừ khi có quy định khác.

9.1 Mô tả chức năng GPIO


Mỗi cổng I/O đa năng có hai thanh ghi cấu hình 32 bit (GPIOx_CRL, GPIOx_CRH), hai thanh ghi
dữ liệu 32 bit (GPIOx_IDR, GPIOx_ODR), một thanh ghi đặt/đặt lại 32 bit (GPIOx_BSRR), một
thanh ghi 16-bit. thanh ghi đặt lại bit (GPIOx_BRR) và thanh ghi khóa 32 bit (GPIOx_LCKR).

Tùy thuộc vào các đặc điểm phần cứng cụ thể của từng cổng I/O được liệt kê trong biểu dữ
liệu, mỗi bit cổng của Cổng IO Mục đích Chung (GPIO) có thể được cấu hình riêng bằng phần
mềm ở một số chế độ:
• Đầu vào nổi
• Đầu vào kéo lên
• Đầu vào-kéo xuống

• Tương tự

• Đầu ra thoát nước mở

• Đầu ra đẩy-kéo

• Chức năng kéo đẩy thay thế

• Chức năng thay thế xả mở

Mỗi bit cổng I/O có thể được lập trình tự do, tuy nhiên các thanh ghi cổng I/O phải
được truy cập dưới dạng các từ 32 bit (không được phép truy cập nửa từ hoặc byte). Mục đích
của các thanh ghi GPIOx_BSRR và GPIOx_BRR là cho phép truy cập đọc/sửa đổi nguyên tử đối với bất
kỳ thanh ghi GPIO nào. Bằng cách này, không có rủi ro xảy ra IRQ giữa quyền truy cập đọc và
quyền truy cập sửa đổi.

Hình 13 cho thấy cấu trúc cơ bản của bit Cổng I/O.

RM0008 Phiên bản 21 159/1136

196
Machine Translated by Google

I/O có mục đích chung và chức năng thay thế (GPIO và AFIO) RM0008

Hình 13. Cấu trúc cơ bản của bit cổng I/O tiêu chuẩn

Đầu vào analog VDD


Đến thiết bị

ngoại vi trên chip bật/tắt


Đầu vào chức năng thay thế

bật/tắt

Đọc
VDD

no
hu aà
i

u hv

i
ầ T
g
d
l
đ
Trình kích hoạt
Điốt bảo vệ
TTL Schmitt bật/tắt

Viết Trình điều khiển đầu vào VSS Chân vào/ra


h/
t nt
ế ai
p
i hb


ạ T
g
t
đ
l

Trình điều khiển đầu ra


VDD
Điốt bảo vệ
nu
hu aa
i
ệ hr

i
ầ T
g
d
l
đ

P-MOS

Kiểm
VSS
soát đầu ra
N-MOS
Đọc viết

VSS
Kéo đẩy,
Từ thiết bị ngoại
thoát nước mở
vi trên chip Đầu ra chức năng thay thế
hoặc bị vô hiệu hóa

ai14781

Hình 14. Cấu trúc cơ bản của bit cổng I/O chịu được 5 Volt

Đầu vào analog VDD


Đến thiết bị

ngoại vi trên chip bật/tắt


Đầu vào chức năng thay thế

bật/tắt

Đọc
VDD_FT(1)
no
hu aà
i

u hv

i
ầ T
g
d
l
đ

Trình kích hoạt

TTL Schmitt bật/tắt

Viết Trình điều khiển đầu vào VSS Chân vào/ra


h/
t nt
ế ai
p
i hb


ạ T
g
t
đ
l

Trình điều khiển đầu ra


VDD
Điốt bảo vệ
nu
hu aa
i
ệ hr

i
ầ T
g
d
l
đ

P-MOS

Kiểm
VSS
soát đầu ra
N-MOS
Đọc viết

VSS
Kéo đẩy,
Từ thiết bị ngoại
thoát nước mở
vi trên chip Đầu ra chức năng thay thế
hoặc bị vô hiệu hóa

ai14782

1. VDD_FT là một I/O có khả năng chịu điện áp 5V cụ thể và khác với VDD.

160/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 I/O có mục đích chung và chức năng thay thế (GPIO và AFIO)

Bảng 20. Bảng cấu hình bit cổng

Đăng ký
Chế độ cấu hình CNF1 CNF0 CHẾ ĐỘ1 CHẾ ĐỘ0
PxODR

kéo đẩy 0 0 hoặc 1


Đầu ra mục đích 01
0
chung 1 0 hoặc 1
Cống hở 10

0 11 không quan tâm


Chức năng thay thế kéo đẩy
1 xem Bảng 21
đầu ra 1 không quan tâm
Cống hở

Tương tự 0 không quan tâm


0
Đầu vào nổi 1 không quan tâm

Đầu vào 00
Kéo xuống đầu vào 0
1 0
Kéo lên đầu vào 1

Bảng 21. Các bit MODE đầu ra

CHẾ ĐỘ[1:0] Nghĩa

00 Kín đáo

01 Tốc độ đầu ra tối đa 10 MHz

10 Tốc độ đầu ra tối đa 2 MHz

11 Tốc độ đầu ra tối đa 50 MHz

9.1.1 I/O đa năng (GPIO)

Trong và ngay sau khi đặt lại, các chức năng thay thế không hoạt động và các cổng I/O được cấu
hình ở chế độ Đầu vào nổi (CNFx[1:0]=01b, MODEx[1:0]=00b).

Các chân JTAG ở đầu vào PU/PD sau khi đặt lại:

PA15: JTDI trong PU

PA14: JTCK trong PD

PA13: JTMS trong PU

PB4: NJTRST trong PU

Khi được định cấu hình làm đầu ra, giá trị được ghi vào thanh ghi Dữ liệu đầu ra (GPIOx_ODR) sẽ được
xuất ra trên chân I/O. Có thể sử dụng trình điều khiển đầu ra ở chế độ Push-Pull hoặc chế độ Open-Drain
(chỉ N-MOS được kích hoạt khi xuất ra 0).

Thanh ghi dữ liệu đầu vào (GPIOx_IDR) ghi lại dữ liệu có trên chân I/O ở mỗi chu kỳ xung nhịp APB2.

Tất cả các chân GPIO đều có bộ kéo lên và kéo xuống yếu bên trong, có thể được kích hoạt hoặc không khi
được định cấu hình làm đầu vào.

9.1.2 Đặt hoặc đặt lại bit nguyên tử

Phần mềm không cần phải tắt các ngắt khi lập trình GPIOx_ODR ở cấp độ bit: chỉ có thể sửa đổi một hoặc
một số bit trong một truy cập ghi APB2 nguyên tử duy nhất. Điều này đạt được bằng cách lập trình
thành '1' thanh ghi Bit Set/Reset (GPIOx_BSRR, hoặc

RM0008 Phiên bản 21 161/1136

196
Machine Translated by Google

I/O có mục đích chung và chức năng thay thế (GPIO và AFIO) RM0008

chỉ dành cho thiết lập lại GPIOx_BRR) để chọn các bit cần sửa đổi. Các bit không được chọn sẽ không được
sửa đổi.

9.1.3 Đường ngắt/đánh thức bên ngoài

Tất cả các cổng đều có khả năng ngắt bên ngoài. Để sử dụng các đường ngắt ngoài, cổng phải được cấu hình ở chế

độ đầu vào. Để biết thêm thông tin về các ngắt bên ngoài, hãy tham khảo Phần 10.2: Bộ điều khiển sự kiện/ngắt bên

ngoài (EXTI) và Phần 10.2.3: Quản lý sự kiện đánh thức.

9.1.4 Các chức năng thay thế (AF)

Cần phải lập trình thanh ghi Cấu hình Bit Cổng trước khi sử dụng chức năng thay thế mặc định.

• Đối với các đầu vào chức năng thay thế, cổng phải được cấu hình ở chế độ Đầu vào (nổi, kéo

lên hoặc kéo xuống) và chân đầu vào phải được điều khiển từ bên ngoài.

Ghi chú: Cũng có thể mô phỏng chân đầu vào AFI bằng phần mềm bằng cách lập trình bộ điều khiển GPIO. Trong trường

hợp này, cổng phải được cấu hình ở chế độ Đầu ra Chức năng Thay thế.

Và rõ ràng, cổng tương ứng không nên được điều khiển từ bên ngoài vì nó sẽ được điều khiển bởi phần mềm sử dụng

bộ điều khiển GPIO.

• Đối với các đầu ra chức năng thay thế, cổng phải được cấu hình ở chế độ Đầu ra chức năng thay thế (Đẩy-Kéo hoặc

Mở-Xả).

• Đối với các Chức năng thay thế hai chiều, bit cổng phải được cấu hình ở chế độ Đầu ra chức năng thay thế

(Đẩy-Kéo hoặc Mở-Drain). Trong trường hợp này trình điều khiển đầu vào được cấu hình ở chế độ thả

nổi đầu vào

Nếu một bit cổng được cấu hình là Đầu ra chức năng thay thế, điều này sẽ ngắt kết nối thanh ghi đầu ra và kết nối

chân với tín hiệu đầu ra của thiết bị ngoại vi trên chip.

Nếu phần mềm định cấu hình chân GPIO làm Đầu ra chức năng thay thế nhưng thiết bị ngoại vi không được

kích hoạt thì đầu ra của nó không được chỉ định.

9.1.5 Ánh xạ lại phần mềm của các chức năng thay thế I/O

Để tối ưu hóa số lượng chức năng I/O ngoại vi cho các gói thiết bị khác nhau, có thể ánh xạ lại một số

chức năng thay thế sang một số chân khác. Điều này đạt được bằng phần mềm, bằng cách lập trình các thanh

ghi tương ứng (tham khảo các thanh ghi AFIO. Trong trường hợp đó, các chức năng thay thế không còn được ánh xạ

tới các phép gán ban đầu của chúng nữa.

9.1.6 Cơ chế khóa GPIO

Cơ chế khóa cho phép cấu hình IO bị đóng băng. Khi trình tự LOCK được áp dụng trên bit cổng, không thể sửa đổi giá

trị của bit cổng cho đến lần đặt lại tiếp theo.

162/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 I/O có mục đích chung và chức năng thay thế (GPIO và AFIO)

9.1.7 Cấu hình đầu vào

Khi Cổng I/O được lập trình làm Đầu vào: • Bộ

đệm đầu ra bị tắt • Đầu vào kích hoạt

Schmitt được kích hoạt • Các điện trở kéo lên

và kéo xuống yếu có được kích hoạt hay không tùy thuộc vào đầu vào
cấu hình (kéo lên, kéo xuống hoặc nổi):

• Dữ liệu hiện diện trên chân I/O được lấy mẫu vào thanh ghi Dữ liệu đầu vào mỗi APB2
chu kỳ đồng

hồ • Truy cập đọc vào thanh ghi Dữ liệu đầu vào sẽ nhận được Trạng thái I/O.

Hình 15 hiển thị Cấu hình đầu vào của bit Cổng I/O.

Hình 15. Nhập cấu hình thả nổi/kéo lên/kéo xuống

VDD
bật/tắt

TRÊN

Đọc

VDD hoặc VDD_FT(1)


no
hu aà
i

u hv

i
ầ T
g
d
l
đ

Trình kích hoạt


điốt bảo
TTL Schmitt bật/tắt
vệ
Viết
VSS Chân vào/ra
h/
t nt
ế ai
p
i hb


ạ T
g
t
đ
l

trình điều khiển đầu vào

trình điều khiển đầu ra

điốt bảo
nu
hu aa
i
ệ hr

i
ầ T
g
d
l
đ

vệ

VSS
Đọc viết

ai14783

1. VDD_FT là một I/O có khả năng chịu điện áp 5V cụ thể và khác với VDD.

9.1.8 Cấu hình đầu ra

Khi Cổng I/O được lập trình làm Đầu ra: • Bộ đệm

đầu ra được bật: – Chế độ xả mở: “0”

trong thanh ghi đầu ra kích hoạt N-MOS trong khi “1” trong thanh ghi đầu ra rời cổng ở trạng thái
Hi -Z (P-MOS không bao giờ được kích hoạt)

– Chế độ kéo đẩy: Số “0” trong thanh ghi đầu ra sẽ kích hoạt N-MOS trong khi số “1” trong thanh
ghi đầu ra sẽ kích hoạt P-MOS • Đầu vào

kích hoạt Schmitt được kích hoạt. • Các điện

trở kéo lên và kéo xuống yếu bị vô hiệu hóa. • Dữ liệu hiện diện

trên chân I/O được lấy mẫu vào thanh ghi Dữ liệu đầu vào mỗi APB2
chu kỳ đồng hồ

• Quyền truy cập đọc vào thanh ghi Dữ liệu đầu vào sẽ có trạng thái I/O ở chế độ thoát mở •

Quyền truy cập đọc vào thanh ghi Dữ liệu đầu ra sẽ nhận giá trị được ghi cuối cùng ở chế độ Kéo-Đẩy

Hình 16 cho thấy cấu hình đầu ra của bit Cổng I/O.

RM0008 Phiên bản 21 163/1136

196
Machine Translated by Google

I/O có mục đích chung và chức năng thay thế (GPIO và AFIO) RM0008

Hình 16. Cấu hình đầu ra

TRÊN

Đọc

VDD hoặc VDD_FT(1)

no
hui

uhv


i
ầT
g
d
l
đ
Trình kích hoạt
Điốt bảo vệ
TTL Schmitt

Viết
Trình điều khiển đầu vào
Chân vào/ra
nt
h/
tếp
ihb
ai


ạT
g
t
đ
l

Trình điều khiển đầu ra VDD


Điốt bảo vệ
nu
hu aa
i
ệ hr

i
ầ T
g
d
l
đ

P-MOS
Kiểm VSS
Đọc viết soát đầu ra

N-MOS
Kéo đẩy hoặc
VSS
Cống hở

ai14784

1. VDD_FT là một I/O có khả năng chịu điện áp 5V cụ thể và khác với VDD.

9.1.9 Cấu hình chức năng thay thế


Khi Cổng I/O được lập trình dưới dạng Chức năng thay thế: •

Bộ đệm đầu ra được bật trong cấu hình Open Drain hoặc Push-Pull • Bộ đệm đầu ra

được điều khiển bởi tín hiệu đến từ thiết bị ngoại vi (chức năng thay thế
ngoài)

• Đầu vào kích hoạt Schmitt được kích hoạt •

Các điện trở kéo lên và kéo xuống yếu bị vô hiệu hóa. • Dữ liệu

hiện diện trên chân I/O được lấy mẫu vào thanh ghi Dữ liệu đầu vào mỗi APB2
chu kỳ đồng hồ

• Quyền truy cập đọc vào thanh ghi Dữ liệu đầu vào sẽ có trạng thái I/O ở chế độ thoát mở

• Quyền truy cập đọc vào thanh ghi Dữ liệu đầu ra sẽ nhận giá trị được ghi cuối cùng ở chế độ Kéo-Đẩy

Hình 17 hiển thị Cấu hình chức năng thay thế của bit Cổng I/O. Ngoài ra, hãy tham khảo Phần
9.4: Thanh ghi AFIO để biết thêm thông tin.

Một tập hợp các thanh ghi I/O chức năng thay thế cho phép người dùng sắp xếp lại một số chức năng
thay thế cho các chân khác nhau. Tham khảo Phần 9.3: Cấu hình gỡ lỗi và I/O chức năng thay thế (AFIO).

164/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 I/O có mục đích chung và chức năng thay thế (GPIO và AFIO)

Hình 17. Cấu hình chức năng thay thế

Đến thiết bị Đầu vào chức năng thay thế


ngoại vi trên chip

TRÊN

Đọc
VDD hoặc VDD_FT(1)

no
hu aà
i

u hv

i
ầ T
g
d
l
đ

Trình kích hoạt


Điốt bảo vệ
TTL Schmitt

Trình điều khiển đầu vào


Viết Chân vào/ra
h/
t nt
ế ai
p
i hb


ạ T
g
t
đ
l

Trình điều khiển đầu ra VDD


Điốt bảo vệ

P-MOS
nu
hu aa
i
ệ hr

i
ầ T
g
d
l
đ

Kiểm VSS
soát đầu ra
N-MOS
Đọc viết
kéo đẩy hoặc
VSS
thoát nước mở
Từ thiết bị ngoại

vi trên chip Đầu ra chức năng thay thế

ai14785

1. VDD_FT là một I/O có khả năng chịu điện áp 5V cụ thể và khác với VDD.

9.1.10 Cấu hình tương tự

Khi Cổng I/O được lập trình ở dạng cấu hình Analog: • Bộ

đệm đầu ra bị tắt. • Đầu vào kích

hoạt Schmitt bị hủy kích hoạt, cung cấp mức tiêu thụ bằng 0 cho mọi giá trị tương tự của
chân I/O. Đầu ra của Schmitt Trigger bị buộc phải có giá trị không đổi (0).

• Các điện trở kéo lên và kéo xuống yếu bị vô hiệu hóa. •

Truy cập đọc vào thanh ghi Dữ liệu đầu vào nhận giá trị “0”.

Hình 18 cho thấy cấu hình tương tự trở kháng cao của bit Cổng I/O.

RM0008 Phiên bản 21 165/1136

196
Machine Translated by Google

I/O có mục đích chung và chức năng thay thế (GPIO và AFIO) RM0008

Hình 18. Cấu hình tương tự trở kháng cao

Đầu vào analog


Đến thiết bị

ngoại vi trên chip

Đọc tắt

no
hui

uhv


i
ầT
g
d
l
đ
VDD hoặc VDD_FT(1)

Trình kích hoạt


Sự bảo vệ
TTL Schmitt
điốt
Viết
hb
ai
nt
p
iậ

ạT
g
t
đ
l

Trình điều khiển đầu vào


h/
tế

Chân vào/ra
aahr

i
ầ T
g
d
l
đ

Sự bảo vệ
nu
hu i

điốt

VSS
Đọc viết

Từ thiết bị ngoại

vi trên chip
ai14786

9.1.11 Cấu hình GPIO cho thiết bị ngoại vi

Bảng 22 đến Bảng 33 cung cấp cấu hình GPIO của thiết bị ngoại vi.

Bảng 22. Bộ định thời nâng cao TIM1 và TIM8

Sơ đồ chân TIM1/8 Cấu hình cấu hình GPIO

Kênh chụp đầu vào x Đầu vào nổi


TIM1/8_CHx
Kênh so sánh đầu ra x Chức năng kéo đẩy thay thế

TIM1/8_CHxN Kênh đầu ra bổ sung x Chức năng kéo đẩy thay thế

TIM1/8_BKIN Ngắt đầu vào Đầu vào nổi

TIM1/8_ETR Đầu vào hẹn giờ kích hoạt bên ngoài Đầu vào nổi

Bảng 23. Bộ định thời đa năng TIM2/3/4/5

Sơ đồ chân TIM2/3/4/5 Cấu hình cấu hình GPIO

Kênh chụp đầu vào x Đầu vào nổi


TIM2/3/4/5_CHx
Kênh so sánh đầu ra x Chức năng kéo đẩy thay thế

TIM2/3/4/5_ETR Đầu vào hẹn giờ kích hoạt bên ngoài Đầu vào nổi

Bảng 24. USART

Sơ đồ chân USART Cấu hình cấu hình GPIO

song công hoàn toàn Chức năng kéo đẩy thay thế
USARTx_TX(1)
Chế độ đồng bộ bán song công Chức năng thay thế kéo đẩy

166/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 I/O có mục đích chung và chức năng thay thế (GPIO và AFIO)

Bảng 24. USART (tiếp theo)

Sơ đồ chân USART Cấu hình cấu hình GPIO

song công hoàn toàn Đầu vào nổi / Đầu vào kéo lên
USARTx_RX
Chế độ đồng bộ bán song công Không được sử dụng. Có thể được sử dụng như một IO chung

USARTx_CK Chế độ đồng bộ Chức năng kéo đẩy thay thế

USARTx_RTS Kiểm soát luồng phần cứng Chức năng kéo đẩy thay thế

USARTx_CTS Kiểm soát luồng phần cứng Đầu vào nổi/Đầu vào kéo lên

1. Chân USART_TX cũng có thể được cấu hình như một chức năng thay thế để mở cống.

Bảng 25. SPI

Sơ đồ chân SPI Cấu hình cấu hình GPIO

Bậc thầy Chức năng kéo đẩy thay thế


SPIx_SCK
Nô lệ Đầu vào nổi

Song công hoàn toàn / chính Chức năng kéo đẩy thay thế

Song công hoàn toàn / nô lệ Đầu vào nổi / Đầu vào kéo lên
SPIx_MOSI
Dây dữ liệu hai chiều Simplex / master Chức năng thay thế đẩy-kéo

Dây dữ liệu hai chiều Simplex/phụ Không được sử dụng. Có thể được sử dụng như một GPIO

Song công hoàn toàn / chính Đầu vào nổi / Đầu vào kéo lên

Song công hoàn toàn/phụ (điểm tới điểm) Chức năng kéo đẩy thay thế

Song công hoàn toàn / nô lệ (đa nô lệ) Chức năng thay thế mở cống

SPIx_MISO Dây dữ liệu hai chiều Simplex / master Không được sử dụng. Có thể được sử dụng như một GPIO

Dây dữ liệu hai chiều Simplex/phụ (điểm


Chức năng kéo đẩy thay thế
tới điểm)

Dây dữ liệu hai chiều Simplex/phụ (đa


Chức năng thay thế mở cống
phụ)

Chủ/nô lệ phần cứng Đầu vào nổi/Đầu vào kéo lên/Đầu vào kéo xuống

SPIx_NSS Đã bật đầu ra phần cứng/đầu ra NSS Chức năng kéo đẩy thay thế

Phần mềm Không được sử dụng. Có thể được sử dụng như một GPIO

Bảng 26. I2S

Sơ đồ chân I2S Cấu hình cấu hình GPIO

Bậc thầy Chức năng kéo đẩy thay thế


I2Sx_WS
Nô lệ Đầu vào nổi

Bậc thầy Chức năng kéo đẩy thay thế


I2Sx_CK
Nô lệ Đầu vào nổi

Hệ thống điều khiển Chức năng kéo đẩy thay thế


I2Sx_SD
Người nhận Đầu vào nổi/Đầu vào kéo lên/Đầu vào kéo xuống

RM0008 Phiên bản 21 167/1136

196
Machine Translated by Google

I/O có mục đích chung và chức năng thay thế (GPIO và AFIO) RM0008

Bảng 26. I2S (tiếp theo)

Sơ đồ chân I2S Cấu hình cấu hình GPIO

Bậc thầy Chức năng kéo đẩy thay thế


I2Sx_MCK
Nô lệ Không được sử dụng. Có thể được sử dụng như một GPIO

Bảng 27. I2C

Sơ đồ chân I2C Cấu hình cấu hình GPIO

I2Cx_SCL Đồng hồ I2C Chức năng thay thế mở cống

I2Cx_SDA Vào/ra dữ liệu I2C Chức năng thay thế mở cống

Bảng 28. bxCAN

Sơ đồ chân BxCAN cấu hình GPIO

CAN_TX (Truyền dữ liệu) Chức năng kéo đẩy thay thế

CAN_RX (Dòng nhận dữ liệu) Đầu vào nổi / Đầu vào kéo lên

Bảng 29. USB(1)

Sơ đồ chân USB cấu hình GPIO

Ngay khi USB được bật, các chân này sẽ tự động được kết nối với bộ thu phát bên
USB_DM / USB_DP
trong USB.

1. Bảng này chỉ áp dụng cho các thiết bị có mật độ thấp, trung bình, cao và XL.

Bảng 30. Cấu hình chânOTG_FS(1)

Cấu hình sơ đồ chân củaOTG_FS cấu hình GPIO

Chủ nhà Kéo đẩy AF, nếu được sử dụng

OOT_FS_SOF Thiết bị Kéo đẩy AF, nếu được sử dụng

otg Kéo đẩy AF, nếu được sử dụng

Chủ nhà Đầu vào nổi

OOT_FS_VBUS(2) Thiết bị Đầu vào nổi

otg Đầu vào nổi

Không cần thiết nếu chế độ Force Host được chọn bằng phần mềm
Chủ nhà
(FHMOD được đặt trong thanh ghiOT_FS_GUSBCFG)

OOT_FS_ID Không cần thiết nếu chế độ Force device được chọn bằng phần mềm
Thiết bị
(FDMOD được đặt trong thanh ghiOT_FS_GUSBCFG)

otg Kéo lên đầu vào

Chủ nhà Được điều khiển tự động bằng cách tắt nguồn USB

OOT_FS_DM Thiết bị Được điều khiển tự động bằng cách tắt nguồn USB

otg Được điều khiển tự động bằng cách tắt nguồn USB

168/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 I/O có mục đích chung và chức năng thay thế (GPIO và AFIO)

Bảng 30. Cấu hình chânOTG_FS(1) (tiếp theo)

Cấu hình sơ đồ chân củaOTG_FS cấu hình GPIO

Chủ nhà Được điều khiển tự động bằng cách tắt nguồn USB

OOT_FS_DP Thiết bị Được điều khiển tự động bằng cách tắt nguồn USB

otg Được điều khiển tự động bằng cách tắt nguồn USB

1. Bảng này chỉ áp dụng cho các thiết bị có đường kết nối.

2. Để chânOTG_FS_VBUS (PA9) được sử dụng bởi một thiết bị ngoại vi dùng chung khác hoặc làm IO cho mục đích chung,
chế độ Tắt nguồn PHY phải được kích hoạt (xóa bit 16 trong thanh ghiOTG_FS_GCCFG).

Bảng 31. SDIO

Sơ đồ chân SDIO cấu hình GPIO

SDIO_CK Chức năng kéo đẩy thay thế

SDIO_CMD Chức năng kéo đẩy thay thế

SDIO[D7:D0] Chức năng kéo đẩy thay thế

Cấu hình GPIO của đầu vào ADC phải ở dạng tương tự.

Hình 19. ADC/DAC

Chân ADC/DAC cấu hình GPIO

ADC/ĐẮC Tương tự

Bảng 32. FSMC

Sơ đồ chân của FSMC cấu hình GPIO

FSMC_A[25:0]
Chức năng kéo đẩy thay thế
FSMC_D[15:0]

FSMC_CK Chức năng kéo đẩy thay thế

FSMC_NOE
Chức năng kéo đẩy thay thế
FSMC_NWE

FSMC_NE[4:1]
FSMC_NCE[3:2]
Chức năng kéo đẩy thay thế
FSMC_NCE4_1
FSMC_NCE4_2

FSMC_NWAIT
Đầu vào nổi/Đầu vào kéo lên
FSMC_CD

FSMC_NIOS16,
FSMC_INTR Đầu vào nổi
FSMC_INT[3:2]

FSMC_NL
Chức năng kéo đẩy thay thế
FSMC_NBL[1:0]

FSMC_NIORD, FSMC_NIOWR
Chức năng kéo đẩy thay thế
FSMC_NREG

RM0008 Phiên bản 21 169/1136

196
Machine Translated by Google

I/O có mục đích chung và chức năng thay thế (GPIO và AFIO) RM0008

Bảng 33. IO khác

Ghim Chức năng thay thế cấu hình GPIO

đầu ra RTC
Bị ép buộc bởi phần cứng khi định cấu hình
Chân TAMPER-RTC
Đầu vào sự kiện giả mạo
Thanh ghi BKP_CR và BKP_RTCCR

MCO Đầu ra đồng hồ Chức năng kéo đẩy thay thế

Dòng đầu vào EXTI Ngắt đầu vào bên ngoài Đầu vào nổi / đầu vào kéo lên / đầu vào kéo xuống

170/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 I/O có mục đích chung và chức năng thay thế (GPIO và AFIO)

9,2 thanh ghi GPIO


Tham khảo Phần 2.2 trên trang 45 để biết danh sách các chữ viết tắt được sử dụng trong mô tả đăng ký.

Các thanh ghi ngoại vi phải được truy cập bằng từ (32-bit).

9.2.1 Thanh ghi cấu hình cổng ở mức thấp (GPIOx_CRL) (x=A..G)
Độ lệch địa chỉ: 0x00

Giá trị đặt lại: 0x4444 4444

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

CNF7[1:0] CHẾ ĐỘ7[1:0] CNF6[1:0] CHẾ ĐỘ6[1:0] CNF5[1:0] CHẾ ĐỘ5[1:0] CNF4[1:0] CHẾ ĐỘ4[1:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CNF3[1:0] CHẾ ĐỘ3[1:0] CNF2[1:0] CHẾ ĐỘ2[1:0] CNF1[1:0] CHẾ ĐỘ1[1:0] CNF0[1:0] CHẾ ĐỘ0[1:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:30, 27:26, CNFy[1:0]: Bit cấu hình cổng x (y= 0 .. 7)


23:22, 19:18, 15:14, Các bit này được viết bằng phần mềm để cấu hình cổng I/O tương ứng.
11:10, 7:6, 3:2
Tham khảo Bảng 20: Bảng cấu hình bit cổng.

Ở chế độ đầu vào (MODE[1:0]=00):

00: Chế độ tương tự

01: Đầu vào nổi (trạng thái reset)

10: Đầu vào kéo lên/kéo xuống


11: Dự trữ

Ở chế độ đầu ra (MODE[1:0] > 00):

00: Kéo-đẩy đầu ra cho mục đích chung

01: Đầu ra đa dụng Thoát nước hở

10: Đầu ra chức năng thay thế Kéo-kéo

11: Đầu ra chức năng thay thế Xả hở

Bit 29:28, 25:24, MODEy[1:0]: Cổng x bit chế độ (y= 0 .. 7)


21:20, 17:16, 13:12, Các bit này được viết bằng phần mềm để cấu hình cổng I/O tương ứng.
9:8, 5:4, 1:0
Tham khảo Bảng 20: Bảng cấu hình bit cổng.

00: Chế độ đầu vào (trạng thái đặt lại)

01: Chế độ đầu ra, tốc độ tối đa 10 MHz.

10: Chế độ đầu ra, tốc độ tối đa 2 MHz.

11: Chế độ đầu ra, tốc độ tối đa 50 MHz.

RM0008 Phiên bản 21 171/1136

196
Machine Translated by Google

I/O có mục đích chung và chức năng thay thế (GPIO và AFIO) RM0008

9.2.2 Thanh ghi cấu hình cổng cao (GPIOx_CRH) (x=A..G)

Độ lệch địa chỉ: 0x04

Giá trị đặt lại: 0x4444 4444

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

CNF15[1:0] CHẾ ĐỘ15[1:0] CNF14[1:0] CHẾ ĐỘ14[1:0] CNF13[1:0] CHẾ ĐỘ13[1:0] CNF12[1:0] CHẾ ĐỘ12[1:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CNF11[1:0] CHẾ ĐỘ11[1:0] CNF10[1:0] CHẾ ĐỘ10[1:0] CNF9[1:0] MODE9[1:0] CNF8[1:0] MODE8[1:0]
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:30, 27:26, CNFy[1:0]: Bit cấu hình cổng x (y= 8 .. 15)
23:22, 19:18, 15:14, Các bit này được viết bằng phần mềm để cấu hình cổng I/O tương ứng.
11:10, 7:6, 3:2
Tham khảo Bảng 20: Bảng cấu hình bit cổng.

Ở chế độ đầu vào (MODE[1:0]=00):

00: Chế độ tương tự

01: Đầu vào nổi (trạng thái reset)

10: Đầu vào kéo lên/kéo xuống


11: Dự trữ

Ở chế độ đầu ra (MODE[1:0] > 00):

00: Kéo-đẩy đầu ra cho mục đích chung

01: Đầu ra đa dụng Thoát nước hở

10: Đầu ra chức năng thay thế Kéo-kéo

11: Đầu ra chức năng thay thế Xả hở

Bit 29:28, 25:24, MODEy[1:0]: Cổng x bit chế độ (y= 8 .. 15)


21:20, 17:16, 13:12, Các bit này được viết bằng phần mềm để cấu hình cổng I/O tương ứng.
9:8, 5:4, 1:0
Tham khảo Bảng 20: Bảng cấu hình bit cổng.

00: Chế độ đầu vào (trạng thái đặt lại)

01: Chế độ đầu ra, tốc độ tối đa 10 MHz.

10: Chế độ đầu ra, tốc độ tối đa 2 MHz.

11: Chế độ đầu ra, tốc độ tối đa 50 MHz.

9.2.3 Thanh ghi dữ liệu đầu vào cổng (GPIOx_IDR) (x=A..G)

Độ lệch địa chỉ: 0x08h

Giá trị đặt lại: 0x0000 XXXX

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

IDR15 IDR14 IDR13 IDR12 IDR11 IDR10 IDR9 IDR8 IDR7 IDR6 IDR5 IDR4 IDR3 IDR2 IDR1 IDR0

rrrrrr r r r rrrr

Bit 31:16 Dự trữ, phải được giữ ở giá trị đặt lại.

Bits 15:0 IDry: Dữ liệu đầu vào cổng (y= 0 .. 15)

Các bit này ở dạng chỉ đọc và chỉ có thể được truy cập ở chế độ Word. Chúng chứa giá trị đầu vào của cổng

I/O tương ứng.

172/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 I/O có mục đích chung và chức năng thay thế (GPIO và AFIO)

9.2.4 Thanh ghi dữ liệu đầu ra cổng (GPIOx_ODR) (x=A..G)


Độ lệch địa chỉ: 0x0C

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

ODR15 ODR14 ODR13 ODR12 ODR11 ODR10 ODR9 ODR8 ODR7 ODR6 ODR5 ODR4 ODR3 ODR2 ODR1 ODR0

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:16 Dự trữ, phải được giữ ở giá trị đặt lại.

Bits 15:0 ODRY: Dữ liệu đầu ra cổng (y= 0 .. 15)

Các bit này có thể được đọc và ghi bằng phần mềm và chỉ có thể được truy cập ở chế độ Word.

Lưu ý: Đối với việc đặt/đặt lại bit nguyên tử, các bit ODR có thể được đặt và xóa riêng lẻ bằng cách ghi vào
thanh ghi GPIOx_BSRR (x = A .. G).

9.2.5 Thanh ghi đặt/đặt lại bit cổng (GPIOx_BSRR) (x=A..G)


Độ lệch địa chỉ: 0x10

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

BR15 BR14 BR13 BR12 BR11 BR10 BR9 BR8 BR7 BR6 BR5 BR4 BR3 BR2 BR1 BR0

w w w w w wwwwwwwwww

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

BS15 BS14 BS13 BS12 BS11 BS10 BS9 BS8 BS7 BS6 BS5 BS4 BS3 BS2 BS1 BS0

w w w w w wwwwwwwwww

Bit 31:16 BRy: Cổng x Bit đặt lại y (y= 0 .. 15)

Các bit này chỉ có thể ghi và chỉ có thể được truy cập ở chế độ Word.

0: Không có hành động nào trên bit ODRx tương ứng

1: Đặt lại bit ODRx tương ứng

Lưu ý: Nếu cả BSx và BRx được đặt thì BSx được ưu tiên.

Bit 15:0 BSy: Cổng x Đặt bit y (y= 0 .. 15)

Các bit này chỉ có thể ghi và chỉ có thể được truy cập ở chế độ Word.

0: Không có hành động nào trên bit ODRx tương ứng

1: Đặt bit ODRx tương ứng

RM0008 Phiên bản 21 173/1136

196
Machine Translated by Google

I/O có mục đích chung và chức năng thay thế (GPIO và AFIO) RM0008

9.2.6 Thanh ghi đặt lại bit cổng (GPIOx_BRR) (x=A..G)


Độ lệch địa chỉ: 0x14

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

BR15 BR14 BR13 BR12 BR11 BR10 BR9 BR8 BR7 BR6 BR5 BR4 BR3 BR2 BR1 BR0

w w w w w wwwwwwwwww

Bit 31:16 Dành riêng

Bit 15:0 BRy: Cổng x Bit đặt lại y (y= 0 .. 15)

Các bit này chỉ có thể ghi và chỉ có thể được truy cập ở chế độ Word.

0: Không có hành động nào trên bit ODRx tương ứng


1: Đặt lại bit ODRx tương ứng

9.2.7 Thanh ghi khóa cấu hình cổng (GPIOx_LCKR) (x=A..G)

Thanh ghi này được sử dụng để khóa cấu hình của các bit cổng khi áp dụng trình tự ghi chính xác
cho bit 16 (LCKK). Giá trị của bit [15:0] được sử dụng để khóa cấu hình GPIO. Trong quá trình
ghi, giá trị LCKR[15:0] không được thay đổi. Khi trình tự LOCK được áp dụng trên một bit
cổng thì không thể sửa đổi giá trị của bit cổng đó cho đến lần đặt lại tiếp theo.

Mỗi bit khóa đóng băng 4 bit tương ứng của thanh ghi điều khiển (CRL, CRH).

Độ lệch địa chỉ: 0x18

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

LCKK
Kín đáo
rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

LCK15 LCK14 LCK13 LCK12 LCK11 LCK10 LCK9 LCK8 LCK7 LCK6 LCK5 LCK4 LCK3 LCK2 LCK1 LCK0

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

174/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 I/O có mục đích chung và chức năng thay thế (GPIO và AFIO)

Bit 31:17 Dành riêng

Bit 16 LCKK[16]: Phím khóa

Bit này có thể được đọc bất cứ lúc nào. Nó chỉ có thể được sửa đổi bằng cách sử dụng Trình tự viết phím khóa.

0: Phím khóa cấu hình cổng không hoạt động


1: Phím khóa cấu hình cổng đang hoạt động. Thanh ghi GPIOx_LCKR bị khóa cho đến lần đặt lại tiếp theo.

Trình tự ghi phím LOCK:


Viết 1
Viết 0
Viết 1
Đọc 0

Đọc 1 (đọc lần này là tùy chọn nhưng xác nhận rằng khóa đang hoạt động)

Lưu ý: Trong trình tự Viết phím LOCK, giá trị của LCK[15:0] không được thay đổi.

Bất kỳ lỗi nào trong trình tự khóa sẽ hủy bỏ khóa.

Bit 15:0 LCKy: Cổng x Bit khóa y (y= 0 .. 15)

Các bit này được đọc ghi nhưng chỉ có thể được ghi khi bit LCKK bằng 0.

0: Cấu hình cổng không bị khóa 1:

Cấu hình cổng bị khóa.

9,3 Cấu hình gỡ lỗi và I/O chức năng thay thế (AFIO)
Để tối ưu hóa số lượng thiết bị ngoại vi có sẵn cho gói 64 chân hoặc 100 chân hoặc 144 chân,
có thể ánh xạ lại một số chức năng thay thế sang một số chân khác. Điều này đạt được
bằng phần mềm, bằng cách lập trình thanh ghi cấu hình I/O gỡ lỗi và ánh xạ lại AF (AFIO_MAPR).
Trong trường hợp này, các hàm thay thế không còn được ánh xạ tới các phép gán ban đầu của
chúng nữa.

9.3.1 Sử dụng các chân OSC32_IN/OSC32_OUT làm cổng GPIO PC14/PC15

Các chân dao động LSE OSC32_IN và OSC32_OUT có thể được sử dụng tương ứng làm I/O PC14 và
PC15 cho mục đích chung khi bộ dao động LSE tắt. LSE có quyền ưu tiên hơn chức năng GP IO.

Ghi chú: Chức năng GPIO PC14/PC15 bị mất khi miền 1,8 V bị tắt (bằng cách vào chế độ chờ) hoặc
khi miền dự phòng được cung cấp bởi VBAT (VDD không được cung cấp nữa). Trong trường
hợp này, IO được đặt ở chế độ analog.

Tham khảo lưu ý về hạn chế sử dụng IO trong Phần 5.1.2: Miền dự phòng pin.

9.3.2 Sử dụng các chân OSC_IN/OSC_OUT làm cổng GPIO PD0/PD1

Các chân dao động HSE OSC_IN/OSC_OUT có thể được sử dụng làm I/O PD0/PD1 cho mục đích chung
bằng cách lập trình bit PD01_REMAP trong thanh ghi cấu hình I/O gỡ lỗi và ánh xạ lại AF
(AFIO_MAPR).

Bản remap này chỉ có trên các gói 36, 48 và 64 chân (PD0 và PD1 có sẵn trên các gói 100 chân
và 144 chân, không cần ánh xạ lại).

Ghi chú: Chức năng ngắt/sự kiện bên ngoài không được ánh xạ lại. PD0 và PD1 không thể được sử dụng
để tạo sự kiện/ngắt bên ngoài trên các gói 36, 48 và 64 chân.

RM0008 Phiên bản 21 175/1136

196
Machine Translated by Google

I/O có mục đích chung và chức năng thay thế (GPIO và AFIO) RM0008

9.3.3 Ánh xạ lại chức năng thay thế CAN1

Các tín hiệu CAN có thể được ánh xạ trên Cổng A, Cổng B hoặc Cổng D như trong Bảng 34. Đối với cổng D, việc
ánh xạ lại không thể thực hiện được trong các thiết bị được phân phối theo gói 36, 48 và 64 chân.

Bảng 34. Ánh xạ lại chức năng thay thế CAN1

CAN_REMAP[1:0] = CAN_REMAP[1:0] = CAN_REMAP[1:0] =


Chức năng thay thế(1)
“00” “10” (2) “11”(3)

CAN1_RX hoặc CAN_RX PA11 PB8 PD0

CAN1_TX hoặc CAN_RX PA12 PB9 PD1

1. CAN1_RX và CAN1_TX trong các thiết bị có đường kết nối; CAN_RX và CAN_TX trong các thiết bị khác chỉ bằng một
Giao diện CÓ THỂ.

2. Remap không có sẵn trên gói 36-pin

3. Việc ánh xạ lại này chỉ khả dụng trên các gói 100 chân và 144 chân, khi PD0 và PD1 không được ánh xạ lại
trên OSC-IN và OSC-OUT.

9.3.4 Ánh xạ lại chức năng thay thế CAN2

CAN2 có sẵn trong các thiết bị có đường kết nối. Tín hiệu bên ngoài có thể được ánh xạ
lại như trong Bảng 35.

Bảng 35. Ánh xạ lại chức năng thay thế CAN2

Chức năng thay thế CAN2_REMAP = “0” CAN2_REMAP = “1”

CAN2_RX PB12 PB5

CAN2_TX PB13 PB6

9.3.5 Ánh xạ lại chức năng thay thế JTAG/SWD

Các tín hiệu giao diện gỡ lỗi được ánh xạ trên các cổng GPIO như trong Bảng 36.

Bảng 36. Tín hiệu giao diện gỡ lỗi

Chức năng thay thế cổng GPIO

JTMS / SWDIO PA13

JTCK / SWCLK PA14

JTDI PA15

JTDO / TRACESWO PB3

NJTRST PB4

THEO DÕI PE2

TRACED0 PE3

TRACED1 PE4

TRACED2 PE5

TRACED3 PE6

176/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 I/O có mục đích chung và chức năng thay thế (GPIO và AFIO)

Để tối ưu hóa số lượng GPIO miễn phí trong quá trình gỡ lỗi, ánh xạ này có thể được cấu hình
theo nhiều cách khác nhau bằng cách lập trình các bit SWJ_CFG[1:0] trong thanh ghi cấu hình
I/O gỡ lỗi và ánh xạ lại AF (AFIO_MAPR). Tham khảo Bảng 37.

Bảng 37. Ánh xạ cổng gỡ lỗi

Đã gán chân I/O SWJ

SWJ _CFG
Cổng gỡ lỗi có sẵn PA13 / PA14 / PB3 / JTDO/
[2:0] PA15 / PB4/
JTMS/ JTCK/S DẤU VẾT
JTDI NJTRST
SWDIO WCLK SWO

SWJ đầy đủ (JTAG-DP + SW-DP)


000 X XX X X
(Đặt lại trạng thái)

SWJ đầy đủ (JTAG-DP + SW-DP)


001 X X X x Miễn phí
nhưng không có NJTRST

JTAG-DP bị vô hiệu hóa và


010 X X Miễn phí Miễn phí(1) Miễn phí
Đã bật SW-DP

JTAG-DP bị vô hiệu hóa và


100 Miễn phí Miễn phí Miễn phí Miễn phí Miễn phí
SW-DP bị vô hiệu hóa

Khác Cấm - - - - -

1. Chỉ được phát hành nếu không sử dụng dấu vết không đồng bộ.

9.3.6 Ánh xạ lại chức năng thay thế ADC

Tham khảo thanh ghi cấu hình I/O gỡ lỗi và ánh xạ lại AF (AFIO_MAPR).

Bảng 38. Ánh xạ lại chức năng thay thế chuyển đổi được kích hoạt bên ngoài ADC1 (1)

Chức năng thay thế ADC1_ETRGINJ_REMAP = 0 ADC1_ETRGINJ_REMAP = 1

Chuyển đổi được đưa vào kích hoạt


Chuyển đổi được kích Chuyển đổi được kích hoạt bên
bên ngoài ADC1 được kết nối với
hoạt bên ngoài ADC1 ngoài ADC1 được kết nối với EXTI15
TIM8_CH4

1. Bản đồ lại chỉ khả dụng cho các thiết bị có mật độ cao và mật độ XL.

Bảng 39. Ánh xạ lại chức năng thay thế chuyển đổi thường xuyên kích hoạt bên ngoài ADC1(1)

Chức năng thay thế ADC1_ETRGREG_REMAP = 0 ADC1_ETRGREG_REMAP = 1

Chuyển đổi thường xuyên kích hoạt


Chuyển đổi thường xuyên Chuyển đổi thường xuyên kích hoạt
bên ngoài ADC1 được kết nối với
kích hoạt bên ngoài ADC1 bên ngoài ADC1 được kết nối với EXTI11
TIM8_TRGO

1. Bản đồ lại chỉ khả dụng cho các thiết bị có mật độ cao và mật độ XL.

Bảng 40. Ánh xạ lại chức năng thay thế chuyển đổi được kích hoạt bên ngoài ADC2 (1)

Chức năng thay thế ADC2_ETRGINJ_REMAP = 0 ADC2_ETRGINJ_REMAP = 1

Chuyển đổi được đưa vào kích hoạt


Chuyển đổi được kích Chuyển đổi được kích hoạt bên
bên ngoài ADC2 được kết nối với
hoạt bên ngoài ADC2 ngoài ADC2 được kết nối với EXTI 15
TIM8_CH4

1. Bản đồ lại chỉ khả dụng cho các thiết bị có mật độ cao và mật độ XL.

RM0008 Phiên bản 21 177/1136

196
Machine Translated by Google

I/O có mục đích chung và chức năng thay thế (GPIO và AFIO) RM0008

Bảng 41. Ánh xạ lại chức năng thay thế chuyển đổi thường xuyên kích hoạt bên ngoài ADC2(1)

Chức năng thay thế ADC2_ETRGREG_REG = 0 ADC2_ETRGREG_REG = 1

Chuyển đổi thường xuyên kích hoạt Chuyển đổi thường xuyên kích hoạt
Chuyển đổi thường xuyên kích hoạt
bên ngoài ADC2 được kết nối với bên ngoài ADC2 được kết nối với
bên ngoài ADC2
EXTI11 TIM8_TRGO

1. Bản đồ lại chỉ khả dụng cho các thiết bị có mật độ cao và mật độ XL.

9.3.7 Ánh xạ lại chức năng thay thế hẹn giờ

Có thể ánh xạ lại bộ định thời 4 kênh 1 đến 4 từ Cổng B sang Cổng D. Các khả năng ánh xạ lại
bộ định thời khác được liệt kê trong Bảng 44 đến Bảng 46. Tham khảo thanh ghi cấu
hình I/O gỡ lỗi và ánh xạ lại AF (AFIO_MAPR).

Bảng 42. Ánh xạ lại chức năng thay thế TIM5(1)

Hàm thay thế TIM5CH4_IREMAP = 0 TIM5CH4_IREMAP = 1

TIM5 Kênh4 được kết Đồng hồ bên trong LSI được kết nối với đầu vào
TIM5_CH4
nối với PA3 TIM5_CH4 cho mục đích hiệu chỉnh.

1. Bản đồ lại chỉ khả dụng cho các thiết bị đường dây kết nối, mật độ XL và mật độ cao.

Bảng 43. Ánh xạ lại chức năng thay thế TIM4

Chức năng thay thế TIM4_REMAP = 0 TIM4_REMAP = 1(1)

TIM4_CH1 PB6 PD12

TIM4_CH2 PB7 PD13

TIM4_CH3 PB8 PD14

TIM4_CH4 PB9 PD15

1. Bản đồ lại chỉ khả dụng cho gói 100 chân và gói 144 chân.

Bảng 44. Ánh xạ lại chức năng thay thế TIM3

TIM3_REMAP[1:0] = TIM3_REMAP[1:0] = TIM3_REMAP[1:0] =


Chức năng thay thế
“10” (bản sửa lại một phần)
“00” (không có bản đồ lại) “11” (bản sửa lại đầy đủ) (1)

TIM3_CH1 PA6 PB4 PC6

TIM3_CH2 PA7 PB5 PC7

TIM3_CH3 PB0 PC8

TIM3_CH4 PB1 PC9

1. Bản đồ lại chỉ khả dụng cho các gói 64 chân, 100 chân và 144 chân.

178/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 I/O có mục đích chung và chức năng thay thế (GPIO và AFIO)

Bảng 45. Ánh xạ lại chức năng thay thế TIM2

TIM2_REMAP TIM2_REMAP TIM2_REMAP TIM2_REMAP


Luân phiên
[1:0] = “00” [1:0] = [1:0] = [1:0] = “11”
chức năng
(không có bản đồ lại) “01” (bản sửa lại một phần)
“10” (bản sửa lại một phần)(1)
(bản sửa lại đầy đủ)(1)

TIM2_CH1_ETR(2) PA0 PA15 PA0 PA15

TIM2_CH2 PA1 PB3 PA1 PB3

TIM2_CH3 PA2 PB10

TIM2_CH4 PA3 PB11

1. Bản đồ lại không có sẵn trên gói 36 chân.

2. TIM_CH1 và TIM_ETR dùng chung một mã pin nhưng không thể sử dụng cùng lúc (đó là lý do tại sao chúng ta có
ký hiệu này: TIM2_CH1_ETR).

Bảng 46. Ánh xạ lại chức năng thay thế TIM1

Chức năng thay thế TIM1_REMAP[1:0] = TIM1_REMAP[1:0] = TIM1_REMAP[1:0] =


lập bản đồ “01” (bản sửa lại một phần)
“00” (không có bản đồ lại) “11” (bản sửa lại đầy đủ)(1)

TIM1_ETR PA12 PE7

TIM1_CH1 PA8 PE9

TIM1_CH2 PA9 PE11

TIM1_CH3 PA10 PE13

TIM1_CH4 PA11 PE14

TIM1_BKIN PB12(2) PA6 PE15

TIM1_CH1N PB13 PA7 PE8

TIM1_CH2N PB14 2) PB0 PE10

TIM1_CH3N PB15(2) PB1 PE12

1. Bản đồ lại chỉ khả dụng cho các gói 100 chân và 144 chân.

2. Bản đồ lại không có sẵn trên gói 36 chân.

Bảng 47. Ánh xạ lại TIM9(1)

Chức năng thay thế TIM9_REMAP = 0 TIM9_REMAP = 1

TIM9_CH1 PA2 PE5

TIM9_CH2 PA3 PE6

1. Tham khảo thanh ghi cấu hình I/O gỡ lỗi và ánh xạ lại AF Mục 9.4.7: Ánh xạ lại AF và gỡ lỗi I/O
thanh ghi cấu hình2 (AFIO_MAPR2).

Bảng 48. Ánh xạ lại TIM10(1)

Chức năng thay thế TIM10_REMAP = 0 TIM10_REMAP = 1

TIM10_CH1 PB8 PF6

1. Tham khảo thanh ghi cấu hình I/O gỡ lỗi và ánh xạ lại AF Mục 9.4.7: Ánh xạ lại AF và gỡ lỗi I/O
thanh ghi cấu hình2 (AFIO_MAPR2).

RM0008 Phiên bản 21 179/1136

196
Machine Translated by Google

I/O có mục đích chung và chức năng thay thế (GPIO và AFIO) RM0008

Bảng 49. Ánh xạ lại TIM11(1)

Chức năng thay thế TIM11_REMAP = 0 TIM11_REMAP = 1

TIM11_CH1 PB9 PF7

1. Tham khảo thanh ghi cấu hình I/O gỡ lỗi và ánh xạ lại AF Mục 9.4.7: Ánh xạ lại AF và gỡ lỗi I/O
thanh ghi cấu hình2 (AFIO_MAPR2).

Bảng 50. Ánh xạ lại TIM13(1)

Chức năng thay thế TIM13_REMAP = 0 TIM13_REMAP = 1

TIM13_CH1 PA6 PF8

1. Tham khảo thanh ghi cấu hình I/O gỡ lỗi và ánh xạ lại AF. Phần 9.4.7: Ánh xạ lại AF và gỡ lỗi I/O
thanh ghi cấu hình2 (AFIO_MAPR2).

Bảng 51. Ánh xạ lại TIM14(1)

Chức năng thay thế TIM14_REMAP = 0 TIM14_REMAP = 1

TIM14_CH1 PA7 PF9

1. Tham khảo thanh ghi cấu hình I/O gỡ lỗi và ánh xạ lại AF Mục 9.4.7: Ánh xạ lại AF và gỡ lỗi I/O
thanh ghi cấu hình2 (AFIO_MAPR2).

9.3.8 Ánh xạ lại chức năng thay thế USART

Tham khảo thanh ghi cấu hình I/O gỡ lỗi và ánh xạ lại AF (AFIO_MAPR).

Bảng 52. Ánh xạ lại USART3

USART3_REMAP[1:0] = USART3_REMAP[1:0] = USART3_REMAP[1:0] =


Chức năng thay thế
“00” (không có bản đồ lại) “01” (bản sửa lại một phần) (1)
“11” (bản sửa lại đầy đủ) (2)

USART3_TX PB10 PC10 PD8

USART3_RX PB11 PC11 PD9

USART3_CK PB12 PC12 PD10

USART3_CTS PB13 PD11

USART3_RTS PB14 PD12

1. Bản đồ lại chỉ khả dụng cho các gói 64 chân, 100 chân và 144 chân

2. Bản đồ lại chỉ khả dụng cho gói 100 chân và 144 chân.

Bảng 53. Ánh xạ lại USART2

Chức năng thay thế USART2_REMAP = 0 USART2_REMAP = 1(1)

USART2_CTS PA0 PD3

USART2_RTS PA1 PD4

USART2_TX PA2 PD5

USART2_RX PA3 PD6

USART2_CK PA4 PD7

1. Bản đồ lại chỉ khả dụng cho các gói 100 chân và 144 chân.

180/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 I/O có mục đích chung và chức năng thay thế (GPIO và AFIO)

Bảng 54. Ánh xạ lại USART1

Chức năng thay thế USART1_REMAP = 0 USART1_REMAP = 1

USART1_TX PA9 PB6

USART1_RX PA10 PB7

9.3.9 Ánh xạ lại chức năng thay thế I2C1

Tham khảo thanh ghi cấu hình I/O gỡ lỗi và ánh xạ lại AF (AFIO_MAPR)

Bảng 55. Ánh xạ lại I2C1

Chức năng thay thế I2C1_REMAP = 0 I2C1_REMAP = 1(1)

I2C1_SCL PB6 PB8

I2C1_SDA PB7 PB9

1. Bản đồ lại không có sẵn trên gói 36 chân.

9.3.10 Ánh xạ lại chức năng thay thế SPI1

Tham khảo thanh ghi cấu hình I/O gỡ lỗi và ánh xạ lại AF (AFIO_MAPR)

Bảng 56. Ánh xạ lại SPI1

Chức năng thay thế SPI1_REMAP = 0 SPI1_REMAP = 1

SPI1_NSS PA4 PA15

SPI1_SCK PA5 PB3

SPI1_MISO PA6 PB4

SPI1_MOSI PA7 PB5

9.3.11 Ánh xạ lại chức năng thay thế SPI3/I2S3

Tham khảo thanh ghi cấu hình I/O gỡ lỗi và ánh xạ lại AF (AFIO_MAPR). Bản remap này chỉ
có sẵn trong các thiết bị có đường kết nối.

Bảng 57. Ánh xạ lại SPI3/I2S3

Chức năng thay thế SPI3_REMAP = 0 SPI3_REMAP = 1

SPI3_NSS / I2S3_WS PA15 PA4

SPI3_SCK / I2S3_CK PB3 PC10

SPI3_MISO PB4 PC11

SPI3_MOSI / I2S3_SD PB5 PC12

9.3.12 Ánh xạ lại chức năng thay thế Ethernet

Tham khảo thanh ghi cấu hình I/O gỡ lỗi và ánh xạ lại AF (AFIO_MAPR). Ethernet chỉ khả dụng
trong các thiết bị có đường kết nối.

RM0008 Phiên bản 21 181/1136

196
Machine Translated by Google

I/O có mục đích chung và chức năng thay thế (GPIO và AFIO) RM0008

Bảng 58. Ánh xạ lại ETH

Chức năng thay thế ETH_REMAP = 0 ETH_REMAP = 1

RX_DV-CRS_DV PA7 PD8

RXD0 PC4 PD9

RXD1 PC5 PD10

RXD2 PB0 PD11

RXD3 PB1 PD12

182/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 I/O có mục đích chung và chức năng thay thế (GPIO và AFIO)

9,4 thanh ghi AFIO


Tham khảo Phần 2.2 trên trang 45 để biết danh sách các chữ viết tắt được sử dụng trong mô tả đăng ký.

Ghi chú: Để đọc/ghi các thanh ghi AFIO_EVCR, AFIO_MAPR và AFIO_EXTICRX, trước tiên phải bật đồng hồ AFIO. Tham khảo
Mục 7.3.7: Thanh ghi kích hoạt đồng hồ ngoại vi APB2 (RCC_APB2ENR).

Các thanh ghi ngoại vi phải được truy cập bằng từ (32-bit).

9.4.1 Thanh ghi điều khiển sự kiện (AFIO_EVCR)


Độ lệch địa chỉ: 0x00

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

EVOE CỔNG[2:0] mã PIN[3:0]


Kín đáo
rw rw rw rw rw rw rw rw

Bit 31:8 Dành riêng

Bit 7 EVOE: Cho phép đầu ra sự kiện

Thiết lập và xóa bằng phần mềm. Khi được đặt, đầu ra EVENTOUT Cortex® được kết nối với I/O được chọn bởi
các bit PORT[2:0] và PIN[3:0].

Bit 6:4 PORT[2:0]: Lựa chọn cổng

Thiết lập và xóa bằng phần mềm. Chọn cổng được sử dụng để xuất tín hiệu Cortex® EVENTOUT.

Lưu ý: Khả năng đầu ra tín hiệu EVENTOUT không được mở rộng sang các cổng PF và PG.

000: PA được chọn


001: PB được chọn
010: PC được chọn
011: PD được chọn
100: PE đã chọn

Bits 3:0 PIN[3:0]: Lựa chọn chân (x = A .. E)

Thiết lập và xóa bằng phần mềm. Chọn chân được sử dụng để xuất tín hiệu Cortex® EVENTOUT.
0000: Px0 được chọn
0001: Px1 được chọn
0010: Px2 được chọn
0011: Px3 được chọn
...

1111: Px15 được chọn

RM0008 Phiên bản 21 183/1136

196
Machine Translated by Google

I/O có mục đích chung và chức năng thay thế (GPIO và AFIO) RM0008

9.4.2 Thanh ghi cấu hình I/O gỡ lỗi và ánh xạ lại AF (AFIO_MAPR)

Độ lệch địa chỉ: 0x04

Giá trị đặt lại: 0x0000 0000

Bản đồ bộ nhớ và định nghĩa bit cho các thiết bị có mật độ thấp, trung bình-
cao và XL:

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

ADC2_E ADC2_E ADC1_E ADC1_E TIM5CH4


SWJ_ TRGREG TRGREG
TRGINJ_ TRGINJ_
Kín đáo CFG[2:0] Kín đáo _IREMAP
_REMAP GỠ LẠI _REMAP GỠ LẠI

www rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3210

PD01_ CAN_REMAP TIM4_ TIM3_REMAP TIM2_REMAP TIM1_REMAP USART3_ USART2_ USART1_ I2C1_ SPI1_
GỠ LẠI [1:0] GỠ LẠI [1:0] [1:0] [1:0] GỬI LẠI[1:0] GỠ LẠI GỠ LẠI GỠ LẠI GỠ LẠI

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:27 Dành riêng

Bit 26:24 SWJ_CFG[2:0]: Cấu hình JTAG dây nối tiếp

Các bit này chỉ ghi (khi đọc, giá trị không được xác định). Chúng được sử dụng để định cấu hình SWJ và
theo dõi I/O chức năng thay thế. SWJ (JTAG dây nối tiếp) hỗ trợ truy cập JTAG hoặc SWD vào cổng gỡ lỗi
Cortex®. Trạng thái mặc định sau khi thiết lập lại là SWJ ON không có dấu vết.
Điều này cho phép bật chế độ JTAG hoặc SW bằng cách gửi một chuỗi cụ thể trên chân JTMS/JTCK.

000: SWJ đầy đủ (JTAG-DP + SW-DP): Đặt lại trạng thái


001: SWJ đầy đủ (JTAG-DP + SW-DP) nhưng không có NJTRST
010: JTAG-DP bị vô hiệu hóa và SW-DP được kích hoạt
100: JTAG-DP bị vô hiệu hóa và SW-DP bị vô hiệu hóa
Các kết hợp khác: không có hiệu lực

Bit 23:21 Được bảo lưu.

Bit 20 ADC2_ETRGREG_REMAP: Ánh xạ lại chuyển đổi thường xuyên kích hoạt bên ngoài ADC 2

Thiết lập và xóa bằng phần mềm. Bit này điều khiển đầu vào kích hoạt được kết nối với chuyển đổi thường
xuyên kích hoạt bên ngoài ADC2. Khi bit này được đặt lại, chuyển đổi thường xuyên kích hoạt bên
ngoài ADC2 được kết nối với EXTI11. Khi bit này được đặt, chuyển đổi thường xuyên sự kiện bên ngoài
ADC2 được kết nối với TIM8_TRGO.

Bit 19 ADC2_ETRGINJ_REMAP: Ánh xạ chuyển đổi được đưa vào trình kích hoạt bên ngoài ADC 2

Thiết lập và xóa bằng phần mềm. Bit này điều khiển đầu vào kích hoạt được kết nối với chuyển đổi được
đưa vào kích hoạt bên ngoài ADC2. Khi bit này được đặt lại, bộ chuyển đổi được kích hoạt bên
ngoài ADC2 được kết nối với EXTI15. Khi bit này được đặt, chuyển đổi đưa vào sự kiện bên ngoài ADC2
được kết nối với TIM8_Channel4.

Bit 18 ADC1_ETRGREG_REMAP: Ánh xạ lại chuyển đổi thường xuyên kích hoạt bên ngoài ADC 1

Thiết lập và xóa bằng phần mềm. Bit này điều khiển đầu vào kích hoạt được kết nối với ADC1

Kích hoạt bên ngoài chuyển đổi thường xuyên. Khi đặt lại, chuyển đổi thường xuyên kích hoạt
bên ngoài ADC1 được kết nối với EXTI11. Khi được đặt, chuyển đổi thường xuyên Sự kiện bên ngoài ADC1
được kết nối với TIM8 TRGO.

184/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 I/O có mục đích chung và chức năng thay thế (GPIO và AFIO)

Bit 17 ADC1_ETRGINJ_REMAP: ADC 1 Ánh xạ lại chuyển đổi được đưa vào kích hoạt bên ngoài

Thiết lập và xóa bằng phần mềm. Bit này điều khiển đầu vào kích hoạt được kết nối với ADC1

Chuyển đổi được chèn kích hoạt bên ngoài. Khi đặt lại, bộ chuyển đổi được kích hoạt bên ngoài
ADC1 được kết nối với EXTI15. Khi được đặt, chuyển đổi được đưa vào Sự kiện bên ngoài ADC1 được kết nối
với Kênh TIM84.

Bit 16 TIM5CH4_IREMAP: Bản sửa lại nội bộ TIM5 kênh4

Thiết lập và xóa bằng phần mềm. Bit này kiểm soát ánh xạ bên trong TIM5_CH4. Khi đặt lại bộ hẹn giờ TIM5_CH4
được kết nối với PA3. Khi được đặt, đồng hồ bên trong LSI được kết nối với đầu vào TIM5_CH4 cho mục
đích hiệu chỉnh.

Lưu ý: Bit này chỉ khả dụng trong các thiết bị dòng có giá trị mật độ cao.

Bit 15 PD01_REMAP: Ánh xạ cổng D0/Cổng D1 trên OSC_IN/OSC_OUT

bit này được thiết lập và xóa bằng phần mềm. Nó kiểm soát việc ánh xạ chức năng GPIO PD0 và PD1. Khi
bộ tạo dao động HSE không được sử dụng (ứng dụng chạy trên RC 8 MHz bên trong)
PD0 và PD1 có thể được ánh xạ trên OSC_IN và OSC_OUT. Tính năng này chỉ khả dụng trên các gói 36, 48 và 64
chân (PD0 và PD1 có sẵn trên các gói 100 chân và 144 chân, không cần ánh xạ lại).

0: Không ánh xạ lại PD0 và PD1


1: PD0 được ánh xạ lại trên OSC_IN, PD1 được ánh xạ lại trên OSC_OUT,

Bit 14:13 CAN_REMAP[1:0]: CÓ THỂ ánh xạ lại chức năng thay thế

Các bit này được thiết lập và xóa bằng phần mềm. Chúng kiểm soát việc ánh xạ các chức năng thay thế CAN_RX
và CAN_TX trong các thiết bị có một giao diện CAN duy nhất.

00: CAN_RX ánh xạ tới PA11, CAN_TX ánh xạ tới PA12


01: Không sử dụng

10: CAN_RX ánh xạ tới PB8, CAN_TX ánh xạ tới PB9 (không có sẵn trên gói 36 chân)

11: CAN_RX ánh xạ tới PD0, CAN_TX ánh xạ tới PD1

Bit 12 TIM4_REMAP: Ánh xạ lại TIM4

bit này được thiết lập và xóa bằng phần mềm. Nó điều khiển việc ánh xạ các kênh TIM4 từ 1 đến 4 lên các
cổng GPIO.

0: Không ánh xạ lại (TIM4_CH1/PB6, TIM4_CH2/PB7, TIM4_CH3/PB8, TIM4_CH4/PB9)


1: Bản sửa lại đầy đủ (TIM4_CH1/PD12, TIM4_CH2/PD13, TIM4_CH3/PD14, TIM4_CH4/PD15)

Lưu ý: TIM4_ETR trên PE0 không được ánh xạ lại.

Bit 11:10 TIM3_REMAP[1:0]: Ánh xạ lại TIM3

Các bit này được thiết lập và xóa bằng phần mềm. Họ kiểm soát việc ánh xạ các kênh TIM3 từ 1 đến 4 trên các
cổng GPIO.

00: Không ánh xạ lại (CH1/PA6, CH2/PA7, CH3/PB0, CH4/PB1)


01: Không sử dụng

10: Ánh xạ lại một phần (CH1/PB4, CH2/PB5, CH3/PB0, CH4/PB1)


11: Bản đồ lại đầy đủ (CH1/PC6, CH2/PC7, CH3/PC8, CH4/PC9)

Lưu ý: TIM3_ETR trên PE0 không được ánh xạ lại.

Bit 9:8 TIM2_REMAP[1:0]: Ánh xạ lại TIM2

Các bit này được thiết lập và xóa bằng phần mềm. Chúng kiểm soát việc ánh xạ các kênh TIM2 từ 1 đến 4 và bộ
kích hoạt bên ngoài (ETR) trên các cổng GPIO.

00: Không ánh xạ lại (CH1/ETR/PA0, CH2/PA1, CH3/PA2, CH4/PA3)


01: Ánh xạ lại một phần (CH1/ETR/PA15, CH2/PB3, CH3/PA2, CH4/PA3)
10: Ánh xạ lại một phần (CH1/ETR/PA0, CH2/PA1, CH3/PB10, CH4/PB11)
11: Bản sửa lại đầy đủ (CH1/ETR/PA15, CH2/PB3, CH3/PB10, CH4/PB11)

RM0008 Phiên bản 21 185/1136

196
Machine Translated by Google

I/O có mục đích chung và chức năng thay thế (GPIO và AFIO) RM0008

Bit 7:6 TIM1_REMAP[1:0]: Ánh xạ lại TIM1

Các bit này được thiết lập và xóa bằng phần mềm. Chúng kiểm soát việc ánh xạ các kênh TIM1 từ 1 đến 4, 1N đến

3N, bộ kích hoạt bên ngoài (ETR) và đầu vào ngắt (BKIN) trên các cổng GPIO.

00: Không ánh xạ lại (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PB12, CH1N/PB13, CH2N/PB14,

CH3N/PB15)

01: Ánh xạ lại một phần (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PA6, CH1N/PA7, CH2N/PB0,

CH3N/PB1)
10: không sử dụng

11: Bản đồ lại đầy đủ (ETR/PE7, CH1/PE9, CH2/PE11, CH3/PE13, CH4/PE14, BKIN/PE15, CH1N/PE8, CH2N/PE10,

CH3N/PE12)

Bit 5:4 USART3_REMAP[1:0]: Ánh xạ lại USART3

Các bit này được thiết lập và xóa bằng phần mềm. Chúng kiểm soát việc ánh xạ các chức năng thay thế

USART3 CTS, RTS,CK,TX và RX trên các cổng GPIO.

00: Không có ánh xạ lại (TX/PB10, RX/PB11, CK/PB12, CTS/PB13, RTS/PB14)

01: Ánh xạ lại một phần (TX/PC10, RX/PC11, CK/PC12, CTS/PB13, RTS/PB14)
10: không sử dụng

11: Bản sửa lại đầy đủ (TX/PD8, RX/PD9, CK/PD10, CTS/PD11, RTS/PD12)

Bit 3 USART2_REMAP: Ánh xạ lại USART2

bit này được thiết lập và xóa bằng phần mềm. Nó điều khiển việc ánh xạ các chức năng thay thế USART2 CTS,

RTS,CK,TX và RX trên các cổng GPIO.

0: Không ánh xạ lại (CTS/PA0, RTS/PA1, TX/PA2, RX/PA3, CK/PA4)

1: Ánh xạ lại (CTS/PD3, RTS/PD4, TX/PD5, RX/PD6, CK/PD7)

Bit 2 USART1_REMAP: Ánh xạ lại USART1

bit này được thiết lập và xóa bằng phần mềm. Nó điều khiển việc ánh xạ các chức năng thay thế USART1 TX

và RX trên các cổng GPIO.

0: Không có ánh xạ lại (TX/PA9, RX/PA10)

1: Bản đồ lại (TX/PB6, RX/PB7)

Bit 1 I2C1_REMAP: Ánh xạ lại I2C1

bit này được thiết lập và xóa bằng phần mềm. Nó điều khiển việc ánh xạ các chức năng thay thế I2C1 SCL

và SDA trên các cổng GPIO.

0: Không có ánh xạ lại (SCL/PB6, SDA/PB7)

1: Ánh xạ lại (SCL/PB8, SDA/PB9)

Bit 0 SPI1_REMAP: Ánh xạ lại SPI1

bit này được thiết lập và xóa bằng phần mềm. Nó điều khiển việc ánh xạ các chức năng thay thế SPI1 NSS,

SCK, MISO, MOSI trên các cổng GPIO.

0: Không ánh xạ lại (NSS/PA4, SCK/PA5, MISO/PA6, MOSI/PA7)

1: Ánh xạ lại (NSS/PA15, SCK/PB3, MISO/PB4, MOSI/PB5)

186/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 I/O có mục đích chung và chức năng thay thế (GPIO và AFIO)

Bản đồ bộ nhớ và định nghĩa bit cho các thiết bị đường kết nối:

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

TIM2IT
PTP_P SPI3_ MII_R CAN2_ TIM5C
R1_ REMA SWJ_ REMA ETH_R
PS_RE IREMA MII_SE EMAP H4_IRE
Res. BẢN ĐỒ P Res. CFG[2:0] L P Kín đáo BẢN ĐỒ
P

rw rw rw w w w rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

PD01_ TIM4_ USART2 USART1 I2C1_ SPI1_


REMA CAN1_REMAP REMA TIM3_REMAP TIM2_REMAP TIM1_REMAP USART3_ REMA REMA
_ _
P [1:0]
P [1:0] [1:0] [1:0] GỬI LẠI[1:0] GỠ LẠI GỠ LẠI P P

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 30 PTP_PPS_REMAP: Ánh xạ lại Ethernet PTP PPS

bit này được thiết lập và xóa bằng phần mềm. Nó cho phép Ethernet MAC PPS_PTS được xuất ra trên chân PB5.

0: PTP_PPS không xuất ra trên chân PB5.


1: PTP_PPS là đầu ra trên chân PB5.

Lưu ý: Bit này chỉ có sẵn trong các thiết bị có đường kết nối và được dành riêng.

Bit 29 TIM2ITR1_IREMAP: Ánh xạ lại 1 bộ kích hoạt nội bộ TIM2

bit này được thiết lập và xóa bằng phần mềm. Nó kiểm soát ánh xạ nội bộ TIM2_ITR1.
0: Kết nối nội bộ TIM2_ITR1 với đầu ra Ethernet PTP cho mục đích hiệu chuẩn.
1: Kết nối đầu ra USBOTG SOF (Bắt đầu khung hình) với TIM2_ITR1 cho mục đích hiệu chỉnh.

Lưu ý: Bit này chỉ có sẵn trong các thiết bị có đường kết nối và được dành riêng.

Bit 28 SPI3_REMAP: Ánh xạ lại SPI3/I2S3

bit này được thiết lập và xóa bằng phần mềm. Nó điều khiển việc ánh xạ các chức năng thay thế SPI3_NSS/
I2S3_WS, SPI3_SCK/I2S3_CK, SPI3_MISO, SPI3_MOSI/I2S3_SD trên các cổng GPIO.

0: Không ánh xạ lại (SPI_NSS-I2S3_WS/PA15, SPI3_SCK-I2S3_CK/PB3, SPI3_MISO/PB4, SPI3_MOSI-I2S3_SD/PB5)

1: Ánh xạ lại (SPI3_NSS-I2S3_WS/PA4, SPI3_SCK-I2S3_CK/PC10, SPI3_MISO/PC11, SPI3_MOSI-I2S3_SD/PC12)

Lưu ý: Bit này chỉ có sẵn trong các thiết bị có đường kết nối và được dành riêng.

Bit 27 dành riêng

Bit 26:24 SWJ_CFG[2:0]: Cấu hình JTAG dây nối tiếp

Các bit này chỉ ghi (khi đọc, giá trị không được xác định). Chúng được sử dụng để định cấu hình SWJ và
theo dõi I/O chức năng thay thế. SWJ (JTAG dây nối tiếp) hỗ trợ truy cập JTAG hoặc SWD vào cổng gỡ lỗi
Cortex®. Trạng thái mặc định sau khi thiết lập lại là SWJ ON không có dấu vết.
Điều này cho phép bật chế độ JTAG hoặc SW bằng cách gửi một chuỗi cụ thể trên chân JTMS/JTCK.

000: SWJ đầy đủ (JTAG-DP + SW-DP): Đặt lại trạng thái

001: SWJ đầy đủ (JTAG-DP + SW-DP) nhưng không có NJTRST


010: JTAG-DP bị vô hiệu hóa và SW-DP được kích hoạt

100: JTAG-DP bị vô hiệu hóa và SW-DP bị vô hiệu hóa

Các kết hợp khác: không có hiệu lực

RM0008 Phiên bản 21 187/1136

196
Machine Translated by Google

I/O có mục đích chung và chức năng thay thế (GPIO và AFIO) RM0008

Bit 23 MII_RMII_SEL: Lựa chọn MII hoặc RMII

bit này được thiết lập và xóa bằng phần mềm. Nó cấu hình Ethernet MAC bên trong để sử dụng với MII hoặc
RMII PHY bên ngoài.

0: Định cấu hình Ethernet MAC để kết nối với MII PHY 1: Định cấu hình

Ethernet MAC để kết nối với RMII PHY

Lưu ý: Bit này chỉ có sẵn trong các thiết bị có đường kết nối và được dành riêng.

Bit 22 CAN2_REMAP: Ánh xạ lại I/O CAN2

bit này được thiết lập và xóa bằng phần mềm. Nó điều khiển các chân CAN2_TX và CAN2_RX.

0: Không ánh xạ lại (CAN2_RX/PB12, CAN2_TX/PB13)

1: Ánh xạ lại (CAN2_RX/PB5, CAN2_TX/PB6)

Lưu ý: Bit này chỉ có sẵn trong các thiết bị có đường kết nối và được dành riêng.

Bit 21 ETH_REMAP: Ánh xạ lại I/O Ethernet MAC

bit này được thiết lập và xóa bằng phần mềm. Nó điều khiển các kết nối Ethernet MAC với PHY.

0: Không ánh xạ lại (RX_DV-CRS_DV/PA7, RXD0/PC4, RXD1/PC5, RXD2/PB0, RXD3/PB1)

1: Ánh xạ lại (RX_DV-CRS_DV/PD8, RXD0/PD9, RXD1/PD10, RXD2/PD11, RXD3/PD12)

Lưu ý: Bit này chỉ có sẵn trong các thiết bị có đường kết nối và được dành riêng.

Bit 20:17 Dành riêng

Bit 16 TIM5CH4_IREMAP: Bản sửa lại nội bộ TIM5 kênh4

Thiết lập và xóa bằng phần mềm. Bit này kiểm soát ánh xạ bên trong TIM5_CH4. Khi đặt lại bộ hẹn giờ TIM5_CH4
được kết nối với PA3. Khi được đặt, đồng hồ bên trong LSI được kết nối với đầu vào TIM5_CH4 cho mục
đích hiệu chỉnh.

Bit 15 PD01_REMAP: Ánh xạ cổng D0/Cổng D1 trên OSC_IN/OSC_OUT

bit này được thiết lập và xóa bằng phần mềm. Nó kiểm soát việc ánh xạ chức năng GPIO PD0 và PD1. Khi
bộ tạo dao động HSE không được sử dụng (ứng dụng chạy trên RC 8 MHz bên trong)
PD0 và PD1 có thể được ánh xạ trên OSC_IN và OSC_OUT. Tính năng này chỉ khả dụng trên các gói 36, 48 và 64
chân (PD0 và PD1 có sẵn trên các gói 100 chân và 144 chân, không cần ánh xạ lại).

0: Không ánh xạ lại PD0 và PD1

1: PD0 được ánh xạ lại trên OSC_IN, PD1 được ánh xạ lại trên OSC_OUT,

Bit 14:13 CAN1_REMAP[1:0]: Ánh xạ lại chức năng thay thế CAN1

Các bit này được thiết lập và xóa bằng phần mềm. Chúng kiểm soát việc ánh xạ các hàm thay thế CAN1_RX và
CAN1_TX.

00: CAN1_RX ánh xạ tới PA11, CAN1_TX ánh xạ tới PA12


01: Không sử dụng

10: CAN1_RX ánh xạ tới PB8, CAN1_TX ánh xạ tới PB9 (không có sẵn trên gói 36 chân)

11: CAN1_RX ánh xạ tới PD0, CAN1_TX ánh xạ tới PD1

Bit 12 TIM4_REMAP: Ánh xạ lại TIM4

bit này được thiết lập và xóa bằng phần mềm. Nó điều khiển việc ánh xạ các kênh TIM4 từ 1 đến 4 lên các
cổng GPIO.

0: Không ánh xạ lại (TIM4_CH1/PB6, TIM4_CH2/PB7, TIM4_CH3/PB8, TIM4_CH4/PB9)

1: Bản sửa lại đầy đủ (TIM4_CH1/PD12, TIM4_CH2/PD13, TIM4_CH3/PD14, TIM4_CH4/PD15)

Lưu ý: TIM4_ETR trên PE0 không được ánh xạ lại.

188/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 I/O có mục đích chung và chức năng thay thế (GPIO và AFIO)

Bit 11:10 TIM3_REMAP[1:0]: Ánh xạ lại TIM3

Các bit này được thiết lập và xóa bằng phần mềm. Họ kiểm soát việc ánh xạ các kênh TIM3 từ 1 đến 4 trên các
cổng GPIO.

00: Không ánh xạ lại (CH1/PA6, CH2/PA7, CH3/PB0, CH4/PB1)


01: Không sử dụng

10: Ánh xạ lại một phần (CH1/PB4, CH2/PB5, CH3/PB0, CH4/PB1)

11: Bản đồ lại đầy đủ (CH1/PC6, CH2/PC7, CH3/PC8, CH4/PC9)

Lưu ý: TIM3_ETR trên PE0 không được ánh xạ lại.

Bit 9:8 TIM2_REMAP[1:0]: Ánh xạ lại TIM2

Các bit này được thiết lập và xóa bằng phần mềm. Chúng kiểm soát việc ánh xạ các kênh TIM2 từ 1 đến 4 và bộ
kích hoạt bên ngoài (ETR) trên các cổng GPIO.

00: Không ánh xạ lại (CH1/ETR/PA0, CH2/PA1, CH3/PA2, CH4/PA3)

01: Ánh xạ lại một phần (CH1/ETR/PA15, CH2/PB3, CH3/PA2, CH4/PA3)

10: Ánh xạ lại một phần (CH1/ETR/PA0, CH2/PA1, CH3/PB10, CH4/PB11)

11: Bản sửa lại đầy đủ (CH1/ETR/PA15, CH2/PB3, CH3/PB10, CH4/PB11)

Bit 7:6 TIM1_REMAP[1:0]: Ánh xạ lại TIM1

Các bit này được thiết lập và xóa bằng phần mềm. Chúng kiểm soát việc ánh xạ các kênh TIM1 từ 1 đến 4, 1N
đến 3N, bộ kích hoạt bên ngoài (ETR) và đầu vào ngắt (BKIN) trên các cổng GPIO.

00: Không ánh xạ lại (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PB12, CH1N/PB13, CH2N/
PB14, CH3N/PB15)

01: Ánh xạ lại một phần (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PA6, CH1N/PA7, CH2N/PB0,
CH3N/PB1)
10: không sử dụng

11: Bản đồ lại đầy đủ (ETR/PE7, CH1/PE9, CH2/PE11, CH3/PE13, CH4/PE14, BKIN/PE15, CH1N/PE8, CH2N/PE10,
CH3N/PE12)

Bit 5:4 USART3_REMAP[1:0]: Ánh xạ lại USART3

Các bit này được thiết lập và xóa bằng phần mềm. Chúng kiểm soát việc ánh xạ các chức năng thay thế
USART3 CTS, RTS,CK,TX và RX trên các cổng GPIO.
00: Không có ánh xạ lại (TX/PB10, RX/PB11, CK/PB12, CTS/PB13, RTS/PB14)
01: Ánh xạ lại một phần (TX/PC10, RX/PC11, CK/PC12, CTS/PB13, RTS/PB14)
10: không sử dụng

11: Bản sửa lại đầy đủ (TX/PD8, RX/PD9, CK/PD10, CTS/PD11, RTS/PD12)

Bit 3 USART2_REMAP: Ánh xạ lại USART2

bit này được thiết lập và xóa bằng phần mềm. Nó điều khiển việc ánh xạ các chức năng thay thế USART2 CTS,
RTS,CK,TX và RX trên các cổng GPIO.
0: Không ánh xạ lại (CTS/PA0, RTS/PA1, TX/PA2, RX/PA3, CK/PA4)
1: Ánh xạ lại (CTS/PD3, RTS/PD4, TX/PD5, RX/PD6, CK/PD7)

RM0008 Phiên bản 21 189/1136

196
Machine Translated by Google

I/O có mục đích chung và chức năng thay thế (GPIO và AFIO) RM0008

Bit 2 USART1_REMAP: Ánh xạ lại USART1

bit này được thiết lập và xóa bằng phần mềm. Nó điều khiển việc ánh xạ các chức năng thay thế USART1 TX

và RX trên các cổng GPIO.

0: Không có ánh xạ lại (TX/PA9, RX/PA10)

1: Bản đồ lại (TX/PB6, RX/PB7)

Bit 1 I2C1_REMAP: Ánh xạ lại I2C1

bit này được thiết lập và xóa bằng phần mềm. Nó điều khiển việc ánh xạ các chức năng thay thế I2C1 SCL

và SDA trên các cổng GPIO.

0: Không có ánh xạ lại (SCL/PB6, SDA/PB7)

1: Ánh xạ lại (SCL/PB8, SDA/PB9)

Bit 0 SPI1_REMAP: Ánh xạ lại SPI1

bit này được thiết lập và xóa bằng phần mềm. Nó điều khiển việc ánh xạ các chức năng thay thế SPI1 NSS,

SCK, MISO, MOSI trên các cổng GPIO.

0: Không ánh xạ lại (NSS/PA4, SCK/PA5, MISO/PA6, MOSI/PA7)

1: Ánh xạ lại (NSS/PA15, SCK/PB3, MISO/PB4, MOSI/PB5)

190/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 I/O có mục đích chung và chức năng thay thế (GPIO và AFIO)

9.4.3 Thanh ghi cấu hình ngắt bên ngoài 1 (AFIO_EXTICR1)


Độ lệch địa chỉ: 0x08

Giá trị đặt lại: 0x0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

EXTI3[3:0] EXTI2[3:0] EXTI1[3:0] EXTI0[3:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:16 Dành riêng

Bit 15:0 EXTIx[3:0]: Cấu hình EXTI x (x= 0 đến 3)

Các bit này được ghi bằng phần mềm để chọn đầu vào nguồn cho ngắt ngoài EXTIx.
Tham khảo Phần 10.2.5: Ánh xạ dòng sự kiện/ngắt bên ngoài
0000: chân PA[x]
0001: chân PB[x]
0010: chân PC[x]
0011: Chân PD[x]
0100: Chân PE[x]
0101: Chân PF[x]
0110: Chân PG[x]

9.4.4 Thanh ghi cấu hình ngắt bên ngoài 2 (AFIO_EXTICR2)


Độ lệch địa chỉ: 0x0C

Giá trị đặt lại: 0x0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

EXTI7[3:0] EXTI6[3:0] EXTI5[3:0] EXTI4[3:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:16 Dành riêng

Bit 15:0 EXTIx[3:0]: Cấu hình EXTI x (x= 4 đến 7)

Các bit này được ghi bằng phần mềm để chọn đầu vào nguồn cho ngắt ngoài EXTIx.
0000: chân PA[x]
0001: chân PB[x]
0010: chân PC[x]
0011: Chân PD[x]
0100: Chân PE[x]
0101: Chân PF[x]
0110: Chân PG[x]

RM0008 Phiên bản 21 191/1136

196
Machine Translated by Google

I/O có mục đích chung và chức năng thay thế (GPIO và AFIO) RM0008

9.4.5 Thanh ghi cấu hình ngắt bên ngoài 3 (AFIO_EXTICR3)


Độ lệch địa chỉ: 0x10

Giá trị đặt lại: 0x0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

EXTI11[3:0] EXTI10[3:0] EXTI9[3:0] EXTI8[3:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:16 Dành riêng

Bit 15:0 EXTIx[3:0]: Cấu hình EXTI x (x= 8 đến 11)

Các bit này được ghi bằng phần mềm để chọn đầu vào nguồn cho ngắt ngoài EXTIx.
0000: chân PA[x]
0001: chân PB[x]
0010: chân PC[x]
0011: Chân PD[x]
0100: Chân PE[x]
0101: Chân PF[x]
0110: Chân PG[x]

9.4.6 Thanh ghi cấu hình ngắt bên ngoài 4 (AFIO_EXTICR4)


Độ lệch địa chỉ: 0x14

Giá trị đặt lại: 0x0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

EXTI15[3:0] EXTI14[3:0] EXTI13[3:0] EXTI12[3:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:16 Dành riêng

Bit 15:0 EXTIx[3:0]: Cấu hình EXTI x (x= 12 đến 15)

Các bit này được ghi bằng phần mềm để chọn đầu vào nguồn cho ngắt ngoài EXTIx.
0000: chân PA[x]
0001: chân PB[x]
0010: chân PC[x]
0011: Chân PD[x]
0100: Chân PE[x]
0101: Chân PF[x]
0110: Chân PG[x]

192/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 I/O có mục đích chung và chức năng thay thế (GPIO và AFIO)

9.4.7 AF ánh xạ lại và gỡ lỗi thanh ghi cấu hình I/O2 (AFIO_MAPR2)

Độ lệch địa chỉ: 0x1C

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

FSM
TIM14_ TIM13_ TIM11_ TIM10_ TIM9_
C_NA REMA REMA REMA REMA REMA
Kín đáo P P P P P Kín đáo
DV

rw rw rw rw rw rw

Bit 31:11 Được bảo lưu.

Bit 10 FSMC_NADV: Kết nối/ngắt kết nối NADV

bit này được thiết lập và xóa bằng phần mềm. Nó kiểm soát việc sử dụng tín hiệu FSMC_NADV tùy chọn.

0: Tín hiệu NADV được kết nối với đầu ra (mặc định)
1: Tín hiệu NADV không được kết nối. Chân I/O có thể được sử dụng bởi một thiết bị ngoại vi khác.

Bit 9 TIM14_REMAP: Ánh xạ lại TIM14

bit này được thiết lập và xóa bằng phần mềm. Nó điều khiển việc ánh xạ chức năng thay thế TIM14_CH1 lên
các cổng GPIO.

0: Không có bản đồ lại (PA7)

1: Bản đồ lại (PF9)

Bit 8 TIM13_REMAP: Ánh xạ lại TIM13

bit này được thiết lập và xóa bằng phần mềm. Nó điều khiển việc ánh xạ chức năng thay thế TIM13_CH1 lên
các cổng GPIO.

0: Không có bản đồ lại (PA6)

1: Bản đồ lại (PF8)

Bit 7 TIM11_REMAP: Ánh xạ lại TIM11

bit này được thiết lập và xóa bằng phần mềm. Nó điều khiển việc ánh xạ chức năng thay thế TIM11_CH1 lên
các cổng GPIO.

0: Không có bản đồ lại (PB9)

1: Bản đồ lại (PF7)

Bit 6 TIM10_REMAP: Ánh xạ lại TIM10

bit này được thiết lập và xóa bằng phần mềm. Nó điều khiển việc ánh xạ chức năng thay thế TIM10_CH1 lên
các cổng GPIO.

0: Không có bản đồ lại (PB8)

1: Bản đồ lại (PF6)

Bit 5 TIM9_REMAP: Ánh xạ lại TIM9

bit này được thiết lập và xóa bằng phần mềm. Nó điều khiển việc ánh xạ các chức năng thay thế
TIM9_CH1 và TIM9_CH2 lên các cổng GPIO.

0: Không có ánh xạ lại (TIM9_CH1 trên PA2 và TIM9_CH2 trên PA3)


1: Ánh xạ lại (TIM9_CH1 trên PE5 và TIM9_CH2 trên PE6)

Bit 4:0 Dự trữ.

RM0008 Phiên bản 21 193/1136

196
Machine Translated by Google

I/O có mục đích chung và chức năng thay thế (GPIO và AFIO) RM0008

9,5 Bản đồ đăng ký GPIO và AFIO


Các bảng sau đây cung cấp bản đồ thanh ghi GPIO và AFIO cũng như các giá trị đặt lại.

Tham khảo Bảng 3 trên trang 50 để biết địa chỉ biên của thanh ghi.

Bảng 59. Bản đồ đăng ký GPIO và giá trị đặt lại

2
3
1
5
ố8
s

6
7

0
119

4
Đăng ký

91

71

61

51
41
31
123

2
0
8
0
9
ùl
iạ B

CNF CHẾ ĐỘ CNF CHẾ ĐỘ CNF CHẾ ĐỘ CNF CHẾ ĐỘ CNF MOD CNF CHẾ ĐỘ CNF MOD CNF CHẾ ĐỘ
GPIOx
E3 E1
0x00 _CRL
7 [1:0] 7 [1:0] 6 [1:0] 6 [1:0] 5 [1:0] 5 [1:0] 4 [1:0] 4 [1:0] 3 [1:0] [1:0] 2 [1:0] 2 [1:0] 1 [1:0] [1:0] 0 [1:0] 0 [1:0]

Giá trị đặt lại 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0

CNF CHẾ ĐỘ CNF CHẾ ĐỘ CNF CHẾ ĐỘ CNF CHẾ ĐỘ CNF MOD CNF CHẾ ĐỘ CNF MOD CNF CHẾ ĐỘ
GPIOx
15 15 14 14 13 13 12 12 E11 10 10 E9
0x04 _CRH
[1:0] [1:0] [1:0] [1:0] [1:0] [1:0] [1:0] [1:0] 11 [1:0] [1:0] [1:0] [1:0] 9 [1:0] [1:0] 8 [1:0] 8 [1:0]

Giá trị đặt lại 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0

GPIOx
IDry
0x08 _IDR Kín đáo

Đặt lại giá trị 0000000 00000000 0

GPIOx
ODRy
0x0C _ODR Kín đáo

Đặt lại giá trị 0000000 00000000 0

GPIOx
BR[15:0] BSR[15:0]
0x10 _BSRR

Giá trị đặt lại 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

GPIOx
BR[15:0]
0x14 _BRR Kín đáo

Đặt lại giá trị 0000000 00000000 0

GPIOx
LCK[15:0]
0x18 _LCKR Kín đáo
KKCL

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

194/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 I/O có mục đích chung và chức năng thay thế (GPIO và AFIO)

Bảng 60. Bản đồ đăng ký AFIO và giá trị đặt lại

1
5
ố8
s

7
6

0
3
9

2
4
11
91
81
71
61
51
41
31
21

01
13
03
92
82
72
62
52
42
32
22
12
02
Đăng ký bù đắp

CỔNG [2:
AFIO_EVCR mã PIN[3:0]
0x00 Kín đáo 0]

Đặt lại giá trị 0000000

AFIO_MAPR
thiết bị có mật
Dự trữ
0x04 độ thấp, Kín đáo
d
]2[GFC_JWS

]1[GFC_JWS

]0[GFC_JWS

PAMER_1C2I

PAMER_1IPS
PAMER_10DP

PAPMER_4MIT
trung bình, cao và XL

]1[PAMER_1NAC

]0[PAMER_1NAC

PAMER_2TRASU

PAMER_1TRASU
]1[PAPMER_3MIT

]0[PAPMER_3MIT

]1[PAPMER_2MIT

]0[PAPMER_2MIT

]1[PAPMER_1MIT

]0[PAPMER_1MIT

]1[PAMER_3TRASU

]0[PAMER_3TRASU
PAMERI_4HC5MIT
PAMER_JNIGRTE_2CDA

PAMER_JNIGRTE_1CDA
PAMER_GERGRTE_2CDA

PAMER_GERGRTE_1CDA

Đặt lại giá trị 0 0 0 00000 00000000000000000

AFIO_MAPR
thiết bị đường
0x04
kết nối
íđ
K

íđ
K

]2[GFC_JWS

]1[GFC_JWS

]0[GFC_JWS

PAMER_HTE

PAMER_1C2I


PAMER_3IPS

PAMER_1IPS
LES_IIMR_IIM

PAMER_10DP
o

PAMER_2NAC

íđ
K

PAPMER_4MIT

]1[PAMER_1NAC

]0[PAMER_1NAC
o

PAMER_2TRASU

PAMER_1TRASU
]1[PAPMER_3MIT

]0[PAPMER_3MIT

]1[PAPMER_2MIT

]0[PAPMER_2MIT

]1[PAPMER_1MIT

]0[PAPMER_1MIT
PAMER_SPP_PTP

PAMERI_1RTI2MIT

]1[PAMER_3TRASU

]0[PAMER_3TRASU
PAMERI_4HC5MIT

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

SWJ_
AFIO_MAPR
0x04 Kín đáo CFG[2:0] Kín đáo
íđ
K

PAMER_1C2I

PAMER_1IPS
PAMER_4MIT
PAMER_10DP

PAMER_2TRASU

PAMER_1TRASU
]0:1[PAMER_3MIT

]0:1[PAMER_2MIT

]0:1[PAMER_1MIT
PAMERI_4HC5MIT

]0:1[PAMER_3TRASU

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

AFIO_EXTICR1 EXTI3[3:0] EXTI2[3:0] EXTI1[3:0] EXTI0[3:0]


0x08 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

AFIO_EXTICR2 EXTI7[3:0] EXTI6[3:0] EXTI5[3:0] EXTI4[3:0]


0x0C Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

AFIO_EXTICR3 EXTI11[3:0] EXTI10[3:0] EXTI9[3:0] EXTI8[3:0]


0x10 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

AFIO_EXTICR4 EXTI15[3:0] EXTI14[3:0] EXTI13[3:0] EXTI12[3:0]


0x14 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

AFIO_MAPR
0x1C 2 Kín đáo Kín đáo
PAMER_9MIT
PAMER_11MIT
PAMER_41MIT

PAMER_31MIT

PAMER_01MIT
VDAN_CMSF

Đặt lại giá trị 000000

RM0008 Phiên bản 21 195/1136


196
Machine Translated by Google

I/O có mục đích chung và chức năng thay thế (GPIO và AFIO) RM0008

Bảng 60. Sơ đồ đăng ký AFIO và giá trị đặt lại (tiếp theo)

1
ố8
s

7
2
3
4
5
6

0
9
11
91
81
71
61
51
41
31
21

01
13
03
92
82
72
62
52
42
32
22
12
02
Đăng ký bù đắp

AFIO_MAPR2
0x1C Kín đáo Res.

VDAN_CMSF

PAMER_CEC
IL
M

PAMER_21MIT

PAMER_41MIT

PAMER_31MIT

PAMER_71MIT

PAMER_61MIT

PAMER_51MIT
SẠ
_CI

PAMER_AMD_1MIT
7A6M
_ IR
AE
M T
D
0 0 0 0 0 0 0 0 0 0 0

_CAD_P
Đặt lại giá trị

196/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Gián đoạn và sự kiện

10 Gián đoạn và sự kiện

Các thiết bị mật độ thấp là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

Các thiết bị có mật độ trung bình là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 64 đến 128 Kbyte.

Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ
nhớ Flash nằm trong khoảng từ 256 đến 512 Kbyte.

Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ


bộ nhớ Flash nằm trong khoảng từ 768 Kbyte đến 1 Mbyte.

Các thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

Phần này áp dụng cho toàn bộ họ STM32F10xxx, trừ khi có quy định khác.

10.1 Bộ điều khiển ngắt vectơ lồng nhau (NVIC)


Đặc trưng

• 68 (không bao gồm mười sáu dòng ngắt Cortex®-M3)


• 16 mức ưu tiên có thể lập trình (4 bit ưu tiên ngắt được sử dụng)

• Xử lý ngoại lệ và ngắt có độ trễ thấp

• Kiểm soát quản lý năng lượng

• Triển khai các thanh ghi điều khiển hệ thống

NVIC và giao diện lõi bộ xử lý được kết hợp chặt chẽ với nhau, cho phép xử lý ngắt có độ trễ
thấp và xử lý hiệu quả các ngắt đến muộn.

Tất cả các ngắt bao gồm các ngoại lệ cốt lõi đều được quản lý bởi NVIC. Để biết thêm thông tin
về các ngoại lệ và lập trình NVIC, hãy tham khảo sách hướng dẫn lập trình STM32F10xxx
Cortex®-M3 (xem Tài liệu liên quan ở trang 1).

10.1.1 Thanh ghi giá trị hiệu chuẩn SysTick

Giá trị hiệu chuẩn SysTick được đặt thành 9000, cung cấp cơ sở thời gian tham chiếu là 1 ms với
đồng hồ SysTick được đặt thành 9 MHz (HCLK/8 tối đa).

RM0008 Phiên bản 21 197/1136

214
Machine Translated by Google

Gián đoạn và sự kiện RM0008

10.1.2 Các vectơ ngắt và ngoại lệ

Bảng 61 và Bảng 63 lần lượt là các bảng vectơ cho đường kết nối và các thiết bị
STM32F10xxx khác.

Bảng 61. Bảng vector các thiết bị đường kết nối

Loại ưu
Từ viết tắt Sự miêu tả Địa chỉ
ựư
nêui S
t
hv
cứụ C

tiên

- - - - Kín đáo 0x0000_0000

- -3 đã sửa lại Cài lại 0x0000_0004

Ngắt không thể che dấu. Hệ thống


- -2 NMI cố định bảo mật đồng hồ RCC (CSS) được 0x0000_0008
liên kết với vectơ NMI.

- -1 đã sửa lỗi cứng Tất cả các loại lỗi 0x0000_000C

- 0 MemQuản lý có thể cài đặt Quản lý bộ nhớ 0x0000_0010

- 1 BusFault có thể ổn định Lỗi tìm nạp trước, lỗi truy cập bộ nhớ 0x0000_0014

-
2 lỗi sử dụng có thể cài đặt Hướng dẫn không xác định hoặc trạng thái bất hợp pháp 0x0000_0018

- - - - 0x0000_001C -
Kín đáo
0x0000_002B

Cuộc gọi dịch vụ hệ thống thông qua


- 3 SVCall có thể cài đặt 0x0000_002C
hướng dẫn SWI

- 4 màn hình gỡ lỗi có thể cài đặt Màn hình gỡ lỗi 0x0000_0030

- - - - Kín đáo 0x0000_0034

- 5 PendSV có thể cài đặt Yêu cầu có thể chờ xử lý đối với dịch vụ hệ thống 0x0000_0038

- 6 SysTick có thể cài đặt Đồng hồ bấm giờ hệ thống 0x0000_003C

0 7 WWDG có thể cài đặt Cơ quan giám sát cửa sổ bị gián đoạn 0x0000_0040

PVD thông qua ngắt phát hiện dòng


1 8 PVD ổn định 0x0000_0044
EXTI

2 9 TAMPER có thể cài đặt Ngắt giả mạo 0x0000_0048

3 10 RTC có thể cài đặt Ngắt toàn cầu RTC 0x0000_004C

4 11 FLASH có thể cài đặt Ngắt toàn cầu flash 0x0000_0050

5 12 RCC có thể cài đặt RCC toàn cầu ngắt 0x0000_0054

6 13 EXTI0 có thể cài đặt Ngắt EXTI Line0 0x0000_0058

7 14 EXTI1 có thể cài đặt Ngắt dòng EXTI 1 0x0000_005C

8 15 EXTI2 có thể cài đặt Ngắt EXTI Line2 0x0000_0060

9 16 EXTI3 có thể cài đặt Ngắt EXTI Line3 0x0000_0064

10 17 EXTI4 có thể cài đặt Ngắt EXTI Line4 0x0000_0068

198/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Gián đoạn và sự kiện

Bảng 61. Bảng vector các thiết bị đường kết nối (tiếp theo)

Loại ưu
Từ viết tắt Sự miêu tả Địa chỉ
ựư
nêui S
t
hv
cứụ C

tiên

11 18 ngắt toàn cục DMA1_Channel1 DMA1 Channel1 có thể cài đặt 0x0000_006C

12 19 Ngắt toàn cục DMA1_Channel2 DMA1 Channel2 có thể cài đặt 0x0000_0070

13 20 Ngắt toàn cục DMA1_Channel3 DMA1 Channel3 có thể cài đặt 0x0000_0074

14 21 ngắt toàn cục DMA1_Channel4 DMA1 Channel4 có thể cài đặt 0x0000_0078

15 22 ngắt toàn cục DMA1_Channel5 DMA1 Channel5 có thể cài đặt 0x0000_007C

16 23 Ngắt toàn cục DMA1_Channel6 DMA1 Channel6 có thể cài đặt 0x0000_0080

17 24 Ngắt toàn cục DMA1_Channel7 DMA1 Channel7 có thể cài đặt 0x0000_0084

18 25 ADC1_2 có thể cài đặt Ngắt toàn cục ADC1 và ADC2 0x0000_0088

19 26 có thể cài đặt CAN1_TX CAN1 TX ngắt 0x0000_008C

20 27 có thể cài đặt CAN1_RX0 CAN1 RX0 ngắt 0x0000_0090

21 28 có thể cài đặt CAN1_RX1 CAN1 RX1 ngắt 0x0000_0094

22 29 có thể cài đặt CAN1_SCE CAN1 SCE ngắt 0x0000_0098

23 30 có thể cài đặt EXTI9_5 Ngắt dòng EXTI [9:5] 0x0000_009C

24 31 TIM1_BRK có thể cài đặt TIM1 Ngắt ngắt 0x0000_00A0

25 32 TIM1_UP có thể cài đặt Ngắt cập nhật TIM1 0x0000_00A4

Ngắt kích hoạt và chuyển đổi


26 33 TIM1_TRG_COM có thể cài đặt 0x0000_00A8
TIM1

27 34 TIM1_CC có thể cài đặt Chụp TIM1 So sánh ngắt 0x0000_00AC

28 35 TIM2 có thể cài đặt Ngắt toàn cầu TIM2 0x0000_00B0

29 36 TIM3 có thể cài đặt Ngắt toàn cầu TIM3 0x0000_00B4

30 37 TIM4 có thể cài đặt Ngắt toàn cầu TIM4 0x0000_00B8

31 38 I2C1_EV có thể cài đặt Ngắt sự kiện I2C1 0x0000_00BC

32 39 I2C1_ER có thể cài đặt Ngắt lỗi I2C1 0x0000_00C0

33 40 I2C2_EV có thể cài đặt Sự kiện I2C2 bị gián đoạn 0x0000_00C4

34 41 I2C2_ER có thể cài đặt Ngắt lỗi I2C2 0x0000_00C8

35 42 SPI1 có thể cài đặt Ngắt toàn cầu SPI1 0x0000_00CC

36 43 SPI2 có thể cài đặt Ngắt toàn cầu SPI2 0x0000_00D0

37 44 có thể cài đặt USART1 Ngắt toàn cầu USART1 0x0000_00D4

38 45 có thể cài đặt USART2 Ngắt toàn cầu USART2 0x0000_00D8

39 46 có thể cài đặt USART3 Ngắt toàn cầu USART3 0x0000_00DC

RM0008 Phiên bản 21 199/1136

214
Machine Translated by Google

Gián đoạn và sự kiện RM0008

Bảng 61. Bảng vector các thiết bị đường kết nối (tiếp theo)

Loại ưu
Từ viết tắt Sự miêu tả Địa chỉ
ựư
nêui S
t
hv
cứụ C

tiên

40 47 có thể cài đặt EXTI15_10 Đường EXTI[15:10] bị gián đoạn 0x0000_00E0

Báo động RTC thông qua ngắt


41 48 RTCA có thể cài đặt được 0x0000_00E4
dòng EXTI

USB On-The-Go FS Đánh thức


42 49 có thể cài đặt đượcOTG_FS_WKUP 0x0000_00E8
thông qua ngắt dòng EXTI

- - - - 0x0000_00EC -
Kín đáo
0x0000_0104

50 57 TIM5 có thể cài đặt Ngắt toàn cầu TIM5 0x0000_0108

51 58 SPI3 có thể cài đặt Ngắt toàn cầu SPI3 0x0000_010C

52 59 UART4 có thể cài đặt Ngắt toàn cầu UART4 0x0000_0110

53 60 có thể cài đặt UART5 Ngắt toàn cầu UART5 0x0000_0114

54 61 TIM6 có thể cài đặt Ngắt toàn cầu TIM6 0x0000_0118

55 62 có thể cài đặt TIM7 Ngắt toàn cầu TIM7 0x0000_011C

56 63 Ngắt toàn cục DMA2_Channel1 DMA2 Channel1 có thể cài đặt 0x0000_0120

57 64 Ngắt toàn cục DMA2_Channel2 DMA2 Channel2 có thể cài đặt 0x0000_0124

58 65 Ngắt toàn cục DMA2_Channel3 DMA2 Channel3 có thể cài đặt 0x0000_0128

59 66 Ngắt toàn cục DMA2_Channel4 DMA2 Channel4 có thể cài đặt 0x0000_012C

60 67 Ngắt toàn cục DMA2_Channel5 DMA2 Channel5 có thể cài đặt 0x0000_0130

61 68 ETH có thể cài đặt Ngắt toàn cầu Ethernet 0x0000_0134

Ethernet Wakeup thông qua ngắt dòng


62 69 có thể cài đặt ETH_WKUP 0x0000_0138
EXTI

63 70 có thể cài đặt CAN2_TX CAN2 TX ngắt 0x0000_013C

64 71 có thể cài đặt CAN2_RX0 CAN2 RX0 ngắt 0x0000_0140

65 72 có thể cài đặt CAN2_RX1 CAN2 RX1 ngắt 0x0000_0144

66 73 có thể cài đặt CAN2_SCE CAN2 SCE ngắt 0x0000_0148

67 74 có thể cài đặt được USB On The Go FS ngắt toàn cầu 0x0000_014C

200/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Gián đoạn và sự kiện

Bảng 62. Bảng vectơ cho thiết bị có mật độ XL

Loại ưu
Từ viết tắt Sự miêu tả Địa chỉ
ựư
nêui S
t
hv
cứụ C

tiên

- - Kín đáo 0x0000_0000


- -

- -3 đã sửa Cài lại Cài lại 0x0000_0004

Ngắt không thể che dấu được. Hệ


- -2 NMI cố định thống bảo mật đồng hồ RCC (CSS) 0x0000_0008
được liên kết với vectơ NMI.

- -1 đã sửa lỗi cứng Tất cả các loại lỗi 0x0000_000C

- 0 MemQuản lý có thể cài đặt Quản lý bộ nhớ 0x0000_0010

- 1 BusFault có thể cài đặt được Lỗi tìm nạp trước, lỗi truy cập bộ nhớ 0x0000_0014

- 2 lỗi sử dụng có thể cài đặt Hướng dẫn không xác định hoặc trạng thái bất hợp pháp 0x0000_0018

- - 0x0000_001C -
- -
Kín đáo
0x0000_002B

Cuộc gọi dịch vụ hệ thống thông qua


- 3 SVCall có thể cài đặt 0x0000_002C
hướng dẫn SWI

- 4 màn hình gỡ lỗi có thể cài đặt Màn hình gỡ lỗi 0x0000_0030

- - Kín đáo 0x0000_0034


- -

- 5 PendSV có thể cài đặt Yêu cầu có thể chờ xử lý đối với dịch vụ hệ thống 0x0000_0038

- 6 SysTick có thể cài đặt Đồng hồ bấm giờ Systick 0x0000_003C

0 7 WWDG có thể cài đặt Cơ quan giám sát cửa sổ bị gián đoạn 0x0000_0040

PVD thông qua ngắt phát hiện dòng


1 8 PVD ổn định 0x0000_0044
EXTI

2 9 TAMPER có thể cài đặt Ngắt giả mạo 0x0000_0048

3 10 RTC có thể cài đặt Ngắt toàn cầu RTC 0x0000_004C

4 11 FLASH có thể cài đặt Ngắt toàn cầu flash 0x0000_0050

5 12 RCC có thể cài đặt RCC toàn cầu ngắt 0x0000_0054

6 13 EXTI0 có thể cài đặt Ngắt EXTI Line0 0x0000_0058

7 14 EXTI1 có thể cài đặt Ngắt dòng EXTI 1 0x0000_005C

8 15 EXTI2 có thể cài đặt Ngắt EXTI Line2 0x0000_0060

9 16 EXTI3 có thể cài đặt Ngắt EXTI Line3 0x0000_0064

10 17 EXTI4 có thể cài đặt Ngắt EXTI Line4 0x0000_0068

11 18 DMA1_Channel1 có thể cài đặt Ngắt toàn cầu DMA1 Channel1 0x0000_006C

12 19 DMA1_Channel2 có thể cài đặt Ngắt toàn cầu DMA1 Channel2 0x0000_0070

13 20 DMA1_Channel3 có thể cài đặt Ngắt toàn cầu DMA1 Channel3 0x0000_0074

RM0008 Phiên bản 21 201/1136

214
Machine Translated by Google

Gián đoạn và sự kiện RM0008

Bảng 62. Bảng vectơ cho thiết bị có mật độ XL (tiếp theo)

Loại ưu
Từ viết tắt Sự miêu tả Địa chỉ
ựư
nêui S
t
hv
cứụ C

tiên

14 21 DMA1_Channel4 có thể cài đặt Ngắt toàn cầu DMA1 Channel4 0x0000_0078

15 22 DMA1_Channel5 có thể cài đặt Ngắt toàn cầu DMA1 Channel5 0x0000_007C

16 23 DMA1_Channel6 có thể cài đặt Ngắt toàn cầu DMA1 Channel6 0x0000_0080

17 24 DMA1_Channel7 có thể cài đặt Ngắt toàn cầu DMA1 Channel7 0x0000_0084

18 25 ADC1_2 có thể cài đặt Ngắt toàn cục ADC1 và ADC2 0x0000_0088

USB có mức độ ưu tiên cao hoặc


19 26 USB_HP_CAN_TX có thể cài đặt 0x0000_008C
ngắt CAN TX

USB có mức độ ưu tiên thấp hoặc


20 27 USB_LP_CAN_RX0 có thể cài đặt 0x0000_0090
ngắt CAN RX0

21 28 CAN_RX1 có thể cài đặt CÓ THỂ ngắt RX1 0x0000_0094

22 29 có thể cài đặt CAN_SCE CAN SCE ngắt 0x0000_0098

23 30 có thể cài đặt EXTI9_5 Ngắt dòng EXTI [9:5] 0x0000_009C

Ngắt ngắt TIM1 và ngắt toàn cục TIM9


24 31 TIM1_BRK_TIM9 có thể cài đặt 0x0000_00A0

Ngắt cập nhật TIM1 và ngắt toàn


25 32 TIM1_UP_TIM10 có thể cài đặt 0x0000_00A4
cục TIM10

Ngắt kích hoạt và chuyển mạch


26 33 TIM1_TRG_COM_TIM11 có thể cài đặt 0x0000_00A8
TIM1 và ngắt toàn cục TIM11

27 34 TIM1_CC có thể cài đặt Chụp TIM1 So sánh ngắt 0x0000_00AC

28 35 TIM2 có thể cài đặt Ngắt toàn cầu TIM2 0x0000_00B0

29 36 TIM3 có thể cài đặt Ngắt toàn cầu TIM3 0x0000_00B4

30 37 TIM4 có thể cài đặt Ngắt toàn cầu TIM4 0x0000_00B8

31 38 I2C1_EV có thể cài đặt Ngắt sự kiện I2C1 0x0000_00BC

32 39 I2C1_ER có thể cài đặt Ngắt lỗi I2C1 0x0000_00C0

33 40 I2C2_EV có thể cài đặt Sự kiện I2C2 bị gián đoạn 0x0000_00C4

34 41 I2C2_ER có thể cài đặt Ngắt lỗi I2C2 0x0000_00C8

35 42 SPI1 có thể cài đặt Ngắt toàn cầu SPI1 0x0000_00CC

36 43 SPI2 có thể cài đặt Ngắt toàn cầu SPI2 0x0000_00D0

37 44 có thể cài đặt USART1 Ngắt toàn cầu USART1 0x0000_00D4

38 45 có thể cài đặt USART2 Ngắt toàn cầu USART2 0x0000_00D8

39 46 có thể cài đặt USART3 Ngắt toàn cầu USART3 0x0000_00DC

40 47 có thể cài đặt EXTI15_10 Đường EXTI[15:10] bị gián đoạn 0x0000_00E0

202/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Gián đoạn và sự kiện

Bảng 62. Bảng vectơ cho thiết bị có mật độ XL (tiếp theo)

Loại ưu
Từ viết tắt Sự miêu tả Địa chỉ
ựư
nêui S
t
hv
cứụ C

tiên

Báo động RTC thông qua ngắt


41 48 RTCA có thể cài đặt được 0x0000_00E4
dòng EXTI

Đánh thức USB từ trạng thái tạm dừng đến


42 49 USBWakeUp có thể cài đặt 0x0000_00E8
Ngắt dòng EXTI

Ngắt ngắt TIM8 và ngắt toàn cục


43 50 TIM8_BRK_TIM12 có thể cài đặt 0x0000_00EC
TIM12

Ngắt cập nhật TIM8 và ngắt toàn


44 51 TIM8_UP_TIM13 có thể cài đặt 0x0000_00F0
cục TIM13

Ngắt kích hoạt và chuyển mạch


45 52 TIM8_TRG_COM_TIM14 có thể cài đặt 0x0000_00F4
TIM8 và ngắt toàn cục TIM14

46 53 TIM8_CC có thể cài đặt Chụp TIM8 So sánh ngắt 0x0000_00F8

47 54 ADC3 có thể cài đặt Ngắt toàn cầu ADC3 0x0000_00FC

48 55 FSMC có thể cài đặt Ngắt toàn cầu FSMC 0x0000_0100

49 56 SDIO có thể cài đặt Ngắt toàn cầu SDIO 0x0000_0104

50 57 TIM5 có thể cài đặt Ngắt toàn cầu TIM5 0x0000_0108

51 58 SPI3 có thể cài đặt Ngắt toàn cầu SPI3 0x0000_010C

52 59 UART4 có thể cài đặt Ngắt toàn cầu UART4 0x0000_0110

53 60 có thể cài đặt UART5 Ngắt toàn cầu UART5 0x0000_0114

54 61 TIM6 có thể cài đặt Ngắt toàn cầu TIM6 0x0000_0118

55 62 có thể cài đặt TIM7 Ngắt toàn cầu TIM7 0x0000_011C

56 63 DMA2_Channel1 có thể cài đặt Ngắt toàn cầu DMA2 Channel1 0x0000_0120

57 64 DMA2_Channel2 có thể cài đặt Ngắt toàn cầu DMA2 Channel2 0x0000_0124

58 65 DMA2_Channel3 có thể cài đặt Ngắt toàn cầu DMA2 Channel3 0x0000_0128

DMA2 Kênh4 và DMA2


59 66 DMA2_Channel4_5 có thể cài đặt 0x0000_012C
Ngắt toàn cầu kênh5

RM0008 Phiên bản 21 203/1136

214
Machine Translated by Google

Gián đoạn và sự kiện RM0008

Bảng 63. Bảng vectơ cho các thiết bị STM32F10xxx khác

Loại ưu
Từ viết tắt Sự miêu tả Địa chỉ
ựư
nêui S
t
hv
cứụ C

tiên

- - - - Kín đáo 0x0000_0000

- -3 đã sửa lại Cài lại 0x0000_0004

Ngắt không thể che dấu. Hệ thống


- -2 NMI cố định bảo mật đồng hồ RCC (CSS) được 0x0000_0008
liên kết với vectơ NMI.

- -1 đã sửa lỗi cứng Tất cả các loại lỗi 0x0000_000C

- 0 MemQuản lý có thể cài đặt Quản lý bộ nhớ 0x0000_0010

- 1 BusFault có thể ổn định Lỗi tìm nạp trước, lỗi truy cập bộ nhớ 0x0000_0014

-
2 lỗi sử dụng có thể cài đặt Hướng dẫn không xác định hoặc trạng thái bất hợp pháp 0x0000_0018

- - - - 0x0000_001C -
Kín đáo
0x0000_002B

Cuộc gọi dịch vụ hệ thống thông qua


- 3 SVCall có thể cài đặt 0x0000_002C
hướng dẫn SWI

- 4 màn hình gỡ lỗi có thể cài đặt Màn hình gỡ lỗi 0x0000_0030

- - - - Kín đáo 0x0000_0034

- 5 PendSV có thể cài đặt Yêu cầu có thể chờ xử lý đối với dịch vụ hệ thống 0x0000_0038

- 6 SysTick có thể cài đặt Đồng hồ bấm giờ hệ thống 0x0000_003C

0 7 WWDG có thể cài đặt Cơ quan giám sát cửa sổ bị gián đoạn 0x0000_0040

PVD thông qua ngắt phát hiện dòng


1 8 PVD ổn định 0x0000_0044
EXTI

2 9 TAMPER có thể cài đặt Ngắt giả mạo 0x0000_0048

3 10 RTC có thể cài đặt Ngắt toàn cầu RTC 0x0000_004C

4 11 FLASH có thể cài đặt Ngắt toàn cầu flash 0x0000_0050

5 12 RCC có thể cài đặt RCC toàn cầu ngắt 0x0000_0054

6 13 EXTI0 có thể cài đặt Ngắt EXTI Line0 0x0000_0058

7 14 EXTI1 có thể cài đặt Ngắt dòng EXTI 1 0x0000_005C

8 15 EXTI2 có thể cài đặt Ngắt EXTI Line2 0x0000_0060

9 16 EXTI3 có thể cài đặt Ngắt EXTI Line3 0x0000_0064

10 17 EXTI4 có thể cài đặt Ngắt EXTI Line4 0x0000_0068

11 18 ngắt toàn cục DMA1_Channel1 DMA1 Channel1 có thể cài đặt 0x0000_006C

12 19 Ngắt toàn cục DMA1_Channel2 DMA1 Channel2 có thể cài đặt 0x0000_0070

13 20 Ngắt toàn cục DMA1_Channel3 DMA1 Channel3 có thể cài đặt 0x0000_0074

204/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Gián đoạn và sự kiện

Bảng 63. Bảng vectơ cho các thiết bị STM32F10xxx khác (tiếp theo)

Loại ưu
Từ viết tắt Sự miêu tả Địa chỉ
ựư
nêui S
t
hv
cứụ C

tiên

14 21 ngắt toàn cục DMA1_Channel4 DMA1 Channel4 có thể cài đặt 0x0000_0078

15 22 ngắt toàn cục DMA1_Channel5 DMA1 Channel5 có thể cài đặt 0x0000_007C

16 23 Ngắt toàn cục DMA1_Channel6 DMA1 Channel6 có thể cài đặt 0x0000_0080

17 24 Ngắt toàn cục DMA1_Channel7 DMA1 Channel7 có thể cài đặt 0x0000_0084

18 25 ADC1_2 có thể cài đặt Ngắt toàn cục ADC1 và ADC2 0x0000_0088

USB_HP_CAN_ Ngắt mức ưu tiên cao USB hoặc


19 26 có thể ổn định 0x0000_008C
TX CAN TX

USB_LP_CAN_ USB có mức độ ưu tiên thấp hoặc CAN RX0


20 27 có thể ổn định 0x0000_0090
RX0 bị gián đoạn

21 28 CAN_RX1 có thể cài đặt CÓ THỂ ngắt RX1 0x0000_0094

22 29 có thể cài đặt CAN_SCE CAN SCE ngắt 0x0000_0098

23 30 có thể cài đặt EXTI9_5 Ngắt dòng EXTI [9:5] 0x0000_009C

24 31 TIM1_BRK có thể cài đặt TIM1 Ngắt ngắt 0x0000_00A0

25 32 TIM1_UP có thể cài đặt Ngắt cập nhật TIM1 0x0000_00A4

Ngắt kích hoạt và chuyển đổi


26 33 TIM1_TRG_COM có thể cài đặt 0x0000_00A8
TIM1

27 34 TIM1_CC có thể cài đặt Chụp TIM1 So sánh ngắt 0x0000_00AC

28 35 TIM2 có thể cài đặt Ngắt toàn cầu TIM2 0x0000_00B0

29 36 TIM3 có thể cài đặt Ngắt toàn cầu TIM3 0x0000_00B4

30 37 TIM4 có thể cài đặt Ngắt toàn cầu TIM4 0x0000_00B8

31 38 I2C1_EV có thể cài đặt Ngắt sự kiện I2C1 0x0000_00BC

32 39 I2C1_ER có thể cài đặt Ngắt lỗi I2C1 0x0000_00C0

33 40 I2C2_EV có thể cài đặt Sự kiện I2C2 bị gián đoạn 0x0000_00C4

34 41 I2C2_ER có thể cài đặt Ngắt lỗi I2C2 0x0000_00C8

35 42 SPI1 có thể cài đặt Ngắt toàn cầu SPI1 0x0000_00CC

36 43 SPI2 có thể cài đặt Ngắt toàn cầu SPI2 0x0000_00D0

37 44 có thể cài đặt USART1 Ngắt toàn cầu USART1 0x0000_00D4

38 45 có thể cài đặt USART2 Ngắt toàn cầu USART2 0x0000_00D8

39 46 có thể cài đặt USART3 Ngắt toàn cầu USART3 0x0000_00DC

40 47 có thể cài đặt EXTI15_10 Đường EXTI[15:10] bị gián đoạn 0x0000_00E0

Báo động RTC thông qua ngắt


41 48 RTCA có thể cài đặt được 0x0000_00E4
dòng EXTI

RM0008 Phiên bản 21 205/1136

214
Machine Translated by Google

Gián đoạn và sự kiện RM0008

Bảng 63. Bảng vectơ cho các thiết bị STM32F10xxx khác (tiếp theo)

Loại ưu
Từ viết tắt Sự miêu tả Địa chỉ
ựư
nêui S
t
hv
cứụ C

tiên

Đánh thức USB từ trạng thái tạm dừng đến


42 49 USB có thể cài đặtWakeup 0x0000_00E8
Ngắt dòng EXTI

43 50 TIM8_BRK có thể cài đặt TIM8 Ngắt ngắt 0x0000_00EC

44 51 TIM8_UP có thể cài đặt TIM8 Cập nhật gián đoạn 0x0000_00F0

Ngắt kích hoạt và chuyển mạch


45 52 TIM8_TRG_COM có thể cài đặt 0x0000_00F4
TIM8

46 53 TIM8_CC có thể cài đặt Chụp TIM8 So sánh ngắt 0x0000_00F8

47 54 ADC3 có thể cài đặt Ngắt toàn cầu ADC3 0x0000_00FC

48 55 FSMC có thể cài đặt Ngắt toàn cầu FSMC 0x0000_0100

49 56 SDIO có thể cài đặt Ngắt toàn cầu SDIO 0x0000_0104

50 57 TIM5 có thể cài đặt Ngắt toàn cầu TIM5 0x0000_0108

51 58 SPI3 có thể cài đặt Ngắt toàn cầu SPI3 0x0000_010C

52 59 UART4 có thể cài đặt Ngắt toàn cầu UART4 0x0000_0110

53 60 có thể cài đặt UART5 Ngắt toàn cầu UART5 0x0000_0114

54 61 TIM6 có thể cài đặt Ngắt toàn cầu TIM6 0x0000_0118

55 62 có thể cài đặt TIM7 Ngắt toàn cầu TIM7 0x0000_011C

56 63 Ngắt toàn cục DMA2_Channel1 DMA2 Channel1 có thể cài đặt 0x0000_0120

57 64 Ngắt toàn cục DMA2_Channel2 DMA2 Channel2 có thể cài đặt 0x0000_0124

58 65 Ngắt toàn cục DMA2_Channel3 DMA2 Channel3 có thể cài đặt 0x0000_0128

DMA2 Kênh4 và DMA2


59 66 DMA2_Channel4_5 có thể cài đặt 0x0000_012C
Ngắt toàn cầu kênh5

206/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Gián đoạn và sự kiện

10.2 Bộ điều khiển sự kiện/ngắt bên ngoài (EXTI)

Bộ điều khiển sự kiện/ngắt bên ngoài bao gồm tối đa 20 bộ phát hiện cạnh trong các thiết bị
đường kết nối hoặc 19 bộ phát hiện cạnh trong các thiết bị khác để tạo yêu cầu sự kiện/ngắt.
Mỗi dòng đầu vào có thể được cấu hình độc lập để chọn loại (sự kiện hoặc ngắt) và sự kiện
kích hoạt tương ứng (tăng hoặc giảm hoặc cả hai). Mỗi dòng cũng có thể được che dấu
một cách độc lập. Một thanh ghi đang chờ xử lý duy trì dòng trạng thái của các yêu cầu ngắt

10.2.1 Các tính năng chính

Các tính năng chính của bộ điều khiển EXTI như sau:

• Kích hoạt và mặt nạ độc lập trên mỗi dòng sự kiện/sự kiện

• Bit trạng thái dành riêng cho mỗi dòng ngắt •

Tạo tối đa 20 yêu cầu sự kiện/ngắt phần mềm


• Phát hiện tín hiệu bên ngoài có độ rộng xung thấp hơn chu kỳ xung nhịp APB2. Tham khảo
phần đặc tính điện của biểu dữ liệu để biết chi tiết về thông số này.

10.2.2 Sơ đồ khối

Sơ đồ khối được hiển thị trong Hình 20.

Hình 20. Sơ đồ khối bộ điều khiển sự kiện/ngắt bên ngoài

Xe buýt AMBA APB

PCLK2
Giao diện ngoại vi

19 19 19 19 19

Ngắt Phần mềm Kích Rơi


Chưa giải quyết

mặt nạ ngắt hoạt tăng cò súng


lời yêu cầu
sự kiện lựa chọn lựa chọn
đăng ký đăng ký
đăng ký đăng ký đăng ký

19 19 19 19
Để làm gián đoạn NVIC
bộ điều khiển

19

Xung Phát hiện cạnh


Đầu vào
19 máy phát điện 19 19 mạch điện
Đường kẻ

Sự kiện
mặt nạ
đăng ký

MS19816V1

RM0008 Phiên bản 21 207/1136

214
Machine Translated by Google

Gián đoạn và sự kiện RM0008

10.2.3 Quản lý sự kiện đánh thức

STM32F10xxx có thể xử lý các sự kiện bên ngoài hoặc bên trong để đánh thức lõi (WFE). Sự kiện đánh
thức có thể được tạo bằng cách:

• cho phép ngắt trong thanh ghi điều khiển ngoại vi nhưng không phải trong NVIC và cho phép bit
SEVONPEND trong thanh ghi Điều khiển hệ thống Cortex®-M3. Khi MCU tiếp tục từ WFE, bit
chờ xử lý ngắt ngoại vi và bit chờ xử lý kênh NVIC IRQ ngoại vi (trong thanh ghi chờ xóa
ngắt NVIC) phải được xóa.

• hoặc định cấu hình dòng EXTI bên ngoài hoặc bên trong ở chế độ sự kiện. Khi CPU tiếp tục hoạt
động từ WFE, không cần thiết phải xóa bit chờ ngắt ngoại vi hoặc bit chờ xử lý kênh NVIC IRQ
vì bit đang chờ xử lý tương ứng với dòng sự kiện không được đặt.

Trong các thiết bị đường kết nối, các sự kiện đánh thức Ethernet cũng có khả năng đánh thức WFE.

Để sử dụng đường dây bên ngoài làm sự kiện đánh thức, hãy tham khảo Phần 10.2.4: Mô tả chức năng.

10.2.4 Mô tả chức năng

Để tạo ra ngắt, đường ngắt phải được cấu hình và kích hoạt. Điều này được thực hiện bằng cách
lập trình hai thanh ghi kích hoạt với khả năng phát hiện cạnh mong muốn và bằng cách cho phép
yêu cầu ngắt bằng cách ghi '1' vào bit tương ứng trong thanh ghi mặt nạ ngắt.
Khi cạnh được chọn xuất hiện trên đường ngắt bên ngoài, một yêu cầu ngắt sẽ được tạo ra.
Bit đang chờ xử lý tương ứng với dòng ngắt cũng được đặt. Yêu cầu này được đặt lại bằng cách
viết số '1' vào sổ đăng ký đang chờ xử lý.

Để tạo sự kiện, dòng sự kiện phải được định cấu hình và kích hoạt. Điều này được thực hiện
bằng cách lập trình hai thanh ghi kích hoạt với khả năng phát hiện cạnh mong muốn và bằng cách
cho phép yêu cầu sự kiện bằng cách ghi '1' vào bit tương ứng trong thanh ghi mặt nạ sự kiện. Khi
cạnh được chọn xuất hiện trên dòng sự kiện, xung sự kiện sẽ được tạo ra. Bit đang chờ xử
lý tương ứng với dòng sự kiện không được đặt

Yêu cầu ngắt/sự kiện cũng có thể được tạo ra bởi phần mềm bằng cách ghi số '1' vào thanh ghi sự
kiện/ngắt phần mềm.

Lựa chọn ngắt phần cứng

Để định cấu hình 20 dòng làm nguồn ngắt, hãy sử dụng quy trình sau:

• Cấu hình các bit mặt nạ của 20 dòng ngắt (EXTI_IMR)

• Cấu hình các bit lựa chọn kích hoạt của các dòng ngắt (EXTI_RTSR và
EXTI_FTSR)

• Định cấu hình các bit kích hoạt và che dấu điều khiển kênh NVIC IRQ được ánh xạ tới Bộ điều
khiển ngắt bên ngoài (EXTI) để có thể xác nhận chính xác ngắt đến từ một trong 20 dòng.

Lựa chọn sự kiện phần cứng

Để định cấu hình 20 dòng làm nguồn sự kiện, hãy sử dụng quy trình sau:

• Định cấu hình các bit mặt nạ của 20 dòng Sự kiện (EXTI_EMR)

• Định cấu hình các bit Lựa chọn kích hoạt của dòng Sự kiện (EXTI_RTSR và EXTI_FTSR)

208/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Gián đoạn và sự kiện

Lựa chọn sự kiện/ngắt phần mềm

20 dòng có thể được cấu hình như dòng sự kiện/ngắt phần mềm. Sau đây là quy trình để
tạo ra một ngắt phần mềm.

• Cấu hình các bit mặt nạ của 20 dòng ngắt/sự kiện (EXTI_IMR, EXTI_EMR)

• Đặt bit yêu cầu của thanh ghi ngắt phần mềm (EXTI_SWIER)

10.2.5 Ánh xạ dòng sự kiện/ngắt bên ngoài

112 GPIO được kết nối với 16 đường ngắt/sự kiện bên ngoài như sau
thái độ:

RM0008 Phiên bản 21 209/1136

214
Machine Translated by Google

Gián đoạn và sự kiện RM0008

Hình 21. Ánh xạ GPIO sự kiện/ngắt bên ngoài

Các bit EXTI0[3:0] trong thanh ghi AFIO_EXTICR1

PA0

PB0

PC0
EXTI0
PD0

PE0

PF0
PG0

Các bit EXTI1[3:0] trong thanh ghi AFIO_EXTICR1

PA1

PB1

PC1
EXTI1
PD1

PE1

PF1
PG1

Các bit EXTI15[3:0] trong thanh ghi AFIO_EXTICR4

PA15

PB15

PC15
EXTI15
PD15

PE15

PF15
PG15

1. Để định cấu hình AFIO_EXTICRx để ánh xạ các dòng sự kiện/ngắt bên ngoài vào GPIO, trước tiên phải bật đồng
hồ AFIO. Tham khảo Mục 7.3.7: Thanh ghi kích hoạt đồng hồ ngoại vi APB2 (RCC_APB2ENR) cho các
thiết bị có mật độ thấp, trung bình, cao và XL và đến Mục 8.3.7: Thanh ghi kích hoạt đồng hồ ngoại vi APB2
(RCC_APB2ENR) cho các thiết bị đường dây kết nối.

Bốn đường EXTI khác được kết nối như sau:

• Dòng EXTI 16 được kết nối với đầu ra PVD


• Dòng EXTI 17 được kết nối với sự kiện Cảnh báo RTC

• Dòng EXTI 18 được kết nối với sự kiện USB Wakeup • Dòng

EXTI 19 được kết nối với sự kiện Ethernet Wakeup (chỉ khả dụng trong kết nối
thiết bị đường dây)

210/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Gián đoạn và sự kiện

10.3 thanh ghi EXTI

Tham khảo Phần 2.2 trên trang 45 để biết danh sách các chữ viết tắt được sử dụng trong mô tả đăng ký.

Các thanh ghi ngoại vi phải được truy cập bằng từ (32-bit).

10.3.1 Thanh ghi mặt nạ ngắt (EXTI_IMR)

Độ lệch địa chỉ: 0x00


Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

MR19 MR18 MR17 MR16


Kín đáo
rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

MR15 MR14 MR13 MR12 MR11 MR10 MR9 MR8 MR7 MR6 MR5 MR4 MR3 MR2 MR1 MR0

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:20 Dự trữ, phải được giữ ở giá trị đặt lại (0).

Bit 19:0 MRx: Mặt nạ ngắt trên dòng x

0: Yêu cầu ngắt từ Dòng x bị che


1: Yêu cầu ngắt từ Dòng x không bị che

Lưu ý: Bit 19 chỉ được sử dụng trong các thiết bị có đường kết nối và được bảo lưu theo cách khác.

10.3.2 Thanh ghi mặt nạ sự kiện (EXTI_EMR)

Độ lệch địa chỉ: 0x04


Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

MR19 MR18 MR17 MR16


Kín đáo
rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

MR15 MR14 MR13 MR12 MR11 MR10 MR9 MR8 MR7 MR6 MR5 MR4 MR3 MR2 MR1 MR0

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:20 Dự trữ, phải được giữ ở giá trị đặt lại (0).

Bit 19:0 MRx: Mặt nạ sự kiện trên dòng x

0: Yêu cầu sự kiện từ Dòng x bị che


1: Yêu cầu sự kiện từ Dòng x không bị che

Lưu ý: Bit 19 chỉ được sử dụng trong các thiết bị có đường kết nối và được bảo lưu theo cách khác.

RM0008 Phiên bản 21 211/1136

214
Machine Translated by Google

Gián đoạn và sự kiện RM0008

10.3.3 Thanh ghi lựa chọn kích hoạt tăng (EXTI_RTSR)


Độ lệch địa chỉ: 0x08
Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

TR19 TR18 TR17 TR16


Kín đáo
rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

TR15 TR14 TR13 TR12 TR11 TR10 TR9 TR8 TR7 TR6 TR5 TR4 TR3 TR2 TR1 TR0

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:20 Dự trữ, phải được giữ ở giá trị đặt lại (0).

Bit 19:0 TRx: Bit cấu hình sự kiện kích hoạt tăng của dòng x

0: Kích hoạt tăng bị vô hiệu hóa (đối với Sự kiện và Ngắt) cho dòng đầu vào

1: Kích hoạt tăng kích hoạt (đối với Sự kiện và Ngắt) cho dòng đầu vào.

Lưu ý: Bit 19 chỉ được sử dụng trong các thiết bị có đường kết nối và được bảo lưu theo cách khác.

Ghi chú: Các đường đánh thức bên ngoài được kích hoạt ở cạnh, không được tạo ra trục trặc trên các đường này.
Nếu xảy ra cạnh tăng trên đường ngắt bên ngoài trong quá trình ghi thanh ghi EXTI_RTSR, bit đang
chờ xử lý sẽ không được đặt.

Bộ kích hoạt cạnh tăng và giảm có thể được đặt cho cùng một đường ngắt. Trong cấu hình này, cả hai
đều tạo ra một điều kiện kích hoạt.

10.3.4 Thanh ghi lựa chọn kích hoạt rơi (EXTI_FTSR)


Độ lệch địa chỉ: 0x0C
Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

TR19 TR18 TR17 TR16


Kín đáo
rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

TR15 TR14 TR13 TR12 TR11 TR10 TR9 TR8 TR7 TR6 TR5 TR4 TR3 TR2 TR1 TR0

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:20 Dự trữ, phải được giữ ở giá trị đặt lại (0).

Bit 19:0 TRx: Bit cấu hình sự kiện kích hoạt rơi của dòng x

0: Vô hiệu hóa kích hoạt rơi (đối với Sự kiện và Ngắt) cho dòng đầu vào

1: Đã bật trình kích hoạt rơi (đối với Sự kiện và Ngắt) cho dòng đầu vào.

Lưu ý: Bit 19 được sử dụng trong các thiết bị đường kết nối và được dành riêng.

Ghi chú: Các đường đánh thức bên ngoài được kích hoạt ở cạnh, không được tạo ra trục trặc trên các đường này.
Nếu xảy ra cạnh xuống trên đường ngắt bên ngoài trong quá trình ghi thanh ghi EXTI_FTSR, bit đang
chờ xử lý sẽ không được đặt.

Bộ kích hoạt cạnh tăng và giảm có thể được đặt cho cùng một đường ngắt. Trong cấu hình này, cả hai
đều tạo ra một điều kiện kích hoạt.

212/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Gián đoạn và sự kiện

10.3.5 Thanh ghi sự kiện ngắt phần mềm (EXTI_SWIER)

Độ lệch địa chỉ: 0x10


Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

TUYỆT VỜI TUYỆT VỜI TUYỆT VỜI TUYỆT VỜI


19 18 17 16
Kín đáo

rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

TUYỆT VỜI TUYỆT VỜI TUYỆT VỜI TUYỆT VỜI TUYỆT VỜI TUYỆT VỜI TUYỆT VỜI TUYỆT VỜI TUYỆT VỜI TUYỆT VỜI TUYỆT VỜI TUYỆT VỜI TUYỆT VỜI TUYỆT VỜI TUYỆT VỜI TUYỆT VỜI
15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:20 Dự trữ, phải được giữ ở giá trị đặt lại (0).

Bits 19:0 SWIERx: Phần mềm ngắt trên dòng x

Nếu ngắt được bật trên dòng này trong EXTI_IMR, việc ghi '1' vào bit này khi nó được đặt thành '0' sẽ đặt bit đang

chờ xử lý tương ứng trong EXTI_PR dẫn đến việc tạo yêu cầu ngắt.

Bit này được xóa bằng cách xóa bit tương ứng của EXTI_PR (bằng cách ghi số 1 vào bit).

Lưu ý: Bit 19 được sử dụng trong các thiết bị đường kết nối và được dành riêng.

10.3.6 Thanh ghi đang chờ xử lý (EXTI_PR)

Độ lệch địa chỉ: 0x14


Giá trị đặt lại: không xác định

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

PR19 PR18 PR17 PR16


Kín đáo
rc_w1 rc_w1 rc_w1 rc_w1

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

PR15 PR14 PR13 PR12 PR11 PR10 PR9 PR8 PR7 PR6 PR5 PR4 PR3 PR2 PR1 PR0

rc_w1 rc_w1 rc_w1 rc_w1 rc_w1 rc_w1 rc_w1 rc_w1 rc_w1 rc_w1 rc_w1 rc_w1 rc_w1 rc_w1 rc_w1 rc_w1

Bit 31:20 Dự trữ, phải được giữ ở giá trị đặt lại (0).

Bit 19:0 PRx: Đang chờ bit 0:

Không có yêu cầu kích hoạt nào xảy ra

1: đã xảy ra yêu cầu kích hoạt đã chọn

Bit này được thiết lập khi sự kiện cạnh được chọn đến trên đường ngắt bên ngoài. Bit này được xóa bằng cách viết

'1' vào bit.

Lưu ý: Bit 19 chỉ được sử dụng trong các thiết bị có đường kết nối và được bảo lưu theo cách khác.

RM0008 Phiên bản 21 213/1136

214
Machine Translated by Google

Gián đoạn và sự kiện RM0008

10.3.7 Bản đồ đăng ký EXTI

Bảng sau đây cung cấp bản đồ thanh ghi EXTI và các giá trị đặt lại. Bit 19 trong tất cả các thanh ghi được sử

dụng trong các thiết bị đường kết nối và được dành riêng cho mục đích khác.

Bảng 64. Giá trị đặt lại và bản đồ thanh ghi bộ điều khiển sự kiện/ngắt bên ngoài

Đăng ký bù đắp

1
5
ố8
s

7
6

0
3
9

2
4
EXTI_IMR MR[19:0]
0x00 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

EXTI_EMR MR[19:0]
0x04 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

EXTI_RTSR TR[19:0]
0x08 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

EXTI_FTSR TR[19:0]
0x0C Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

EXTI_SWIER TUYỆT VỜI[19:0]


0x10 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

EXTI_PR PR[19:0]
0x14 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Tham khảo Bảng 3 trên trang 50 để biết địa chỉ biên của thanh ghi.

214/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi tương tự sang số (ADC)

11 Bộ chuyển đổi tương tự sang số (ADC)

Các thiết bị mật độ thấp là bộ vi điều khiển STM32F101xx, STM32F102xx và STM32F103xx


trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

Các thiết bị có mật độ trung bình là bộ vi điều khiển STM32F101xx, STM32F102xx và STM32F103xx
trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 64 đến 128 Kbyte.

Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ nhớ Flash
nằm trong khoảng từ 256 đến 512 Kbyte.

Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ nhớ
Flash nằm trong khoảng từ 768 Kbyte đến 1 Mbyte.

Các thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

Phần này áp dụng cho toàn bộ họ STM32F10xxx, trừ khi có quy định khác.

11.1 Giới thiệu ADC

ADC 12 bit là bộ chuyển đổi tương tự sang số gần đúng liên tiếp. Nó có tới 18 kênh ghép kênh cho
phép đo tín hiệu từ 16 nguồn bên ngoài và hai nguồn bên trong. Chuyển đổi A/D của các kênh khác nhau
có thể được thực hiện ở chế độ đơn, liên tục, quét hoặc không liên tục. Kết quả của ADC được lưu
trữ trong thanh ghi dữ liệu 16 bit căn trái hoặc căn phải.

Tính năng cơ quan giám sát tương tự cho phép ứng dụng phát hiện xem điện áp đầu vào có vượt quá
ngưỡng cao hay thấp do người dùng xác định hay không.

Đồng hồ đầu vào ADC được tạo từ đồng hồ PCLK2 chia cho bộ đếm trước và nó không được vượt quá 14 MHz,
tham khảo Hình 8 cho các thiết bị có mật độ thấp, trung bình, cao và XL và Hình 11 cho các thiết bị
đường kết nối.

RM0008 Phiên bản 21 215/1136

253
Machine Translated by Google

Bộ chuyển đổi tương tự sang số (ADC) RM0008

11.2 Các tính năng chính của ADC

• Độ phân giải 12 bit

• Tạo ngắt khi kết thúc chuyển đổi, kết thúc chuyển đổi được chèn và sự kiện cơ quan
giám sát Analog

• Chế độ chuyển đổi đơn và liên tục


• Chế độ quét tự động chuyển đổi kênh 0 sang kênh 'n'

• Tự hiệu chuẩn

• Căn chỉnh dữ liệu với tính nhất quán dữ liệu được xây dựng sẵn

• Thời gian lấy mẫu có thể lập trình theo từng kênh
• Tùy chọn kích hoạt bên ngoài cho cả chuyển đổi thông thường và chuyển đổi được chèn

• Chế độ không liên tục

• Chế độ kép (trên các thiết bị có 2 ADC trở lên)


• Thời gian chuyển đổi ADC:

– Thiết bị dòng hiệu suất STM32F103xx: 1 µs ở 56 MHz (1,17 µs ở 72 MHz)

– Thiết bị đường truy cập STM32F101xx: 1 µs ở 28 MHz (1,55 µs ở 36 MHz)

– Thiết bị đường truy cập USB STM32F102xx: 1,2 µs ở 48 MHz

– Thiết bị STM32F105xx và STM32F107xx: 1 µs ở 56 MHz (1,17 µs ở 72 MHz)

• Yêu cầu nguồn cung cấp ADC: 2,4 V đến 3,6 V

• Dải đầu vào ADC: VREF- VIN VREF+

• Tạo yêu cầu DMA trong quá trình chuyển đổi kênh thông thường

Sơ đồ khối của ADC được hiển thị trong Hình 22.

Ghi chú: VREF-, nếu có (tùy gói), phải gắn với VSSA.

11.3 Mô tả chức năng ADC

Hình 22 cho thấy một sơ đồ khối ADC đơn và Bảng 65 đưa ra mô tả chân ADC.

216/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi tương tự sang số (ADC)

Hình 22. Sơ đồ khối ADC đơn

Ngắt
Cờ cho phép bit
Kết thúc chuyển đổi
EOC EOCI
Kết thúc quá trình chuyển đổi được chèn Ngắt ADC tới NVIC
JEOC JEOCIE
Sự kiện giám sát tương tự
AWD AWDIE

Cơ quan giám sát tương tự

So sánh kết quả

Ngưỡng cao (12 bit)

Ngưỡng thấp (12 bit)

Thanh ghi dữ liệu được


VREF+

/ệ
u si
a
ỉ ul

h
ữ B
đ
c
d
chèn (4 x 16 bit)

VREF
Thanh ghi dữ liệu thông

VDDA thường (16 bit)

VSSA
Tương tự Yêu cầu DMA
MUX

ADCx_IN0

ADCx_IN1
GPIO
Lên tới 4 Kênh
ADCCLK
Cổng
được chèn Tương tự với kỹ thuật số

bộ chuyển đổi
lên đên 16 Kênh
ADCx_IN15 thông thường

Nhiệt độ. cảm


biến VREFINT

Từ bộ đếm trước ADC


bit JEXTSEL[2:0]

TIM1_TRGO
TIM1_CH4 bit
TIM2_TRGO JEXTRIG
TIM2_CH1
Bắt đầu kích
TIM3_CH4
hoạt (nhóm được chèn)
TIM4_TRGO

EXTI_15
TIM8_CH4(2)
bit JEXTSEL[2:0]
bit TIM1_TRGO
Bit ADCx-ETRGINJ_REMAP bit
EXTRIG TIM1_CH4
JEXTRIG
TIM4_CH3
TIM8_CH2 Bắt đầu kích
TIM8_CH4 hoạt (nhóm được chèn)
bit EXTSEL[2:0] TIM5_TRGO
TIM5_CH4
TIM1_CH1
TIM1_CH2 Bắt đầu kích
TIM1_CH3 bit EXTSEL[2:0]
hoạt (nhóm thông thường)
TIM2_CH2
TIM3_TRGO TIM3_CH1 bit
TIM2_CH3 EXTRIG
TIM4_CH4
TIM1_CH3
TIM8_CH1 Bắt đầu kích
EXTI_11 TIM8_TRGO hoạt (nhóm thông thường)
TIM8_TRGO(2) TIM5_CH1
TIM5_CH3

Bit ADCx_ETRGREG_REMAP
Trình kích hoạt cho ADC3(1)

ai14802d

1. ADC3 có các bộ kích hoạt chuyển đổi thường xuyên và được chèn khác với các bộ kích hoạt chuyển đổi của ADC1 và ADC2.

2. TIM8_CH4 và TIM8_TRGO với các bit ánh xạ lại tương ứng chỉ tồn tại ở Mật độ cao và Mật độ XL
các sản phẩm.

RM0008 Phiên bản 21 217/1136

253
Machine Translated by Google

Bộ chuyển đổi tương tự sang số (ADC) RM0008

Bảng 65. Chân ADC

Tên Loại tín hiệu Bình luận

Đầu vào, tham chiếu tương Điện áp tham chiếu dương/cao hơn cho ADC, 2,4 V
VREF+
tự dương VREF+ VDDA

Nguồn điện tương tự bằng VDD và


VDDA(1) Đầu vào, nguồn analog
2,4V VDDA 3,6V

Đầu vào, tham chiếu Điện áp tham chiếu thấp/âm cho ADC,
VREF
tương tự âm VREF- = VSSA

Đầu vào, mặt đất cung


VSSA(1) Nối đất cho nguồn điện analog bằng VSS
cấp analog

ADCx_IN[15:0] Tín hiệu tương tự Lên đến 21 kênh analog(2)

1. VDDA và VSSA phải được kết nối tương ứng với VDD và VSS .

2. Để biết chi tiết đầy đủ về các chân I/O ADC, hãy tham khảo phần “Mô tả chân cắm và chân cắm” của
bảng dữ liệu thiết bị tương ứng.

11.3.1 Điều khiển bật tắt ADC

ADC có thể được bật nguồn bằng cách đặt bit ADON trong thanh ghi ADC_CR2. Khi bit ADON được đặt
lần đầu tiên, nó sẽ đánh thức ADC từ chế độ Tắt nguồn.

Quá trình chuyển đổi bắt đầu khi bit ADON được thiết lập lần thứ hai bằng phần mềm sau thời gian bật
nguồn ADC (tSTAB).

Việc chuyển đổi có thể được dừng lại và ADC chuyển sang chế độ tắt nguồn bằng cách đặt lại bit
ADON. Ở chế độ này, ADC hầu như không tiêu thụ điện năng (chỉ vài µA).

11.3.2 Đồng hồ ADC

Đồng hồ ADCCLK do Bộ điều khiển đồng hồ cung cấp đồng bộ với PCLK2 (đồng hồ APB2). Bộ điều khiển RCC
có bộ đếm gộp có thể lập trình chuyên dụng cho đồng hồ ADC, hãy tham khảo phần Đặt lại và điều
khiển đồng hồ (RCC) mật độ thấp, trung bình, cao và XL để biết thêm chi tiết.

11.3.3 Lựa chọn kênh

Có 16 kênh ghép kênh. Có thể tổ chức chuyển đổi thành hai nhóm: thông thường và được tiêm. Một nhóm
bao gồm một chuỗi các chuyển đổi có thể được thực hiện trên bất kỳ kênh nào và theo bất kỳ thứ tự
nào. Ví dụ: có thể thực hiện chuyển đổi theo thứ tự sau: Ch3, Ch8, Ch2, Ch2, Ch0, Ch2, Ch2,
Ch15.

• Nhóm thông thường bao gồm tối đa 16 chuyển đổi. Các kênh thông thường và thứ tự của chúng
trong chuỗi chuyển đổi phải được chọn trong thanh ghi ADC_SQRx.
Tổng số chuyển đổi trong nhóm thông thường phải được ghi bằng bit L[3:0] trong thanh ghi
ADC_SQR1.

• Nhóm được chèn bao gồm tối đa 4 chuyển đổi. Các kênh được chèn và thứ tự của chúng trong chuỗi
chuyển đổi phải được chọn trong thanh ghi ADC_JSQR.
Tổng số chuyển đổi trong nhóm được chèn phải được ghi bằng bit L[1:0] trong thanh ghi ADC_JSQR.

Nếu các thanh ghi ADC_SQRx hoặc ADC_JSQR được sửa đổi trong quá trình chuyển đổi, thì chuyển đổi
hiện tại sẽ được đặt lại và một xung khởi động mới được gửi đến ADC để chuyển đổi nhóm được
chọn mới.

218/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi tương tự sang số (ADC)

Cảm biến nhiệt độ/ kênh nội bộ VREFINT

Cảm biến nhiệt độ được kết nối với kênh ADCx_IN16 và điện áp tham chiếu bên trong VREFINT
được kết nối với ADCx_IN17. Hai kênh nội bộ này có thể được chọn và chuyển đổi thành kênh
được chèn hoặc kênh thông thường.

Ghi chú: Cảm biến và VREFINT chỉ khả dụng trên thiết bị ngoại vi ADC1 chính.

11.3.4 Chế độ chuyển đổi đơn

Trong chế độ chuyển đổi đơn, ADC thực hiện một chuyển đổi. Chế độ này được bắt đầu bằng cách đặt
bit ADON trong thanh ghi ADC_CR2 (chỉ dành cho kênh thông thường) hoặc bằng bộ kích hoạt bên ngoài
(đối với kênh thông thường hoặc kênh được chèn), trong khi bit CONT là 0.

Khi quá trình chuyển đổi kênh đã chọn hoàn tất:


• Nếu một kênh thông thường đã được chuyển đổi:

– Dữ liệu đã chuyển đổi được lưu trữ trong thanh ghi ADC_DR 16 bit

– Cờ EOC (Kết thúc chuyển đổi) được đặt – và

ngắt được tạo ra nếu EOCIE được đặt.


• Nếu kênh chèn đã được chuyển đổi:

– Dữ liệu đã chuyển đổi được lưu trữ trong thanh ghi ADC_DRJ1 16 bit

– Cờ JEOC (Kết thúc chuyển đổi được chèn) được đặt – và

một ngắt được tạo ra nếu bit JEOCIE được đặt.

ADC sau đó sẽ dừng lại.

11.3.5 Chế độ chuyển đổi liên tục

Ở chế độ chuyển đổi liên tục, ADC bắt đầu một chuyển đổi khác ngay sau khi hoàn thành một chuyển đổi.

Chế độ này được bắt đầu bằng bộ kích hoạt bên ngoài hoặc bằng cách đặt bit ADON trong thanh
ghi ADC_CR2, trong khi bit CONT là 1.

Sau mỗi lần chuyển đổi:

• Nếu một kênh thông thường đã được chuyển đổi:

– Dữ liệu đã chuyển đổi được lưu trữ trong thanh ghi ADC_DR 16 bit

– Cờ EOC (Kết thúc chuyển đổi) được đặt – Một

ngắt được tạo ra nếu EOCIE được đặt.


• Nếu kênh chèn đã được chuyển đổi:

– Dữ liệu đã chuyển đổi được lưu trữ trong thanh ghi ADC_DRJ1 16 bit

– Cờ JEOC (Kết thúc chuyển đổi được chèn) được đặt – Một

ngắt được tạo ra nếu bit JEOCIE được đặt.

11.3.6 Sơ đồ thời gian

Như được hiển thị trong Hình 23, ADC cần thời gian ổn định của tSTAB trước khi bắt
đầu chuyển đổi chính xác. Sau khi bắt đầu chuyển đổi ADC và sau 14 chu kỳ xung nhịp, cờ EOC
được đặt và thanh ghi Dữ liệu ADC 16 bit chứa kết quả của chuyển đổi.

RM0008 Phiên bản 21 219/1136

253
Machine Translated by Google

Bộ chuyển đổi tương tự sang số (ADC) RM0008

Hình 23. Sơ đồ thời gian

ADC_CLK

ADON

SWBẮT ĐẦU/
JSWBẮT ĐẦU

Bắt đầu chuyển đổi lần đầu tiên Bắt đầu chuyển đổi tiếp theo

chuyển đổi ADC Chuyển đổi ADC tiếp theo


ADC

Thời gian chuyển đổi

tSTAB
(tổng thời gian chuyển đổi)

EOC

Phần mềm xóa bit EOC

ai16047b

11.3.7 Cơ quan giám sát tương tự

Bit trạng thái giám sát tương tự AWD được đặt nếu điện áp tương tự được chuyển đổi bởi ADC ở dưới
ngưỡng thấp hoặc trên ngưỡng cao. Các ngưỡng này được lập trình trong 12 bit có trọng số nhỏ nhất
của thanh ghi 16 bit ADC_HTR và ADC_LTR. Một ngắt có thể được kích hoạt bằng cách sử dụng bit AWDIE
trong thanh ghi ADC_CR1.

Giá trị ngưỡng độc lập với căn chỉnh được chọn bởi bit ALIGN trong thanh ghi ADC_CR2. Việc so
sánh được thực hiện trước khi căn chỉnh (xem Phần 11.5).

Cơ quan giám sát tương tự có thể được kích hoạt trên một hoặc nhiều kênh bằng cách định cấu
hình thanh ghi ADC_CR1 như trong Bảng 66.

Hình 24. Khu vực bảo vệ của cơ quan giám sát analog

Điện áp tương tự

Ngưỡng cao hơn HTR

Khu vực bảo vệ


Ngưỡng cửa thấp hơn LTR
ai16048

Bảng 66. Lựa chọn kênh cơ quan giám sát analog

Các bit điều khiển đăng ký ADC_CR1 (x = không quan tâm)


Các kênh được bảo vệ bởi cơ quan giám
sát tương tự
bit AWDSGL bit AWDEN bit JAWDEN

Không có x 0 0

Tất cả các kênh được chèn 0 0 1

Tất cả các kênh thông thường 0 1 0

220/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi tương tự sang số (ADC)

Bảng 66. Lựa chọn kênh cơ quan giám sát analog (tiếp theo)

Các bit điều khiển đăng ký ADC_CR1 (x = không quan tâm)


Các kênh được bảo vệ bởi cơ quan giám sát
tương tự
bit AWDSGL bit AWDEN bit JAWDEN

Tất cả các kênh thông thường và được tiêm 0 1 1

Kênh tiêm đơn (1) 1 0 1

Kênh đơn (1) thông thường 1 1 0

Kênh đơn (1) thông thường hoặc được tiêm 1 1 1

1. Được chọn bởi các bit AWDCH[4:0]

11.3.8 Chế độ quét

Chế độ này được sử dụng để quét một nhóm kênh analog.

Chế độ quét có thể được chọn bằng cách đặt bit SCAN trong thanh ghi ADC_CR1. Khi bit này được đặt, ADC sẽ quét

tất cả các kênh được chọn trong thanh ghi ADC_SQRx (đối với các kênh thông thường) hoặc trong

ADC_JSQR (đối với các kênh được chèn). Một chuyển đổi duy nhất được thực hiện cho mỗi kênh của nhóm. Sau mỗi

lần kết thúc chuyển đổi, kênh tiếp theo của nhóm sẽ được chuyển đổi tự động. Nếu bit CONT được đặt, quá

trình chuyển đổi không dừng ở kênh nhóm được chọn cuối cùng mà tiếp tục lại từ kênh nhóm được chọn đầu tiên.

Khi sử dụng chế độ quét, bit DMA phải được đặt và bộ điều khiển truy cập bộ nhớ trực tiếp được sử dụng để

truyền dữ liệu đã chuyển đổi của các kênh nhóm thông thường sang SRAM sau mỗi lần cập nhật thanh ghi ADC_DR.

Dữ liệu chuyển đổi kênh được chèn luôn được lưu trữ trong các thanh ghi ADC_JDRx.

11.3.9 Quản lý kênh được đưa vào

Tiêm kích hoạt


Để sử dụng tính năng tiêm kích hoạt, bit JAUTO phải được xóa và bit SCAN phải được đặt trong thanh ghi ADC_CR1.

1. Bắt đầu chuyển đổi một nhóm kênh thông thường bằng bộ kích hoạt bên ngoài hoặc bằng cách đặt bit ADON

trong thanh ghi ADC_CR2.

2. Nếu xảy ra trình kích hoạt được đưa vào bên ngoài trong quá trình chuyển đổi kênh nhóm thông thường

thì chuyển đổi hiện tại sẽ được đặt lại và trình tự kênh được đưa vào sẽ được chuyển đổi ở chế độ
Quét một lần.

3. Sau đó, quá trình chuyển đổi kênh nhóm thông thường được tiếp tục từ kênh bị gián đoạn gần đây nhất.

chuyển đổi thường xuyên. Nếu một sự kiện thông thường xảy ra trong quá trình chuyển đổi được chèn, thì sự kiện

đó sẽ không làm gián đoạn chuyển đổi đó nhưng trình tự thông thường sẽ được thực thi ở cuối trình tự được chèn.

Hình 25 thể hiện sơ đồ thời gian.

Ghi chú: Khi sử dụng tính năng chèn được kích hoạt, khoảng thời gian giữa các sự kiện kích hoạt phải dài hơn trình tự

chèn. Ví dụ: nếu độ dài chuỗi là 28 chu kỳ xung nhịp ADC (tức là hai chuyển đổi với thời gian lấy mẫu chu kỳ

xung nhịp là 1,5), thì khoảng thời gian tối thiểu giữa các lần kích hoạt phải là 29 chu kỳ xung nhịp ADC.

RM0008 Phiên bản 21 221/1136

253
Machine Translated by Google

Bộ chuyển đổi tương tự sang số (ADC) RM0008

Tự động tiêm

Nếu bit JAUTO được đặt thì các kênh nhóm được chèn sẽ tự động được chuyển đổi sau các kênh nhóm thông
thường. Điều này có thể được sử dụng để chuyển đổi một chuỗi tối đa 20 chuyển đổi được lập trình trong
các thanh ghi ADC_SQRx và ADC_JSQR.

Ở chế độ này, phải tắt kích hoạt bên ngoài trên các kênh được chèn.

Nếu bit CONT cũng được đặt cùng với bit JAUTO, các kênh thông thường theo sau là các kênh được chèn sẽ
được chuyển đổi liên tục.

Đối với bộ đếm trước đồng hồ ADC nằm trong khoảng từ 4 đến 8, độ trễ 1 chu kỳ đồng hồ ADC sẽ tự động được
chèn khi chuyển từ trình tự thông thường sang trình tự được tiêm (tương ứng được tiêm vào thông thường).
Khi bộ đếm trước đồng hồ ADC được đặt thành 2, độ trễ là 2 chu kỳ đồng hồ ADC.

Ghi chú: Không thể sử dụng đồng thời cả hai chế độ tiêm tự động và không liên tục.

Hình 25. Độ trễ chuyển đổi được đưa vào

ADCCLK

Sự kiện tiêm

Đặt lại ADC

độ trễ tối đa (1)


SOC

ai16049

1. Giá trị độ trễ tối đa có thể được tìm thấy trong các đặc tính điện của STM32F101xx và
Bảng dữ liệu STM32F103xx.

11.3.10 Chế độ không liên tục

Nhóm thường xuyên

Chế độ này được kích hoạt bằng cách đặt bit DISCEN trong thanh ghi ADC_CR1. Nó có thể được sử dụng để
chuyển đổi một chuỗi ngắn gồm n chuyển đổi (n <=8), là một phần của chuỗi chuyển đổi được chọn trong
thanh ghi ADC_SQRx. Giá trị của n được chỉ định bằng cách ghi vào bit DISCNUM[2:0] trong thanh ghi
ADC_CR1.

Khi một kích hoạt bên ngoài xảy ra, nó sẽ bắt đầu n chuyển đổi tiếp theo được chọn trong thanh ghi ADC_SQRx
cho đến khi tất cả các chuyển đổi trong chuỗi được thực hiện. Tổng độ dài chuỗi được xác định bởi các
bit L[3:0] trong thanh ghi ADC_SQR1.

Ví dụ:

n = 3, các kênh cần chuyển đổi = 0, 1, 2, 3, 6, 7, 9, 10

kích hoạt đầu tiên: chuỗi được chuyển đổi 0, 1, 2. Một sự kiện EOC được tạo ra ở mỗi lần kích hoạt

222/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi tương tự sang số (ADC)

chuyển đổi

trình kích hoạt thứ hai: trình tự được chuyển đổi 3, 6, 7. Sự kiện EOC được tạo ở mỗi
chuyển đổi

trình kích hoạt thứ ba: trình tự được chuyển đổi 9, 10. Sự kiện EOC được tạo ở mỗi lần chuyển đổi
trình kích hoạt thứ tư: trình tự được chuyển đổi 0, 1, 2. Sự kiện EOC được tạo ở mỗi
lần chuyển đổi

Ghi chú: Khi một nhóm thông thường được chuyển đổi ở chế độ không liên tục, sẽ không xảy ra hiện tượng chuyển đổi. Khi

tất cả các nhóm phụ được chuyển đổi, trình kích hoạt tiếp theo sẽ bắt đầu chuyển đổi nhóm phụ đầu tiên.

Trong ví dụ trên, trình kích hoạt thứ tư sẽ chuyển đổi lại các kênh nhóm phụ đầu tiên 0, 1 và 2.

Nhóm được tiêm

Chế độ này được kích hoạt bằng cách đặt bit JDISCEN trong thanh ghi ADC_CR1. Nó có thể được sử dụng
để chuyển đổi trình tự được chọn trong thanh ghi ADC_JSQR, theo kênh, sau một sự kiện kích hoạt
bên ngoài.

Khi kích hoạt bên ngoài xảy ra, nó sẽ bắt đầu các chuyển đổi kênh tiếp theo được chọn trong thanh
ghi ADC_JSQR cho đến khi tất cả các chuyển đổi trong chuỗi được thực hiện. Tổng độ dài chuỗi được xác
định bởi các bit JL[1:0] trong thanh ghi ADC_JSQR.

Ví dụ:

n = 1, kênh cần chuyển đổi = 1, 2, 3


trình kích hoạt đầu tiên: kênh 1 được

chuyển đổi trình kích hoạt thứ hai: kênh 2

được chuyển đổi trình kích hoạt thứ ba: kênh 3 được chuyển đổi và các sự kiện EOC và JEOC được tạo

kích hoạt thứ tư: kênh 1

Ghi chú: Khi tất cả các kênh được chèn đã được chuyển đổi, trình kích hoạt tiếp theo sẽ bắt đầu chuyển đổi
kênh được chèn đầu tiên. Trong ví dụ trên, trình kích hoạt thứ tư sẽ chuyển đổi kênh 1 được
chèn đầu tiên.

Không thể sử dụng đồng thời cả hai chế độ tiêm tự động và không liên tục.

Người dùng phải tránh cài đặt chế độ không liên tục cho cả nhóm thông thường và nhóm được tiêm
cùng nhau. Chế độ không liên tục chỉ được bật cho một chuyển đổi nhóm.

11.4 Sự định cỡ

ADC có chế độ tự hiệu chuẩn tích hợp. Hiệu chuẩn làm giảm đáng kể sai số về độ chính xác do sự thay
đổi của dãy tụ điện bên trong. Trong quá trình hiệu chuẩn, mã sửa lỗi (từ kỹ thuật số) được tính cho
từng tụ điện và trong tất cả các chuyển đổi tiếp theo, phần đóng góp lỗi của từng tụ điện sẽ được
loại bỏ bằng cách sử dụng mã này.

Hiệu chuẩn được bắt đầu bằng cách đặt bit CAL trong thanh ghi ADC_CR2. Sau khi hiệu chuẩn xong,
bit CAL được thiết lập lại bằng phần cứng và có thể thực hiện chuyển đổi bình thường. Nên hiệu
chỉnh ADC một lần khi bật nguồn. Mã hiệu chuẩn được lưu trữ trong ADC_DR ngay khi giai đoạn hiệu
chuẩn kết thúc.

Ghi chú: Nên thực hiện hiệu chuẩn sau mỗi lần bật nguồn.

Trước khi bắt đầu hiệu chuẩn, ADC phải ở trạng thái bật nguồn (bit ADON = '1') trong ít nhất hai chu
kỳ xung nhịp ADC.

RM0008 Phiên bản 21 223/1136

253
Machine Translated by Google

Bộ chuyển đổi tương tự sang số (ADC) RM0008

Hình 26. Sơ đồ thời gian hiệu chỉnh

CLK

Thiết lập lại hiệu chuẩn bằng phần cứng

Đang tiến hành hiệu


CAL
chuẩn tCAL

Chuyển đổi ADC thông thường


ADC
chuyển đổi

11,5 Căn chỉnh dữ liệu


Bit ALIGN trong thanh ghi ADC_CR2 chọn cách căn chỉnh dữ liệu được lưu trữ sau khi chuyển đổi.
Dữ liệu có thể được căn trái hoặc phải như trong Hình 27. và Hình 28.

Giá trị dữ liệu được chuyển đổi của các kênh nhóm được chèn bị giảm bởi độ lệch do người dùng xác
định được ghi trong thanh ghi ADC_JOFRx nên kết quả có thể là giá trị âm. Bit SEXT là giá trị dấu mở
rộng.

Đối với các kênh nhóm thông thường, không có phần bù nào bị trừ nên chỉ có 12 bit là có ý nghĩa.

Hình 27. Căn lề phải của dữ liệu

Nhóm được tiêm

Giới tính Giới tính Giới tính D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0

Nhóm thường xuyên

0000 D9 D11 D10 D8 D7 D6 D5 D4 D3 D2 D1 D0

ai16050

Hình 28. Căn lề trái của dữ liệu

Nhóm được tiêm

GIỚI TÍNH D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 0 0 0

Nhóm thường xuyên

D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0

ai16051

224/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi tương tự sang số (ADC)

11.6 Thời gian lấy mẫu có thể lập trình theo từng kênh

ADC lấy mẫu điện áp đầu vào cho một số chu kỳ ADC_CLK có thể được sửa đổi bằng cách sử dụng các bit
SMP[2:0] trong các thanh ghi ADC_SMPR1 và ADC_SMPR2. Mỗi kênh có thể được lấy mẫu với thời gian lấy mẫu
khác nhau.

Tổng thời gian chuyển đổi được tính như sau:

Tconv = Thời gian lấy mẫu + 12,5 chu kỳ

Ví dụ:

Với ADCCLK = 14 MHz và thời gian lấy mẫu là 1,5 chu kỳ:

Tconv = 1,5 + 12,5 = 14 chu kỳ = 1 µs

11.7 Chuyển đổi trên trình kích hoạt bên ngoài

Chuyển đổi có thể được kích hoạt bởi một sự kiện bên ngoài (ví dụ: chụp hẹn giờ, dòng EXTI). Nếu bit
điều khiển EXT TRIG được đặt thì các sự kiện bên ngoài có thể kích hoạt chuyển đổi. Các bit điều khiển
EXT SEL[2:0] và JEXTSEL[2:0] cho phép ứng dụng chọn quyết định cái nào trong số 8
các sự kiện có thể xảy ra có thể kích hoạt chuyển đổi cho các nhóm thông thường và các nhóm được thêm vào.

Ghi chú: Khi bộ kích hoạt bên ngoài được chọn cho chuyển đổi ADC thông thường hoặc chuyển đổi được chèn, chỉ
cạnh tăng của tín hiệu mới có thể bắt đầu chuyển đổi.

Bảng 67. Kích hoạt bên ngoài cho các kênh thông thường cho ADC1 và ADC2

Nguồn Kiểu EXTSEL[2:0]

Sự kiện TIM1_CC1 000

Sự kiện TIM1_CC2 001

Sự kiện TIM1_CC3 010


Tín hiệu bên trong từ bộ định thời trên chip
Sự kiện TIM2_CC2 011

Sự kiện TIM3_TRGO 100

Sự kiện TIM4_CC4 101

Chân ngoài/Tín hiệu bên trong từ bộ định thời


Sự kiện EXTI dòng 11 / TIM8_TRGO (1)(2) 110
trên chip

SWBẮT ĐẦU Bit điều khiển phần mềm 111

1. Sự kiện TIM8_TRGO chỉ tồn tại trong các thiết bị có mật độ cao và mật độ XL.

2. Việc lựa chọn sự kiện EXTI line11 hoặc TIM8_TRGO kích hoạt bên ngoài cho các kênh thông thường đã hoàn tất,
tương ứng. thông qua các bit cấu hình ADC1_ETRGREG_REMAP và ADC2_ETRGREG_REMAP cho ADC1 và ADC2.

RM0008 Phiên bản 21 225/1136

253
Machine Translated by Google

Bộ chuyển đổi tương tự sang số (ADC) RM0008

Bảng 68. Kích hoạt bên ngoài cho các kênh được đưa vào cho ADC1 và ADC2

Nguồn Kiểu kết nối JEXTSEL[2:0]

Sự kiện TIM1_TRGO 000

Sự kiện TIM1_CC4 001

Sự kiện TIM2_TRGO 010


Tín hiệu bên trong từ bộ định thời trên chip
Sự kiện TIM2_CC1 011

Sự kiện TIM3_CC4 100

Sự kiện TIM4_TRGO 101

Chân ngoài/Tín hiệu bên trong từ bộ định


Sự kiện EXTI dòng 15/TIM8_CC4 (1)(2) 110
thời trên chip

JSWBẮT ĐẦU Bit điều khiển phần mềm 111

1. Sự kiện TIM8_CC4 chỉ tồn tại trong các thiết bị có mật độ cao và mật độ XL.

2. Việc lựa chọn sự kiện EXTI line15 hoặc TIM8_CC4 kích hoạt bên ngoài cho các kênh được chèn được thực hiện
thông qua các bit cấu hình ADC1_ETRGINJ_REMAP và ADC2_ETRGINJ_REMAP tương ứng cho ADC1 và ADC2.

Bảng 69. Kích hoạt bên ngoài cho các kênh thông thường cho ADC3

Nguồn Kiểu kết nối EXTSEL[2:0]

Sự kiện TIM3_CC1 000

Sự kiện TIM2_CC3 001

Sự kiện TIM1_CC3 010

Sự kiện TIM8_CC1 Tín hiệu bên trong từ bộ định thời trên chip 011

Sự kiện TIM8_TRGO 100

Sự kiện TIM5_CC1 101

Sự kiện TIM5_CC3 110

SWBẮT ĐẦU Bit điều khiển phần mềm 111

Bảng 70. Kích hoạt bên ngoài cho các kênh được đưa vào cho ADC3

Nguồn Kiểu kết nối JEXTSEL[2:0]

Sự kiện TIM1_TRGO 000

Sự kiện TIM1_CC4 001

Sự kiện TIM4_CC3 010

Sự kiện TIM8_CC2 Tín hiệu bên trong từ bộ định thời trên chip 011

Sự kiện TIM8_CC4 100

Sự kiện TIM5_TRGO 101

Sự kiện TIM5_CC4 110

JSWBẮT ĐẦU Bit điều khiển phần mềm 111

226/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi tương tự sang số (ADC)

Các sự kiện kích hoạt nguồn phần mềm có thể được tạo bằng cách đặt một bit trong
thanh ghi (SWSTART và JSWSTART trong ADC_CR2).

Việc chuyển đổi nhóm thông thường có thể bị gián đoạn bởi một trình kích hoạt được chèn vào.

11.8 yêu cầu DMA

Vì giá trị các kênh thông thường đã chuyển đổi được lưu trữ trong một thanh ghi dữ liệu duy
nhất nên cần sử dụng DMA để chuyển đổi nhiều kênh thông thường. Điều này tránh mất dữ liệu
đã được lưu trong thanh ghi ADC_DR.

Chỉ khi kết thúc chuyển đổi kênh thông thường mới tạo ra yêu cầu DMA, cho phép truyền dữ liệu
đã chuyển đổi từ thanh ghi ADC_DR đến vị trí đích do người dùng chọn.

Ghi chú: Chỉ ADC1 và ADC3 mới có khả năng DMA này. Dữ liệu được chuyển đổi ADC2 có thể được truyền ở
chế độ ADC kép bằng DMA nhờ ADC1 chính.

RM0008 Phiên bản 21 227/1136

253
Machine Translated by Google

Bộ chuyển đổi tương tự sang số (ADC) RM0008

11.9 Chế độ ADC kép

Trong các thiết bị có hai ADC trở lên, có thể sử dụng chế độ ADC kép (xem Hình 29).

Trong chế độ ADC kép, việc bắt đầu chuyển đổi được kích hoạt luân phiên hoặc đồng thời bởi ADC1 master sang
ADC2 phụ, tùy thuộc vào chế độ được chọn bởi các bit DUALMOD[2:0] trong thanh ghi ADC1_CR1.

Ghi chú: Ở chế độ kép, khi định cấu hình chuyển đổi để được kích hoạt bởi sự kiện bên ngoài, người dùng phải chỉ
đặt trình kích hoạt cho máy chủ chính và đặt trình kích hoạt phần mềm cho máy phụ để ngăn các trình kích
hoạt giả bắt đầu chuyển đổi máy phụ không mong muốn. Tuy nhiên, các kích hoạt bên ngoài phải được bật trên
cả ADC chính và phụ.

Sáu chế độ có thể sau đây được thực hiện:

– Chế độ tiêm đồng thời

– Chế độ đồng thời thông thường

– Chế độ xen kẽ nhanh

– Chế độ xen kẽ chậm

- Chế độ kích hoạt thay thế

– Chế độ độc lập

Cũng có thể sử dụng các chế độ trước đó kết hợp theo những cách sau:

– Chế độ đồng thời được tiêm + Chế độ đồng thời thông thường

– Chế độ đồng thời thông thường + Chế độ kích hoạt thay thế

– Chế độ tiêm đồng thời + Chế độ xen kẽ

Ghi chú: Ở chế độ ADC kép, để đọc dữ liệu đã chuyển đổi phụ trên thanh ghi dữ liệu chính, bit DMA phải được bật ngay
cả khi nó không được sử dụng để truyền dữ liệu kênh thông thường đã chuyển đổi.

228/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi tương tự sang số (ADC)

Hình 29. Sơ đồ khối ADC kép(1)

Thanh ghi dữ liệu thông

thường
(12 bit) (16 bit)

Thanh ghi dữ liệu được chèn

(4 x 16 bit)

Kênh
thông thường
ADC2 (Nô lệ)
kênh
tiêm

kích hoạt nội bộ

Thanh ghi dữ liệu thông

/ệ
ua
ỉul
si

h
ữB
đ
c
d
thường (16 bit)(2)

Thanh ghi dữ liệu được chèn

(4 x 16 bit)

ADCx_IN0

Kênh
ADCx_IN1 GPIO
thông thường

Cổng
Kênh
được chèn
ADCx_IN15

Nhiệt độ. cảm


Điều khiển chế
biến VREFINT
độ kép

EXTI_11
ADC1 (Chính)
Bắt đầu kích hoạt mux
(nhóm thông thường)

EXTI_15
Bắt đầu kích hoạt mux

(nhóm được tiêm)

1. Bộ kích hoạt bên ngoài có trên ADC2 nhưng không được hiển thị cho mục đích của sơ đồ này.

2. Trong một số chế độ ADC kép, thanh ghi dữ liệu ADC1 (ADC1_DR) chứa cả dữ liệu được chuyển đổi thông thường ADC1 và ADC2
trên toàn bộ 32 bit.

RM0008 Phiên bản 21 229/1136


253
Machine Translated by Google

Bộ chuyển đổi tương tự sang số (ADC) RM0008

11.9.1 Chế độ tiêm đồng thời

Chế độ này chuyển đổi nhóm kênh được chèn. Nguồn kích hoạt bên ngoài đến từ nhóm mux được chèn
của ADC1 (được chọn bởi các bit JEXTSEL[2:0] trong thanh ghi ADC1_CR2). Một kích hoạt đồng
thời được cung cấp cho ADC2.

Ghi chú: Không chuyển đổi cùng một kênh trên hai ADC (không có thời gian lấy mẫu chồng chéo cho hai ADC khi
chuyển đổi cùng một kênh).

Khi kết thúc sự kiện chuyển đổi trên ADC1 hoặc ADC2:

• Dữ liệu đã chuyển đổi được lưu trữ trong các thanh ghi ADC_JDRx của mỗi giao diện ADC.

• Một ngắt JEOC được tạo ra (nếu được kích hoạt trên một trong hai giao diện ADC) khi
Các kênh được đưa vào ADC1/ADC2 đều được chuyển đổi.

Ghi chú: Ở chế độ đồng thời, phải cấu hình chính xác thời gian lấy mẫu giống nhau cho hai kênh sẽ được
lấy mẫu đồng thời bởi ACD1 và ADC2.

Hình 30. Chế độ đồng thời được đưa vào 4 kênh

Lấy mẫu
chuyển đổi

ADC2 CH0 CH1 CH2 CH3


ADC1 CH3 CH2 CH1 CH0

Cò súng Kết thúc quá trình chuyển đổi được đưa vào trên ADC1 và ADC2

11.9.2 Chế độ đồng thời thông thường

Chế độ này được thực hiện trên một nhóm kênh thông thường. Nguồn kích hoạt bên ngoài đến từ
nhóm thông thường của ADC1 (được chọn bởi các bit EXTSEL[2:0] trong thanh ghi ADC1_CR2).
Một kích hoạt đồng thời được cung cấp cho ADC2.

Ghi chú: Không chuyển đổi cùng một kênh trên hai ADC (không có thời gian lấy mẫu chồng chéo cho hai ADC khi
chuyển đổi cùng một kênh).

Khi kết thúc sự kiện chuyển đổi trên ADC1 hoặc ADC2:

• Yêu cầu truyền DMA 32 bit được tạo (nếu bit DMA được đặt) chuyển sang SRAM thanh ghi ADC1_DR 32
bit chứa dữ liệu được chuyển đổi ADC2 ở nửa từ trên và dữ liệu được chuyển đổi ADC1
ở nửa từ dưới.

• Ngắt EOC được tạo ra (nếu được bật trên một trong hai giao diện ADC) khi
Các kênh thông thường ADC1/ADC2 đều được chuyển đổi.

Ghi chú: Ở chế độ đồng thời thông thường, thời gian lấy mẫu chính xác giống nhau phải được cấu hình cho hai
kênh sẽ được lấy mẫu đồng thời bởi ACD1 và ADC2.

Hình 31. Chế độ đồng thời thông thường trên 16 kênh

Lấy mẫu

chuyển đổi

...
ADC1 CH0 CH1 CH2 CH3 CH15
...
ADC2 CH15 CH14 CH13 CH12 CH0

Cò súng Kết thúc chuyển đổi trên ADC1 và ADC2

230/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi tương tự sang số (ADC)

11.9.3 Chế độ xen kẽ nhanh

Chế độ này chỉ có thể được bắt đầu trên một nhóm kênh thông thường (thường là một kênh).
Nguồn kích hoạt bên ngoài đến từ kênh thông thường của ADC1. Sau khi kích hoạt bên ngoài xảy
ra:

• ADC2 khởi động ngay lập tức và

• ADC1 khởi động sau 7 chu kỳ xung nhịp ADC.

Nếu bit CONT được đặt trên cả ADC1 và ADC2 thì các kênh thông thường đã chọn của cả hai ADC sẽ
được chuyển đổi liên tục.

Sau khi ngắt EOC được tạo bởi ADC1 (nếu được bật thông qua bit EOCIE), yêu cầu truyền DMA 32
bit được tạo (nếu bit DMA được đặt) chuyển sang SRAM thanh ghi ADC1_DR 32 bit chứa dữ
liệu được chuyển đổi ADC2 trong nửa từ trên và dữ liệu được chuyển đổi ADC1 ở nửa từ dưới.

Ghi chú: Thời gian lấy mẫu tối đa được phép là <7 chu kỳ ADCCLK để tránh sự chồng chéo giữa các pha
lấy mẫu ADC1 và ADC2 trong trường hợp chúng chuyển đổi cùng một kênh.

Hình 32. Chế độ xen kẽ nhanh trên 1 kênh ở chế độ chuyển đổi liên tục

Kết thúc chuyển đổi trên ADC2


Lấy mẫu

chuyển đổi
ADC2 CH0 ... CH0

...
ADC1 CH0 CH0

Cò súng Kết thúc chuyển đổi trên ADC1

7 ADCCLK
chu kỳ MS40509V1

11.9.4 Chế độ xen kẽ chậm

Chế độ này chỉ có thể được bắt đầu trên một nhóm kênh thông thường (chỉ một kênh). Nguồn kích
hoạt bên ngoài đến từ kênh thông thường của ADC1. Sau khi xảy ra kích hoạt bên ngoài: • ADC2

khởi động ngay lập tức và

• ADC1 khởi động sau 14 chu kỳ xung nhịp ADC.

• ADC2 bắt đầu sau độ trễ thứ hai trong 14 chu kỳ ADC, v.v.

Ghi chú: Thời gian lấy mẫu tối đa được phép là <14 chu kỳ ADCCLK để tránh trùng lặp với lần chuyển đổi
tiếp theo.

Sau khi ngắt EOC được tạo bởi ADC1 (nếu được bật thông qua bit EOCIE), yêu cầu truyền DMA 32
bit được tạo (nếu bit DMA được đặt) chuyển sang SRAM thanh ghi ADC1_DR 32 bit chứa dữ
liệu được chuyển đổi ADC2 trong nửa từ trên và dữ liệu được chuyển đổi ADC1 ở nửa từ dưới.

Khởi động ADC2 mới được tạo tự động sau 28 chu kỳ xung nhịp ADC

Không thể đặt bit CONT ở chế độ này vì nó liên tục chuyển đổi kênh thông thường đã chọn.

Ghi chú: Ứng dụng phải đảm bảo rằng không có kích hoạt bên ngoài nào cho kênh được đưa vào xảy ra
khi chế độ xen kẽ được bật.

RM0008 Phiên bản 21 231/1136

253
Machine Translated by Google

Bộ chuyển đổi tương tự sang số (ADC) RM0008

Hình 33. Chế độ xen kẽ chậm trên 1 kênh

Kết thúc chuyển đổi trên ADC2 Lấy mẫu

chuyển đổi

ADC2 CH0 CH0


ADC1 CH0 CH0

Cò súng Kết thúc chuyển đổi trên ADC1

14 ADCCLK
chu kỳ

28 ADCCLK
chu kỳ

11.9.5 Chế độ kích hoạt thay thế

Chế độ này chỉ có thể được bắt đầu trên một nhóm kênh được đưa vào. Nguồn kích hoạt bên ngoài đến từ nhóm
mux được tiêm của ADC1. • Khi kích hoạt đầu tiên xảy

ra, tất cả các kênh nhóm được đưa vào trong ADC1 đều được chuyển đổi.

• Khi trigger thứ hai xuất hiện, tất cả các kênh nhóm được đưa vào trong ADC2 đều được chuyển đổi • v.v.

Ngắt JEOC, nếu được bật, sẽ được tạo sau khi tất cả các kênh nhóm được đưa vào của ADC1 được chuyển
đổi.

Ngắt JEOC, nếu được bật, sẽ được tạo sau khi tất cả các kênh nhóm được đưa vào của ADC2 được chuyển
đổi.

Nếu một trình kích hoạt bên ngoài khác xảy ra sau khi tất cả các kênh nhóm được chèn đã được chuyển đổi
thì quá trình kích hoạt thay thế sẽ khởi động lại bằng cách chuyển đổi các kênh nhóm được chèn ADC1.

Hình 34. Trình kích hoạt thay thế: nhóm kênh được đưa vào của mỗi ADC

lần kích hoạt đầu tiên kích hoạt thứ 3 kích hoạt thứ n
Lấy mẫu
EOC, JEOC trên ADC1 EOC, JEOC trên ADC1
chuyển đổi

ADC1
...
ADC2

EOC, JEOC trên ADC2 EOC, JEOC trên ADC2

kích hoạt thứ 2 kích hoạt thứ 4 trình kích hoạt thứ (n+1)

MS47570V1

Nếu chế độ không liên tục được đưa vào được bật cho cả ADC1 và ADC2:

• Khi kích hoạt đầu tiên xảy ra, kênh được đưa vào đầu tiên trong ADC1 sẽ được chuyển đổi.

• Khi kích hoạt thứ hai đến, kênh được đưa vào đầu tiên trong ADC2 sẽ được chuyển đổi

• và vân vân....

Ngắt JEOC, nếu được bật, sẽ được tạo sau khi tất cả các kênh nhóm được đưa vào của ADC1 được chuyển
đổi.

Ngắt JEOC, nếu được bật, sẽ được tạo sau khi tất cả các kênh nhóm được đưa vào của ADC2 được chuyển
đổi.

232/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi tương tự sang số (ADC)

Nếu một trình kích hoạt bên ngoài khác xảy ra sau khi tất cả các kênh nhóm được chèn đã được chuyển đổi thì
quá trình kích hoạt thay thế sẽ khởi động lại.

Hình 35. Bộ kích hoạt thay thế: 4 kênh được đưa vào (mỗi ADC) trong mô hình không liên tục

kích hoạt đầu tiên kích hoạt thứ ba kích hoạt thứ 5 kích hoạt thứ 7 Lấy mẫu

JEOC trên ADC1 chuyển đổi

ADC1

ADC2

JEOC trên ADC2

kích hoạt thứ hai kích hoạt thứ tư kích hoạt thứ 6 kích hoạt thứ 8

11.9.6 Chế độ độc lập

Ở chế độ này, đồng bộ hóa ADC kép được bỏ qua và mỗi giao diện ADC hoạt động độc lập.

11.9.7 Chế độ kết hợp đồng thời thông thường/được tiêm

Có thể làm gián đoạn quá trình chuyển đổi đồng thời của một nhóm thông thường để bắt đầu chuyển đổi đồng
thời một nhóm được chèn vào.

Ghi chú: Trong chế độ đồng thời kết hợp thường xuyên/được đưa vào, thời gian lấy mẫu chính xác phải được cấu hình
cho hai kênh sẽ được lấy mẫu đồng thời bởi ACD1 và ADC2.

11.9.8 Kết hợp chế độ kích hoạt đồng thời + luân phiên thường xuyên

Có thể làm gián đoạn chuyển đổi đồng thời nhóm thông thường để bắt đầu chuyển đổi kích hoạt thay thế của
nhóm được chèn. Hình 36 cho thấy hành vi của một trình kích hoạt thay thế làm gián đoạn quá trình
chuyển đổi đồng thời thông thường.

Quá trình chuyển đổi thay thế được chèn sẽ bắt đầu ngay sau khi sự kiện được chèn đến. Nếu chuyển đổi thông
thường đang chạy, để đảm bảo đồng bộ hóa sau khi chuyển đổi được đưa vào, quá trình chuyển đổi thông
thường của cả hai ADC (chính/phụ) sẽ bị dừng và tiếp tục đồng bộ khi kết thúc quá trình chuyển đổi được
đưa vào.

Ghi chú: Trong chế độ kích hoạt đồng thời + thay thế kết hợp thường xuyên, thời gian lấy mẫu chính xác phải được cấu
hình cho hai kênh sẽ được lấy mẫu đồng thời bởi ACD1 và ADC2.

RM0008 Phiên bản 21 233/1136

253
Machine Translated by Google

Bộ chuyển đổi tương tự sang số (ADC) RM0008

Hình 36. Đồng thời xen kẽ + thường xuyên

lần kích hoạt đầu tiên

đăng ký ADC MASTER CH1 CH2 CH3 CH3 CH4 CH4 CH5

ADC MASTER tiêm CH1

quy tắc ADC SLAVE CH5 CH6 CH7 CH7 CH8 CH8 CH9

ADC SLAVE tiêm CH1

Đồng bộ không bị mất

kích hoạt thứ 2

MS47571V1

Nếu trình kích hoạt xảy ra trong quá trình chuyển đổi được chèn làm gián đoạn chuyển đổi thông thường thì
chuyển đổi đó sẽ bị bỏ qua. Hình 37 thể hiện hành vi trong trường hợp này (kích hoạt thứ hai bị bỏ qua).

Hình 37. Trường hợp kích hoạt xảy ra trong quá trình chuyển đổi được chèn

lần kích hoạt đầu tiên kích hoạt thứ 3

quy tắc ADC1 CH0 CH1 CH2 CH2 CH3 CH3 CH4
CH0 CH0
ADC1 tiêm

quy tắc ADC2


CH3 CH5 CH6 CH6 CH7 CH7 CH8

CH0
ADC2 tiêm

kích hoạt thứ 2 kích hoạt thứ 2


ai16063

11.9.9 Kết hợp tiêm đồng thời + xen kẽ

Có thể làm gián đoạn một chuyển đổi xen kẽ bằng một sự kiện được chèn vào. Trong trường hợp này, quá
trình chuyển đổi xen kẽ bị gián đoạn và quá trình chuyển đổi được chèn bắt đầu, khi kết thúc chuỗi
được chèn, quá trình chuyển đổi xen kẽ sẽ được tiếp tục lại. Hình 38 cho thấy hành vi sử dụng một ví
dụ.

Ghi chú: Khi bộ chia tỷ lệ trước đồng hồ ADC được đặt thành 4, chế độ xen kẽ không phục hồi với các chu kỳ
lấy mẫu cách đều nhau: khoảng thời gian lấy mẫu là 8 chu kỳ đồng hồ ADC, sau đó là 6 chu kỳ đồng hồ ADC,
thay vì 7 chu kỳ đồng hồ theo sau là 7 chu kỳ đồng hồ.

234/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi tương tự sang số (ADC)

Hình 38. Kênh đơn xen kẽ với chuỗi CH11, CH12 được chèn

Lấy mẫu
ADC1 CH0 CH0 CH0 chuyển đổi

ADC2 CH0 CH0 CH0

CH11 CH12
Cò súng
CH12 CH11
CH0 CH0

CH0 CH0

11.10 Cảm biến nhiệt độ


Cảm biến nhiệt độ có thể được sử dụng để đo nhiệt độ đường giao nhau (TJ) của thiết bị.

Cảm biến nhiệt độ được kết nối bên trong với kênh đầu vào ADCx_IN16 được sử dụng để chuyển đổi
điện áp đầu ra cảm biến thành giá trị kỹ thuật số. Thời gian lấy mẫu khuyến nghị cho cảm biến nhiệt
độ là 17,1 µs.

Sơ đồ khối của cảm biến nhiệt độ được thể hiện trên hình 39.

Khi không sử dụng, cảm biến này có thể được đặt ở chế độ tắt nguồn.

Ghi chú: Bit TSVREFE phải được đặt để cho phép cả hai kênh bên trong: chuyển đổi ADCx_IN16 (cảm biến nhiệt
độ) và ADCx_IN17 (VREFINT) .

Điện áp đầu ra của cảm biến nhiệt độ thay đổi tuyến tính theo nhiệt độ. Độ lệch của đường này thay
đổi từ chip này sang chip khác do sự thay đổi của quy trình (lên tới 45°C từ chip này sang chip khác).

Cảm biến nhiệt độ bên trong phù hợp hơn với các ứng dụng phát hiện sự thay đổi nhiệt độ thay
vì nhiệt độ tuyệt đối. Nếu cần đọc nhiệt độ chính xác, nên sử dụng bộ phận cảm biến nhiệt độ bên
ngoài.

Hình 39. Sơ đồ khối cảm biến nhiệt độ và kênh VREFINT

Bit điều khiển TSVREFE

Nhiệt độ VENSE
cảm biến
ADC1_IN16

Dữ liệu được chuyển đổi

ADC1
/ệ
u si
a
ỉ ul

h
ữ B
đ
c
d

Nội bộ VREFINT

Bộ nguồn ADC1_IN17

MS35936V2

RM0008 Phiên bản 21 235/1136

253
Machine Translated by Google

Bộ chuyển đổi tương tự sang số (ADC) RM0008

Đọc nhiệt độ
Để sử dụng cảm biến:

1. Chọn kênh đầu vào ADCx_IN16.

2. Chọn thời gian lấy mẫu là 17,1 µs

3. Đặt bit TSVREFE trong thanh ghi điều khiển ADC 2 (ADC_CR2) để đánh thức
cảm biến nhiệt độ từ chế độ tắt nguồn.

4. Bắt đầu chuyển đổi ADC bằng cách đặt bit ADON (hoặc bằng bộ kích hoạt bên ngoài).

5. Đọc dữ liệu VSENSE kết quả trong thanh ghi dữ liệu ADC

6. Tính nhiệt độ theo công thức sau:

Nhiệt độ (tính bằng °C) = {(V25 - VSENSE) / Avg_Slope} + 25.

Trong

đó, V25 = giá trị VSENSE ở 25° C và

Độ dốc trung bình = Độ dốc trung bình của đường cong giữa Nhiệt độ so với VSENSE (được tính
bằng mV/° C hoặc µV/ °C).

Tham khảo phần Đặc tính điện để biết giá trị thực tế của V25 và Avg_Slope.

Ghi chú: Cảm biến có thời gian khởi động sau khi thức dậy từ chế độ tắt nguồn trước khi có thể xuất
VSENSE ở mức chính xác. ADC cũng có thời gian khởi động sau khi bật nguồn, vì vậy để giảm thiểu
độ trễ, các bit ADON và TSVREFE phải được đặt cùng lúc.

11.11 ADC ngắt


Một ngắt có thể được tạo ra khi kết thúc quá trình chuyển đổi đối với các nhóm thông thường và các nhóm

được chèn và khi bit trạng thái cơ quan giám sát tương tự được đặt. Các bit cho phép ngắt riêng biệt có sẵn

để linh hoạt.

Ghi chú: Các ngắt ADC1 và ADC2 được ánh xạ lên cùng một vectơ ngắt. Các ngắt ADC3 được ánh xạ lên một
vectơ ngắt riêng biệt.

Hai cờ khác có trong thanh ghi ADC_SR nhưng không có ngắt nào liên quan đến chúng:

• JSTRT (Bắt đầu chuyển đổi cho các kênh nhóm được chèn)

• STRT (Bắt đầu chuyển đổi cho các kênh nhóm thông thường)

Bảng 71. Ngắt ADC

Sự kiện gián đoạn Cờ sự kiện Kích hoạt bit điều khiển

Kết thúc chuyển đổi nhóm thông thường EOC EOCI

Kết thúc nhóm được chèn chuyển đổi JEOC JEOCIE

Bit trạng thái cơ quan giám sát tương tự được thiết lập AWD AWDIE

236/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi tương tự sang số (ADC)

11.12 Thanh ghi ADC


Tham khảo Phần 2.2 trên trang 45 để biết danh sách các chữ viết tắt được sử dụng trong mô tả đăng ký.

Các thanh ghi ngoại vi phải được truy cập bằng từ (32-bit).

11.12.1 Thanh ghi trạng thái ADC (ADC_SR)


Độ lệch địa chỉ: 0x00

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

STRT JSTRT JEOC EOC AWD


Kín đáo
rc_w0 rc_w0 rc_w0 rc_w0 rc_w0

Bit 31:5 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 4 STRT: Cờ bắt đầu kênh thông thường

Bit này được thiết lập bằng phần cứng khi quá trình chuyển đổi kênh thông thường bắt đầu. Nó được xóa bằng phần mềm.

0: Không bắt đầu chuyển đổi kênh thông thường

1: Quá trình chuyển đổi kênh thông thường đã bắt đầu

Bit 3 JSTRT: Cờ bắt đầu kênh được đưa vào

Bit này được thiết lập bằng phần cứng khi quá trình chuyển đổi nhóm kênh được chèn bắt đầu. Nó được xóa bằng
phần mềm.

0: Không bắt đầu chuyển đổi nhóm được chèn

1: Quá trình chuyển đổi nhóm được chèn đã bắt đầu

Bit 2 JEOC: Kết thúc chuyển đổi kênh được đưa vào

Bit này được thiết lập bằng phần cứng ở cuối quá trình chuyển đổi kênh nhóm được đưa vào. Nó được xóa bằng phần

mềm.

0: Chuyển đổi chưa hoàn tất 1: Chuyển

đổi hoàn tất

Bit 1 EOC: Kết thúc chuyển đổi

Bit này được thiết lập bằng phần cứng khi kết thúc chuyển đổi kênh nhóm (thông thường hoặc được chèn). Nó được xóa

bằng phần mềm hoặc bằng cách đọc ADC_DR.

0: Chuyển đổi chưa hoàn tất 1: Chuyển

đổi hoàn tất

Bit 0 AWD: Cờ giám sát tương tự Bit này

được thiết lập bằng phần cứng khi điện áp chuyển đổi vượt qua các giá trị được lập trình trong các thanh ghi

ADC_LTR và ADC_HTR. Nó được xóa bằng phần mềm.

0: Không có sự kiện giám sát Analog nào xảy ra

1: Đã xảy ra sự kiện giám sát tương tự

RM0008 Phiên bản 21 237/1136

253
Machine Translated by Google

Bộ chuyển đổi tương tự sang số (ADC) RM0008

11.12.2 Thanh ghi điều khiển ADC 1 (ADC_CR1)

Độ lệch địa chỉ: 0x04

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

AWDE hàm
N N DUALMOD[3:0]
Kín đáo Kín đáo
rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

JDISCE ĐĨA AWD JEOC


DISCNUM[2:0] JAUTO QUÉT AWDIE EOCIE AWDCH[4:0]
N VN SGL I E

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:24 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 23 AWDEN: Kích hoạt cơ quan giám sát tương tự trên các kênh thông thường

Bit này được thiết lập/đặt lại bằng phần mềm.

0: Cơ quan giám sát tương tự bị tắt trên các kênh thông thường

1: Cơ quan giám sát tương tự được bật trên các kênh thông thường

Bit 22 JAWDEN: Kích hoạt cơ quan giám sát tương tự trên các kênh được chèn

Bit này được thiết lập/đặt lại bằng phần mềm.

0: Cơ quan giám sát tương tự bị tắt trên các kênh được chèn

1: Cơ quan giám sát tương tự được bật trên các kênh được chèn

Bit 21:20 Dự trữ, phải được giữ ở giá trị đặt lại.

Bits 19:16 DUALMOD[3:0]: Lựa chọn chế độ kép

Các bit này được viết bằng phần mềm để chọn chế độ hoạt động.

0000: Chế độ độc lập.

0001: Chế độ kết hợp đồng thời thường xuyên + tiêm đồng thời 0010: Chế độ kết hợp

đồng thời thường xuyên + kích hoạt luân phiên

0011: Chế độ tiêm kết hợp đồng thời + xen kẽ nhanh 0100: Chế độ tiêm kết hợp

đồng thời + xen kẽ chậm 0101: Chỉ chế độ tiêm đồng thời

0110: Chỉ ở chế độ đồng thời thông thường

0111: Chỉ chế độ xen kẽ nhanh

1000: Chỉ chế độ xen kẽ chậm

1001: Chỉ chế độ kích hoạt thay thế

Lưu ý: Các bit này được dành riêng trong ADC2 và ADC3.

Ở chế độ kép, việc thay đổi cấu hình kênh sẽ tạo ra sự khởi động lại có thể gây mất đồng bộ hóa. Bạn nên

tắt chế độ kép trước khi thay đổi cấu hình.

Bit 15:13 DISCNUM[2:0]: Số kênh ở chế độ không liên tục

Các bit này được viết bằng phần mềm để xác định số lượng kênh thông thường sẽ được chuyển đổi ở chế độ không

liên tục, sau khi nhận được kích hoạt bên ngoài.
000: 1 kênh

001: 2 kênh

......

111: 8 kênh

238/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi tương tự sang số (ADC)

Bit 12 JDISCEN: Chế độ không liên tục trên các kênh được đưa vào

Bit này được thiết lập và xóa bằng phần mềm để bật/tắt chế độ không liên tục trên các kênh nhóm được chèn

0: Đã tắt chế độ không liên tục trên các kênh được đưa vào

1: Đã bật chế độ không liên tục trên các kênh được đưa vào

Bit 11 DISCEN: Chế độ không liên tục trên các kênh thông thường

Bit này được thiết lập và xóa bằng phần mềm để bật/tắt chế độ Không liên tục trên các kênh thông thường.

0: Tắt chế độ không liên tục trên các kênh thông thường

1: Đã bật chế độ không liên tục trên các kênh thông thường

Bit 10 JAUTO: Chuyển đổi nhóm được chèn tự động Bit này được

thiết lập và xóa bằng phần mềm để bật/tắt chuyển đổi nhóm được chèn tự động sau khi chuyển đổi nhóm thông

thường.

0: Đã tắt chuyển đổi nhóm được chèn tự động 1: Đã bật

chuyển đổi nhóm được chèn tự động

Bit 9 AWDSGL: Kích hoạt cơ quan giám sát trên một kênh ở chế độ quét

Bit này được thiết lập và xóa bằng phần mềm để bật/tắt cơ quan giám sát tương tự trên kênh được xác định bởi

các bit AWDCH[4:0].

0: Cơ quan giám sát tương tự được bật trên tất cả các kênh

1: Cơ quan giám sát tương tự được bật trên một kênh

Bit 8 QUÉT: Chế độ quét

Bit này được thiết lập và xóa bằng phần mềm để bật/tắt chế độ Quét. Trong chế độ Quét, các đầu vào được

chọn thông qua các thanh ghi ADC_SQRx hoặc ADC_JSQRx sẽ được chuyển đổi.
0: Đã tắt chế độ quét

1: Đã bật chế độ quét

Lưu ý: Ngắt EOC hoặc JEOC chỉ được tạo khi kết thúc chuyển đổi kênh cuối cùng nếu bit EOCIE hoặc JEOCIE

tương ứng được đặt

Bit 7 JEOCIE: Kích hoạt ngắt cho các kênh được chèn

Bit này được thiết lập và xóa bằng phần mềm để bật/tắt việc kết thúc ngắt chuyển đổi đối với các kênh được đưa

vào.

0: Ngắt JEOC bị vô hiệu hóa

1: Cho phép ngắt JEOC. Một ngắt được tạo ra khi bit JEOC được đặt.

RM0008 Phiên bản 21 239/1136

253
Machine Translated by Google

Bộ chuyển đổi tương tự sang số (ADC) RM0008

Bit 6 AWDIE: Cho phép ngắt cơ quan giám sát tương tự

Bit này được thiết lập và xóa bằng phần mềm để bật/tắt ngắt cơ quan giám sát tương tự.

0: Vô hiệu hóa ngắt cơ quan giám sát tương

tự 1: Cho phép ngắt cơ quan giám sát tương tự

Bit 5 EOCIE: Cho phép ngắt cho EOC Bit này được

thiết lập và xóa bằng phần mềm để bật/tắt ngắt Kết thúc chuyển đổi.

0: Ngắt EOC bị vô hiệu hóa

1: Cho phép ngắt EOC. Một ngắt được tạo ra khi bit EOC được đặt.

Bits 4:0 AWDCH[4:0]: Các bit chọn kênh cơ quan giám sát tương tự

Các bit này được thiết lập và xóa bằng phần mềm. Họ chọn kênh đầu vào để được cơ quan giám sát Analog bảo vệ.

00000: Kênh tương tự ADC0 00001:

Kênh tương tự ADC1


....

01111: Kênh tương tự ADC15

10000: Kênh tương tự ADC16

10001: Kênh tương tự ADC17


Các giá trị khác: dành riêng.

Lưu ý: Kênh16 và Kênh17 tương tự ADC1 được kết nối bên trong với nhiệt độ

cảm biến và tới VREFINT tương ứng.

Đầu vào tương tự ADC2 Kênh16 và Kênh17 được kết nối nội bộ với VSS.

Đầu vào tương tự ADC3 Channel9, Channel14, Channel15, Channel16 và Channel17 được kết nối với VSS.

11.12.3 Thanh ghi điều khiển ADC 2 (ADC_CR2)

Độ lệch địa chỉ: 0x08

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

TSVRE SWSTA JSWST EXTTR


EXTSEL[2:0] Res.
Kín đáo FE RT NGHỆ THUẬT IG

rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

JEXTT RST
JEXTSEL[2:0] CĂN CHỈNH Kín đáo DMA CAL CONT ADON
GIÀN KHOAN
Kín đáo CAL

rw rw rw rw rw Res. rw rw rw rw rw

240/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi tương tự sang số (ADC)

Bit 31:24 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 23 TSVREFE: Kích hoạt cảm biến nhiệt độ và VREFINT

Bit này được thiết lập và xóa bằng phần mềm để bật/tắt cảm biến nhiệt độ và VREFINT

kênh. Trong các thiết bị có ADC kép, bit này chỉ có trong ADC1.

0: Cảm biến nhiệt độ và kênh VREFINT bị vô hiệu hóa

1: Đã bật cảm biến nhiệt độ và kênh VREFINT

Bit 22 SWSTART: Bắt đầu chuyển đổi các kênh thông thường

Bit này được phần mềm thiết lập để bắt đầu chuyển đổi và bị xóa bằng phần cứng ngay khi quá trình chuyển

đổi bắt đầu. Nó bắt đầu chuyển đổi một nhóm các kênh thông thường nếu SWSTART được chọn làm sự kiện kích hoạt

bởi các bit EXTSEL[2:0].


0: Đặt lại trạng thái

1: Bắt đầu chuyển đổi các kênh thông thường

Bit 21 JSWSTART: Bắt đầu chuyển đổi các kênh được chèn

Bit này được thiết lập bằng phần mềm và bị xóa bằng phần mềm hoặc phần cứng ngay khi quá trình chuyển đổi bắt đầu.

Nó bắt đầu chuyển đổi một nhóm các kênh được chèn (nếu JSWSTART được chọn làm sự kiện kích hoạt bởi các bit

JEXTSEL[2:0].

0: Đặt lại trạng thái

1: Bắt đầu chuyển đổi các kênh được chèn

Bit 20 EXTTRIG: Chế độ chuyển đổi kích hoạt bên ngoài cho các kênh thông thường

Bit này được thiết lập và xóa bằng phần mềm để bật/tắt bộ kích hoạt bên ngoài được sử dụng để bắt đầu chuyển đổi

nhóm kênh thông thường.


0: Chuyển đổi trên sự kiện bên ngoài bị vô hiệu hóa

1: Đã bật chuyển đổi trên sự kiện bên ngoài

Bits 19:17 EXTSEL[2:0]: Chọn sự kiện bên ngoài cho nhóm thông thường

Các bit này chọn sự kiện bên ngoài được sử dụng để kích hoạt bắt đầu chuyển đổi một nhóm thông thường:

Đối với ADC1 và ADC2, các trigger được chỉ định là:
000: Sự kiện hẹn giờ 1 CC1

001: Sự kiện hẹn giờ 1 CC2

010: Sự kiện hẹn giờ 1 CC3

011: Sự kiện hẹn giờ 2 CC2

100: Hẹn giờ 3 sự kiện TRGO

101: Sự kiện hẹn giờ 4 CC4

110: Sự kiện EXTI dòng 11/TIM8_TRGO (TIM8_TRGO chỉ khả dụng ở các thiết bị có mật độ cao và mật độ XL)

111: BẮT ĐẦU

Đối với ADC3, các kích hoạt được chỉ định là:
000: Sự kiện bộ định thời 3 CC1

001: Sự kiện hẹn giờ 2 CC3

010: Sự kiện hẹn giờ 1 CC3

011: Sự kiện hẹn giờ 8 CC1

100: Bộ định thời 8 sự kiện TRGO

101: Sự kiện hẹn giờ 5 CC1

110: Sự kiện hẹn giờ 5 CC3

111: BẮT ĐẦU

Bit 16 Dành riêng, phải được giữ ở giá trị đặt lại.

RM0008 Phiên bản 21 241/1136

253
Machine Translated by Google

Bộ chuyển đổi tương tự sang số (ADC) RM0008

Bit 15 JEXTTRIG: Chế độ chuyển đổi kích hoạt bên ngoài cho các kênh được đưa vào Bit này được

thiết lập và xóa bằng phần mềm để bật/tắt bộ kích hoạt bên ngoài được sử dụng để bắt đầu chuyển đổi nhóm kênh được

đưa vào.

0: Đã tắt chuyển đổi trên sự kiện bên ngoài 1: Đã bật

chuyển đổi trên sự kiện bên ngoài

Bit 14:12 JEXTSEL[2:0]: Chọn sự kiện bên ngoài cho nhóm được tiêm

Các bit này chọn sự kiện bên ngoài được sử dụng để kích hoạt bắt đầu chuyển đổi của nhóm được chèn:

Đối với ADC1 và ADC2, các trigger được chỉ định là:

000: Hẹn giờ 1 sự kiện TRGO

001: Sự kiện hẹn giờ 1 CC4

010: Sự kiện hẹn giờ 2 TRGO

011: Sự kiện bộ định thời 2 CC1

100: Sự kiện hẹn giờ 3 CC4

101: Sự kiện hẹn giờ 4 TRGO

110: Sự kiện EXTI line15/TIM8_CC4 (TIM8_CC4 chỉ khả dụng ở các thiết bị có mật độ cao và mật độ XL)

111: JSWBẮT ĐẦU

Đối với ADC3, các kích hoạt được chỉ định là:

000: Hẹn giờ 1 sự kiện TRGO

001: Sự kiện hẹn giờ 1 CC4

010: Sự kiện hẹn giờ 4 CC3

011: Sự kiện bộ định thời 8 CC2

100: Sự kiện hẹn giờ 8 CC4

101: Bộ định thời 5 sự kiện TRGO

110: Sự kiện hẹn giờ 5 CC4

111: JSWBẮT ĐẦU

Bit 11 ALIGN: Căn chỉnh dữ liệu

bit này được thiết lập và xóa bằng phần mềm. Tham khảo Hình 27.và Hình 28.

0: Căn phải 1: Căn trái

Bit 10:9 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 8 DMA: Chế độ truy cập bộ nhớ trực tiếp Bit này

được thiết lập và xóa bằng phần mềm. Tham khảo chương bộ điều khiển DMA để biết thêm chi tiết.

0: Đã tắt chế độ DMA 1: Đã

bật chế độ DMA Chỉ ADC1 và

ADC3 mới có thể tạo yêu cầu DMA.

Bit 7:4 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 3 RSTCAL: Đặt lại hiệu chuẩn

Bit này được thiết lập bằng phần mềm và được xóa bằng phần cứng. Nó sẽ bị xóa sau khi các thanh ghi hiệu chuẩn được
khởi tạo.

0: Thanh ghi hiệu chuẩn được khởi tạo.

1: Khởi tạo thanh ghi hiệu chuẩn.

Lưu ý: Nếu RSTCAL được đặt khi quá trình chuyển đổi đang diễn ra thì cần có các chu kỳ bổ sung để xóa các thanh ghi hiệu

chuẩn.

242/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi tương tự sang số (ADC)

Bit 2 CAL: Hiệu chuẩn A/D

Bit này được thiết lập bằng phần mềm để bắt đầu hiệu chuẩn. Nó được thiết lập lại bằng phần cứng sau khi hiệu

chuẩn hoàn tất.

0: Hiệu chuẩn hoàn tất 1: Kích

hoạt hiệu chuẩn

Bit 1 CONT: Chuyển đổi liên tục

bit này được thiết lập và xóa bằng phần mềm. Nếu việc chuyển đổi được thiết lập diễn ra liên tục cho đến khi bit này được
đặt lại.

0: Chế độ chuyển đổi đơn

1: Chế độ chuyển đổi liên tục

Bit 0 ADON: BẬT/TẮT bộ chuyển đổi A/D

bit này được thiết lập và xóa bằng phần mềm. Nếu bit này giữ giá trị bằng 0 và số 1 được ghi vào nó thì nó sẽ đánh

thức ADC từ trạng thái Tắt nguồn.

Quá trình chuyển đổi bắt đầu khi bit này giữ giá trị 1 và số 1 được ghi vào nó. Ứng dụng phải cho phép độ trễ

tSTAB giữa thời điểm bật nguồn và bắt đầu chuyển đổi. Tham khảo Hình 23.

0: Tắt chuyển đổi/hiệu chỉnh ADC và chuyển sang chế độ tắt nguồn.

1: Kích hoạt ADC và bắt đầu chuyển đổi

Lưu ý: Nếu bất kỳ bit nào khác trong thanh ghi này ngoài ADON bị thay đổi cùng lúc thì chuyển đổi sẽ không được

kích hoạt. Điều này nhằm ngăn chặn việc kích hoạt một chuyển đổi sai lầm.

RM0008 Phiên bản 21 243/1136

253
Machine Translated by Google

Bộ chuyển đổi tương tự sang số (ADC) RM0008

11.12.4 Thanh ghi thời gian mẫu ADC 1 (ADC_SMPR1)


Độ lệch địa chỉ: 0x0C

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

SMP17[2:0] SMP16[2:0] SMP15[2:1]


Kín đáo
rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

SMP
SMP14[2:0] SMP13[2:0] SMP12[2:0] SMP11[2:0] SMP10[2:0]
15_0

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:24 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 23:0 SMPx[2:0]: Kênh x Lựa chọn thời gian mẫu

Các bit này được viết bằng phần mềm để chọn thời gian lấy mẫu riêng cho từng kênh.
Trong suốt chu kỳ mẫu, các bit chọn kênh phải không thay đổi.
000: 1,5 chu kỳ
001: 7,5 chu kỳ
010: 13,5 chu kỳ
011: 28,5 chu kỳ
100: 41,5 chu kỳ
101: 55,5 chu kỳ
110: 71,5 chu kỳ
111: 239,5 chu kỳ

Lưu ý: Kênh16 và Kênh 17 tương tự ADC1 được kết nối bên trong với nhiệt độ
cảm biến và tới VREFINT tương ứng.

Đầu vào tương tự ADC2 Kênh16 và Kênh17 được kết nối nội bộ với VSS.
Đầu vào tương tự ADC3 Kênh14, Kênh15, Kênh16 và Kênh17 được kết nối với VSS.

244/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi tương tự sang số (ADC)

11.12.5 Thanh ghi thời gian mẫu ADC 2 (ADC_SMPR2)


Độ lệch địa chỉ: 0x10

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo SMP9[2:0] SMP8[2:0] SMP7[2:0] SMP6[2:0] SMP5[2:1]

Res. rw rw rw rw rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

SMP
SMP4[2:0] SMP3[2:0] SMP2[2:0] SMP1[2:0] SMP0[2:0]
5_0

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:30 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 29:0 SMPx[2:0]: Kênh x Lựa chọn thời gian mẫu

Các bit này được viết bằng phần mềm để chọn thời gian lấy mẫu riêng cho từng kênh.
Trong suốt chu kỳ mẫu, các bit chọn kênh phải không thay đổi.

000: 1,5 chu kỳ

001: 7,5 chu kỳ

010: 13,5 chu kỳ

011: 28,5 chu kỳ

100: 41,5 chu kỳ

101: 55,5 chu kỳ

110: 71,5 chu kỳ

111: 239,5 chu kỳ

Lưu ý: Kênh9 đầu vào tương tự ADC3 được kết nối với VSS.

11.12.6 Thanh ghi bù dữ liệu kênh được đưa vào ADC x (ADC_JOFRx) (x=1..4)
Độ lệch địa chỉ: 0x14-0x20

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

JOFFSETx[11:0]
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:12 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 11:0 JOFFSETx[11:0]: Độ lệch dữ liệu cho kênh được chèn x

Các bit này được ghi bằng phần mềm để xác định độ lệch được trừ khỏi dữ liệu được chuyển đổi thô
khi chuyển đổi các kênh được chèn. Kết quả chuyển đổi có thể được đọc từ thanh ghi ADC_JDRx.

RM0008 Phiên bản 21 245/1136

253
Machine Translated by Google

Bộ chuyển đổi tương tự sang số (ADC) RM0008

11.12.7 Thanh ghi ngưỡng cao cơ quan giám sát ADC (ADC_HTR)

Độ lệch địa chỉ: 0x24

Giá trị đặt lại: 0x0000 0FFF

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

HT[11:0]
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:12 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 11:0 HT[11:0]: Ngưỡng cao của cơ quan giám sát tương

tự. Các bit này được viết bằng phần mềm để xác định ngưỡng cao cho cơ quan giám sát tương tự.

Ghi chú: Phần mềm có thể ghi vào các thanh ghi này khi quá trình chuyển đổi ADC đang diễn ra. Giá
trị được lập trình sẽ có hiệu lực khi quá trình chuyển đổi tiếp theo hoàn tất. Việc ghi vào
thanh ghi này được thực hiện với độ trễ ghi có thể tạo ra sự không chắc chắn về thời gian hiệu
quả mà giá trị mới được lập trình.

11.12.8 Thanh ghi ngưỡng thấp của cơ quan giám sát ADC (ADC_LTR)

Độ lệch địa chỉ: 0x28

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

LT[11:0]
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:12 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 11:0 LT[11:0]: Ngưỡng thấp của cơ quan giám sát tương

tự. Các bit này được viết bằng phần mềm để xác định ngưỡng thấp cho cơ quan giám sát tương tự.

Ghi chú: Phần mềm có thể ghi vào các thanh ghi này khi quá trình chuyển đổi ADC đang diễn ra. Giá
trị được lập trình sẽ có hiệu lực khi quá trình chuyển đổi tiếp theo hoàn tất. Việc ghi vào
thanh ghi này được thực hiện với độ trễ ghi có thể tạo ra sự không chắc chắn về thời gian hiệu
quả mà giá trị mới được lập trình.

246/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi tương tự sang số (ADC)

11.12.9 Thanh ghi trình tự thường xuyên ADC 1 (ADC_SQR1)

Độ lệch địa chỉ: 0x2C

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

L[3:0] SQ16[4:1]
Kín đáo
rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

SQ16_0 SQ15[4:0] SQ14[4:0] SQ13[4:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:24 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 23:20 L[3:0]: Độ dài chuỗi kênh thông thường

Các bit này được viết bằng phần mềm để xác định tổng số chuyển đổi trong chuỗi chuyển đổi kênh thông
thường.
0000: 1 chuyển đổi

0001: 2 chuyển đổi

.....

1111: 16 chuyển đổi

Bit 19:15 SQ16[4:0]: chuyển đổi thứ 16 theo trình tự thông thường

Các bit này được ghi bằng phần mềm với số kênh (0..17) được gán là số thứ 16 trong chuỗi chuyển đổi.

Bit 14:10 SQ15[4:0]: chuyển đổi thứ 15 theo trình tự thông thường

Bit 9:5 SQ14[4:0]: chuyển đổi thứ 14 theo trình tự thông thường

Bit 4:0 SQ13[4:0]: chuyển đổi thứ 13 theo trình tự thông thường

RM0008 Phiên bản 21 247/1136

253
Machine Translated by Google

Bộ chuyển đổi tương tự sang số (ADC) RM0008

11.12.10 Thanh ghi trình tự thường xuyên ADC 2 (ADC_SQR2)

Độ lệch địa chỉ: 0x30

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

SQ12[4:0] SQ11[4:0] SQ10[4:1]


Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

SQ10_
SQ9[4:0] SQ8[4:0] SQ7[4:0]
0

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:30 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 29:26 SQ12[4:0]: chuyển đổi thứ 12 theo trình tự thông thường

Các bit này được ghi bằng phần mềm với số kênh (0..17) được gán là số thứ 12 trong chuỗi được chuyển đổi.

Bit 24:20 SQ11[4:0]: chuyển đổi thứ 11 theo trình tự thông thường

Bit 19:15 SQ10[4:0]: Chuyển đổi thứ 10 theo trình tự thông thường

Bit 14:10 SQ9[4:0]: chuyển đổi thứ 9 theo trình tự thông thường

Bit 9:5 SQ8[4:0]: chuyển đổi thứ 8 theo trình tự thông thường

Bit 4:0 SQ7[4:0]: Chuyển đổi thứ 7 theo trình tự thông thường

248/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi tương tự sang số (ADC)

11.12.11 Thanh ghi trình tự thường xuyên ADC 3 (ADC_SQR3)

Độ lệch địa chỉ: 0x34

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

SQ6[4:0] SQ5[4:0] SQ4[4:1]


Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

SQ4_0 SQ3[4:0] SQ2[4:0] SQ1[4:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:30 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 29:25 SQ6[4:0]: Chuyển đổi thứ 6 theo trình tự thông thường

Các bit này được ghi bằng phần mềm với số kênh (0..17) được gán là bit thứ 6 trong chuỗi được chuyển đổi.

Bit 24:20 SQ5[4:0]: Chuyển đổi thứ 5 theo trình tự thông thường

Bit 19:15 SQ4[4:0]: chuyển đổi thứ tư theo trình tự thông thường

Bit 14:10 SQ3[4:0]: chuyển đổi thứ ba theo trình tự thông thường

Bit 9:5 SQ2[4:0]: chuyển đổi thứ hai theo trình tự thông thường

Bit 4:0 SQ1[4:0]: chuyển đổi đầu tiên theo trình tự thông thường

RM0008 Phiên bản 21 249/1136

253
Machine Translated by Google

Bộ chuyển đổi tương tự sang số (ADC) RM0008

11.12.12 Thanh ghi trình tự được đưa vào ADC (ADC_JSQR)

Độ lệch địa chỉ: 0x38

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

JL[1:0] JSQ4[4:1]
Kín đáo
rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

JSQ4_0 JSQ3[4:0] JSQ2[4:0] JSQ1[4:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:22 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 21:20 JL[1:0]: Độ dài chuỗi được đưa vào

Các bit này được viết bằng phần mềm để xác định tổng số chuyển đổi trong chuỗi chuyển đổi kênh được đưa
vào.
00: 1 chuyển đổi

01: 2 chuyển đổi

Chuyển đổi 10: 3

chuyển đổi 11: 4

Bit 19:15 JSQ4[4:0]: chuyển đổi thứ tư trong chuỗi được chèn (khi JL[1:0] = 3)(1)

Các bit này được ghi bằng phần mềm với số kênh (0..17) được gán làm số thứ tư trong chuỗi được chuyển đổi.

Lưu ý: Không giống như chuỗi chuyển đổi thông thường, nếu độ dài JL[1:0] nhỏ hơn 4 thì các kênh sẽ được
chuyển đổi theo chuỗi bắt đầu từ (4-JL). Ví dụ: ADC_JSQR[21:0] = 10 00011 00011 00111 00010 có
nghĩa là chuyển đổi quét sẽ chuyển đổi chuỗi kênh sau: 7, 3, 3. (không phải 2, 7, 3)

Bit 14:10 JSQ3[4:0]: chuyển đổi thứ ba trong chuỗi được chèn (khi JL[1:0] = 3)

Bit 9:5 JSQ2[4:0]: chuyển đổi thứ hai trong chuỗi được chèn (khi JL[1:0] = 3)

Bit 4:0 JSQ1[4:0]: chuyển đổi đầu tiên trong chuỗi được chèn (khi JL[1:0] = 3)

1. Khi JL=3 ( 4 chuyển đổi được đưa vào trong bộ sắp xếp thứ tự), ADC sẽ chuyển đổi các kênh theo thứ tự sau:
JSQ1[4:0] >> JSQ2[4:0] >> JSQ3[4:0] >> JSQ4[4:0]
Khi JL=2 (3 chuyển đổi được đưa vào trong trình sắp xếp thứ tự), ADC sẽ chuyển đổi các kênh theo thứ tự sau:
JSQ2[4:0] >> JSQ3[4:0] >> JSQ4[4:0]
Khi JL=1 (2 chuyển đổi được đưa vào trong trình sắp xếp thứ tự), ADC sẽ chuyển đổi các kênh theo thứ tự sau:
JSQ3[4:0] >> JSQ4[4:0]
Khi JL=0 (1 chuyển đổi được đưa vào trong trình tuần tự), ADC chỉ chuyển đổi kênh JSQ4[4:0]

250/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi tương tự sang số (ADC)

11.12.13 Thanh ghi dữ liệu được đưa vào ADC x (ADC_JDRx) (x= 1..4)

Độ lệch địa chỉ: 0x3C - 0x48

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

JDATA[15:0]
rrrrrr r r r rrrr

Bit 31:16 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 15:0 JDATA[15:0]: Dữ liệu được đưa vào

Các bit này chỉ được đọc. Chúng chứa kết quả chuyển đổi từ kênh x được chèn. Dữ liệu được căn trái hoặc
phải như trong Hình 27 và Hình 28.

11.12.14 Thanh ghi dữ liệu thường xuyên ADC (ADC_DR)

Độ lệch địa chỉ: 0x4C

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

ADC2DATA[15:0]
rrrrrr r r r rrrr
15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DỮ LIỆU[15:0]

rrrrrr r r r rrrr

Bit 31:16 ADC2DATA[15:0]: Dữ liệu ADC2

Trong ADC1: Ở chế độ kép, các bit này chứa dữ liệu thông thường của ADC2. Tham khảo Phần 11.9: Chế độ ADC
kép.

Trong ADC2 và ADC3: các bit này không được sử dụng.

Bit 15:0 DATA[15:0]: Dữ liệu thông thường

Các bit này chỉ được đọc. Chúng chứa kết quả chuyển đổi từ các kênh thông thường. Dữ liệu được căn trái
hoặc phải như trong Hình 27 và Hình 28.

RM0008 Phiên bản 21 251/1136

253
Machine Translated by Google

Bộ chuyển đổi tương tự sang số (ADC) RM0008

12.15.15 Bản đồ đăng ký ADC

Bảng sau đây tóm tắt các thanh ghi ADC.

Bảng 72. Sơ đồ thanh ghi ADC và giá trị đặt lại

1
5
ố8
s

7
6

0
3
9

2
4
Đăng ký bù đắp

11
ADC_SR
0x00 Kín đáo

COE

DWA
TRTS

COEJ
TRTSJ
Đặt lại giá trị 00000

ĐĨA
DUALMOD
ADC_CR1 NUM AWDCH[4:0]
0x04 Kín đáo [3:0]

TÉUQ

ICOE
[2:0]

OTUAJ

EIDWA
MÁHP
K
NEDWA

COEI
J
NEDWAJ

NECSIDJ

WS
DGA
íđ
K

L

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
o

Đặt lại giá trị

JEXTSE
EXTSEL
ADC_CR2 L
0x08 Kín đáo [2:0] Kín đáo

LAC
AMD

IT

NODA
ẾỤ
ĂC
[2:0]

PC
LACTSR
NH
UV
T
EFERVST

RATSWSJ

S

HNỈ
GIRTTXEJ
YỜ

íđ
K

íđ
K
BẦ

TỆI


TẮU

o
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

ADC_SMPR1 Bit thời gian mẫu SMPx_x


0x0C

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

ADC_SMPR2 Bit thời gian mẫu SMPx_x


0x10

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

ADC_JOFR1 JOFFSET1[11:0]
0x14 Kín đáo

Đặt lại giá trị 000000000000

ADC_JOFR2 JOFFSET2[11:0]
0x18 Kín đáo

Đặt lại giá trị 000000000000

ADC_JOFR3 JOFFSET3[11:0]
0x1C Kín đáo

Đặt lại giá trị 000000000000

ADC_JOFR4 JOFFSET4[11:0]
0x20 Kín đáo

Đặt lại giá trị 000000000000

ADC_HTR HT[11:0]
0x24 Kín đáo

Đặt lại giá trị 000000000000

ADC_LTR LT[11:0]
0x28 Kín đáo

Đặt lại giá trị 000000000000

SQ14[4:0]
Chuyển đổi thứ 16 SQ15[4:0] Chuyển SQ13[4:0] Chuyển
Chuyển
SQ16[4:0] ở các đổi thứ 15 ở đổi thứ 13 ở
ADC_SQR1 L[3:0] đổi thứ 1 trong
0x2C Kín đáo bit các bit các bit
các bit
chuỗi thông thường chuỗi thông thường chuỗi thông thường
chuỗi thông thường

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

252/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi tương tự sang số (ADC)

Bảng 72. Sơ đồ thanh ghi ADC và giá trị đặt lại (tiếp theo)

Đăng ký bù đắp

1
5
ố8
s

7
6

0
3
9

2
4
SQ12[4:0] Chuyển SQ11[4:0] Chuyển SQ10[4:0] Chuyển SQ9[4:0] Chuyển SQ8[4:0] Chuyển SQ7[4:0] Chuyển
đổi thứ 12 ở đổi thứ 11 ở đổi thứ 10 ở đổi thứ 9 ở các đổi thứ 8 ở các đổi thứ 7 ở các
ADC_SQR2
0x30 các bit các bit các bit bit bit bit
chuỗi thông thường chuỗi thông thường chuỗi thông thường chuỗi thông thường chuỗi thông thường chuỗi thông thường
náíđ
K

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


o

SQ6[4:0] Chuyển SQ5[4:0] Chuyển Chuyển đổi thứ Chuyển đổi thứ Chuyển đổi thứ hai Chuyển đổi đầu
đổi thứ 6 ở các đổi thứ 5 ở các tư SQ4[4:0] ở ba SQ3[4:0] ở SQ2[4:0] ở các tiên SQ1[4:0] ở
ADC_SQR3
0x34 bit bit các bit các bit bit các bit
chuỗi thông thường chuỗi thông thường chuỗi thông thường chuỗi thông thường chuỗi thông thường chuỗi thông thường
náíđ
K

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


o

Chuyển đổi
Chuyển đổi Chuyển đổi thứ ba Chuyển đổi đầu
thứ hai
JL[1: thứ tư JSQ4[4:0] JSQ3[4:0] trong tiên JSQ1[4:0]
ADC_JSQR JSQ2[4:0] trong
0x38 Kín đáo 0] trong các các bit trong các
các bit
bit chuỗi được chèn chuỗi được chèn bit chuỗi được chèn
chuỗi được chèn
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

ADC_JDR1 JDATA[15:0]
0x3C Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

ADC_JDR2 JDATA[15:0]
0x40 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

ADC_JDR3 JDATA[15:0]
0x44 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

ADC_JDR4 JDATA[15:0]
0x48 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

ADC_DR ADC2DATA[15:0] DỮ LIỆU thường xuyên[15:0]


0x4C

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Tham khảo Bảng 3 trên trang 50 để biết địa chỉ biên của thanh ghi.

RM0008 Phiên bản 21 253/1136


253
Machine Translated by Google

Bộ chuyển đổi kỹ thuật số sang tương tự (DAC) RM0008

12 Bộ chuyển đổi kỹ thuật số sang tương tự (DAC)

Các thiết bị mật độ thấp là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

Các thiết bị có mật độ trung bình là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 64 đến 128 Kbyte.

Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ
nhớ Flash nằm trong khoảng từ 256 đến 512 Kbyte.

Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ


bộ nhớ Flash nằm trong khoảng từ 768 Kbyte đến 1 Mbyte.

Các thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

Phần này chỉ áp dụng cho đường kết nối, thiết bị STM32F101xx và STM32F103xx mật độ cao và
mật độ XL.

12.1 DAC giới thiệu

Mô-đun DAC là bộ chuyển đổi kỹ thuật số sang tương tự đầu ra điện áp 12 bit. DAC có thể
được cấu hình ở chế độ 8 hoặc 12 bit và có thể được sử dụng cùng với bộ điều khiển DMA. Ở
chế độ 12 bit, dữ liệu có thể được căn trái hoặc phải. DAC có hai kênh đầu ra, mỗi kênh có
bộ chuyển đổi riêng. Ở chế độ kênh DAC kép, việc chuyển đổi có thể được thực
hiện độc lập hoặc đồng thời khi cả hai kênh được nhóm lại với nhau để thực hiện thao tác
cập nhật đồng bộ. Chân tham chiếu đầu vào VREF+ (được chia sẻ với ADC) có sẵn để có độ
phân giải tốt hơn.

12.2 DAC tính năng chính

• Hai bộ chuyển đổi DAC: mỗi bộ có một kênh đầu ra


• Căn chỉnh dữ liệu trái hoặc phải ở chế độ 12 bit

• Khả năng cập nhật đồng bộ • Tạo

sóng nhiễu

• Tạo sóng tam giác

• Chuyển đổi đồng thời hoặc độc lập kênh DAC kép

• Khả năng DMA cho mỗi kênh


• Trình kích hoạt bên ngoài để chuyển đổi

• Điện áp tham chiếu đầu vào VREF+

Sơ đồ khối của kênh DAC được hiển thị trong Hình 40 và mô tả chân được đưa ra trong Bảng 73.

254/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi kỹ thuật số sang tương tự (DAC)

Hình 40. Sơ đồ khối kênh DAC

Thanh ghi điều khiển DAC

TSELx[2:0] bit
SWTRIGx
TIM2_TRGO
DMAENx
TIM4_TRGO
TIM5_TRGO
TIM6_TRGO

nạ
h
t ọo
c ộh
h
í B
c
k
TIM7_TRGO
TIM8_TRGO(1)
EXTI_9

DM Một yêu cầux

Logic điều khiểnx TENx


12-bit
DHRx
bit MAMPx[3:0]
LFSRx tam giácx

WAVENx[1:0] bit

12-bit

DORx

12-bit

VDDA
Kỹ thuật số sang analog
DAC_OUTx
VSSA bộ chuyển đổix

VREF+

ai14708c

1. Trong các thiết bị có đường kết nối, trình kích hoạt TIM8_TRGO được thay thế bằng TIM3_TRGO.

Bảng 73. Chân DAC

Tên Loại tín hiệu Bình luận

Đầu vào, tham chiếu tương Điện áp tham chiếu dương/cao hơn cho DAC,
VREF+
tự dương 2,4 V VREF+ VDDA (3,3 V)

VDDA Đầu vào, nguồn analog Nguồn điện tương tự

VSSA Đầu vào, mặt đất cung cấp analog Mặt đất cho nguồn điện analog

DAC_OUTx Tín hiệu đầu ra tương tự Đầu ra analog kênh DAC

Ghi chú: Khi kênh DACx được bật, chân GPIO tương ứng (PA4 hoặc PA5) sẽ tự động được kết nối với đầu ra
bộ chuyển đổi analog (DAC_OUTx). Để tránh tiêu thụ ký sinh, trước tiên chân PA4 hoặc PA5 phải được
cấu hình thành analog (AIN).

RM0008 Phiên bản 21 255/1136

273
Machine Translated by Google

Bộ chuyển đổi kỹ thuật số sang tương tự (DAC) RM0008

12.3 Mô tả chức năng DAC

Kích hoạt kênh DAC 12.3.1

Mỗi kênh DAC có thể được bật nguồn bằng cách đặt bit ENx tương ứng của nó trong thanh ghi
DAC_CR. Sau đó, kênh DAC sẽ được bật sau thời gian khởi động tWAKEUP.

Ghi chú: Bit ENx chỉ cho phép macrocell DAC Channelx tương tự. Giao diện kỹ thuật số DAC Channelx được
bật ngay cả khi bit ENx được đặt lại.

12.3.2 Kích hoạt bộ đệm đầu ra DAC

DAC tích hợp hai bộ đệm đầu ra có thể được sử dụng để giảm trở kháng đầu ra và điều khiển trực
tiếp các tải bên ngoài mà không cần phải thêm bộ khuếch đại hoạt động bên ngoài.
Mỗi bộ đệm đầu ra kênh DAC có thể được bật và tắt bằng cách sử dụng bit BOFFx tương ứng
trong thanh ghi DAC_CR.

12.3.3 Định dạng dữ liệu DAC

Tùy thuộc vào chế độ cấu hình đã chọn, dữ liệu phải được ghi vào thanh ghi được chỉ định như
mô tả bên dưới:

• Kênh DAC đơn, có ba khả năng:

– Căn lề phải 8 bit: người dùng phải tải dữ liệu vào các bit DAC_DHR8Rx [7:0] (được lưu
vào các bit DHRx[11:4])

– Căn trái 12 bit: người dùng phải tải dữ liệu vào các bit DAC_DHR12Lx [15:4] (được lưu
vào các bit DHRx[11:0])

– Căn phải 12 bit: người dùng phải tải dữ liệu vào các bit DAC_DHR12Rx [11:0] (được lưu
vào các bit DHRx[11:0])

Tùy thuộc vào thanh ghi DAC_DHRyyyx được tải, dữ liệu do người dùng ghi sẽ được dịch chuyển và
lưu trữ vào DHRx (Thanh ghi giữ dữ liệux, là các thanh ghi không được ánh xạ bộ nhớ bên
trong). Sau đó, thanh ghi DHRx sẽ được tải vào thanh ghi DORx một cách tự động bằng
trình kích hoạt phần mềm hoặc bằng trình kích hoạt sự kiện bên ngoài.

256/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi kỹ thuật số sang tương tự (DAC)

Hình 41. Thanh ghi dữ liệu ở chế độ kênh DAC đơn

31 24 15 7 0

Căn phải 8 bit

Căn trái 12 bit

Căn phải 12 bit

ai14710

• Kênh DAC kép, có ba khả năng:

– Căn chỉnh phải 8 bit: tải dữ liệu cho kênh DAC1 vào DAC_DHR8RD [7:0] (được lưu vào các bit
DHR1[11:4]) và tải dữ liệu cho kênh DAC2 vào
Các bit DAC_DHR8RD [15:8] (được lưu vào các bit DHR2[11:4])

– Căn lề trái 12 bit: tải dữ liệu cho DAC kênh1 vào các bit DAC_DHR12LD [15:4] (được lưu
vào các bit DHR1[11:0]) và dữ liệu cho kênh DAC2 được tải vào các bit DAC_DHR12LD
[31:20] ( được lưu trữ vào các bit DHR2[11:0]) – Căn chỉnh phải

12 bit: dữ liệu cho kênh DAC1 được tải vào các bit DAC_DHR12RD [11:0] (được lưu vào các
bit DHR1[11:0]) và dữ liệu cho kênh DAC2 được lưu trữ vào được tải vào các bit
DAC_DHR12RD [27:16] (được lưu vào các bit DHR2[11:0])

Tùy thuộc vào thanh ghi DAC_DHRyyyD được tải, dữ liệu do người dùng ghi sẽ được dịch chuyển
và lưu trữ vào DHR1 và DHR2 (Thanh ghi giữ dữ liệu, là các thanh ghi nội bộ không được ánh xạ
bộ nhớ). Sau đó, các thanh ghi DHR1 và DHR2 sẽ được tải vào các thanh ghi DOR1 và DOR2 tương
ứng một cách tự động bằng trình kích hoạt phần mềm hoặc bằng trình kích hoạt sự kiện bên ngoài.

Hình 42. Thanh ghi dữ liệu ở chế độ kênh DAC kép

31 24 15 7 0

Căn phải 8 bit

Căn trái 12 bit

Căn phải 12 bit

ai14709

12.3.4 Chuyển đổi DAC

DAC_DORx không thể được ghi trực tiếp và mọi hoạt động truyền dữ liệu tới kênh DACx phải được
thực hiện bằng cách tải thanh ghi DAC_DHRx (ghi trên DAC_DHR8Rx, DAC_DHR12Lx, DAC_DHR12Rx,
DAC_DHR8RD, DAC_DHR12LD hoặc DAC_DHR12LD).

Dữ liệu được lưu trong thanh ghi DAC_DHRx sẽ tự động được chuyển sang thanh ghi DAC_DORx sau một
chu kỳ xung nhịp APB1, nếu không có bộ kích hoạt phần cứng nào được chọn (bit TENx trong thanh ghi
DAC_CR được đặt lại). Tuy nhiên, khi kích hoạt phần cứng được chọn (bit TENx trong thanh ghi
DAC_CR được đặt) và kích hoạt xảy ra, quá trình truyền được thực hiện ba chu kỳ xung nhịp APB1 sau đó.

Khi DAC_DORx được tải với nội dung DAC_DHRx, điện áp đầu ra analog sẽ khả dụng sau một thời
gian tSETTLING phụ thuộc vào điện áp nguồn điện và tải đầu ra analog.

RM0008 Phiên bản 21 257/1136

273
Machine Translated by Google

Bộ chuyển đổi kỹ thuật số sang tương tự (DAC) RM0008

Hình 43. Sơ đồ thời gian chuyển đổi khi vô hiệu trigger TEN = 0

APB1_CLK

DHR 0x1AC

Điện áp đầu ra
DOR 0x1AC
có sẵn trên chân DAC_OUT
t
THIẾT LẬP

ai14711b

12.3.5 Điện áp đầu ra DAC

Đầu vào kỹ thuật số được chuyển đổi thành điện áp đầu ra bằng chuyển đổi tuyến tính giữa 0 và VREF+.

Điện áp đầu ra analog trên mỗi chân kênh DAC được xác định theo phương trình

= DOR
-------------
DACđầu ra VREF 4096

12.3.6 Lựa chọn kích hoạt DAC

Nếu bit điều khiển TENx được đặt, thì quá trình chuyển đổi có thể được kích hoạt bởi một sự kiện bên ngoài
(bộ đếm thời gian, đường ngắt bên ngoài). Các bit điều khiển TSELx[2:0] xác định sự kiện nào trong số 8 sự
kiện có thể xảy ra sẽ kích hoạt chuyển đổi, như được hiển thị trong Bảng 74.

Bảng 74. Kích hoạt bên ngoài


Nguồn Kiểu TSEL[2:0]

Sự kiện hẹn giờ 6 TRGO 000

Sự kiện TRGO của bộ định thời 3 trong các thiết bị

có đường kết nối hoặc


001
Bộ hẹn giờ 8 TRGO ở mật độ cao và
Thiết bị mật độ XL
Tín hiệu bên trong từ bộ định thời trên chip
Sự kiện hẹn giờ 7 TRGO 010

Sự kiện hẹn giờ 5 TRGO 011

Sự kiện hẹn giờ 2 TRGO 100

Sự kiện hẹn giờ 4 TRGO 101

dòng EXTI9 Pin ngoài 110

SWTRIG Bit điều khiển phần mềm 111

Mỗi khi giao diện DAC phát hiện cạnh tăng trên đầu ra TRGO của bộ hẹn giờ đã chọn hoặc trên
dòng ngắt ngoài 9 đã chọn, dữ liệu cuối cùng được lưu trong thanh ghi DAC_DHRx sẽ được
chuyển vào thanh ghi DAC_DORx. Thanh ghi DAC_DORx được cập nhật ba chu kỳ APB1 sau khi xảy
ra kích hoạt.

258/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi kỹ thuật số sang tương tự (DAC)

Nếu kích hoạt phần mềm được chọn, quá trình chuyển đổi sẽ bắt đầu sau khi bit SWTRIG được đặt.
SWTRIG được thiết lập lại bằng phần cứng sau khi thanh ghi DAC_DORx được tải với nội dung thanh
ghi DAC_DHRx.

Ghi chú: Bit TSELx[2:0] không thể thay đổi khi bit ENx được đặt.

Khi kích hoạt phần mềm được chọn, chỉ mất một chu kỳ xung nhịp APB1 để chuyển đăng ký DAC_DHRx sang
DAC_DORx.

12.3.7 Yêu cầu DMA

Mỗi kênh DAC có khả năng DMA. Hai kênh DMA được sử dụng để phục vụ các yêu cầu DMA của kênh DAC.

Yêu cầu DAC DMA được tạo khi xảy ra kích hoạt bên ngoài (nhưng không phải kích hoạt phần mềm)
trong khi bit DMAENx được đặt. Giá trị của thanh ghi DAC_DHRx sau đó được chuyển sang thanh ghi
DAC_DORx.
Ở chế độ kép, nếu cả hai bit DMAENx được đặt thì hai yêu cầu DMA sẽ được tạo. Nếu chỉ cần một yêu
cầu DMA, bạn chỉ nên đặt bit DMAENx tương ứng. Bằng cách này, ứng dụng có thể quản lý cả hai kênh DAC
ở chế độ kép bằng cách sử dụng một yêu cầu DMA và một kênh DMA duy nhất.

Yêu cầu DAC DMA không được xếp hàng để nếu bộ kích hoạt bên ngoài thứ hai đến trước khi xác nhận yêu
cầu cuối cùng thì yêu cầu mới sẽ không được phục vụ và không có lỗi nào được báo cáo

12.3.8 Phát sinh tiếng ồn

Để tạo ra giả nhiễu có biên độ thay đổi, có sẵn một thanh ghi Dịch chuyển phản hồi tuyến tính. Việc
tạo tiếng ồn DAC được chọn bằng cách đặt WAVEx[1:0] thành “01”. Giá trị được tải trước trong
LFSR là 0xAAA. Thanh ghi này được cập nhật, ba chu kỳ xung nhịp APB1 sau mỗi sự kiện kích hoạt, tuân
theo một thuật toán tính toán cụ thể.

Hình 44. Thuật toán tính toán thanh ghi DAC LFSR

XOR

X6 X4 X X0

X12
11 10 9 số 8 7 6 5 4 3 2 1 0

12

CŨNG KHÔNG

MS47561V1

Giá trị LFSR, có thể được che giấu một phần hoặc toàn bộ bằng các bit MAMPx[3:0] trong thanh ghi
DAC_CR, được thêm vào nội dung DAC_DHRx mà không bị tràn và giá trị này sau đó được lưu vào thanh
ghi DAC_DORx.

Nếu LFSR là 0x0000, số '1' sẽ được đưa vào đó (cơ chế chống khóa).

Có thể đặt lại việc tạo sóng LFSR bằng cách đặt lại các bit WAVEx[1:0].

RM0008 Phiên bản 21 259/1136

273
Machine Translated by Google

Bộ chuyển đổi kỹ thuật số sang tương tự (DAC) RM0008

Hình 45. Chuyển đổi DAC (bật kích hoạt SW) với việc tạo sóng LFSR

APB1_CLK

DHR 0x00

DOR 0xAAA 0xD55

SWTRIG

ai14714

Ghi chú: Bộ kích hoạt DAC phải được bật để tạo nhiễu bằng cách đặt bit TENx trong thanh ghi DAC_CR.

12.3.9 Sự tạo sóng tam giác


Có thể thêm dạng sóng tam giác có biên độ nhỏ trên tín hiệu DC hoặc tín hiệu thay đổi chậm.
Việc tạo sóng tam giác DAC được chọn bằng cách đặt WAVEx[1:0] thành “10”. Biên độ được cấu
hình thông qua các bit MAMPx[3:0] trong thanh ghi DAC_CR. Bộ đếm tam giác bên trong được tăng
lên ba chu kỳ đồng hồ APB1 sau mỗi sự kiện kích hoạt. Giá trị của bộ đếm này sau đó được thêm
vào thanh ghi DAC_DHRx mà không bị tràn và tổng được lưu vào thanh ghi DAC_DORx. Bộ đếm
tam giác được tăng lên khi nó nhỏ hơn biên độ tối đa được xác định bởi các bit MAMPx[3:0]. Khi
đạt đến biên độ đã định cấu hình, bộ đếm sẽ giảm xuống 0, sau đó tăng lại, v.v.

Có thể thiết lập lại việc tạo sóng tam giác bằng cách đặt lại các bit WAVEx[1:0].

Hình 46. Tạo sóng tam giác DAC

Giảm
dần
biên độ tối đa MAMPx[3:0]
+ Giá trị cơ bản DAC_DHRx
Tăng
dần

Giá trị cơ sở DAC_DHRx

ai14715c

260/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi kỹ thuật số sang tương tự (DAC)

Hình 47. Chuyển đổi DAC (bật SW trigger) với tạo sóng tam giác

APB1_CLK

DHR 0xABE

DOR 0xABE 0xABF 0xAC0

SWTRIG

ai14714

Ghi chú: Bộ kích hoạt DAC phải được bật để tạo nhiễu bằng cách đặt bit TENx trong thanh ghi DAC_CR.

Các bit MAMPx[3:0] phải được cấu hình trước khi bật DAC, nếu không thì chúng không thể thay
đổi được.

12,4 Chuyển đổi kênh DAC kép

Để sử dụng hiệu quả băng thông bus trong các ứng dụng yêu cầu hai kênh DAC cùng lúc, ba thanh ghi
kép được triển khai: DHR8RD, DHR12RD và DHR12LD. Sau đó, cần có quyền truy cập đăng ký duy nhất
để điều khiển cả hai kênh DAC cùng một lúc.

Có thể sử dụng mười một chế độ chuyển đổi bằng cách sử dụng hai kênh DAC và các thanh ghi kép này.
Tuy nhiên, tất cả các chế độ chuyển đổi có thể được lấy bằng cách sử dụng các thanh ghi DHRx
riêng biệt nếu cần.

Tất cả các chế độ được mô tả trong các đoạn dưới đây.

12.4.1 Kích hoạt độc lập không tạo sóng

Để định cấu hình DAC ở chế độ chuyển đổi này, cần có trình tự sau:

• Đặt hai bit kích hoạt kích hoạt kênh DAC TEN1 và TEN2

• Định cấu hình các nguồn kích hoạt khác nhau bằng cách đặt các giá trị khác nhau trong TSEL1[2:0] và
TSEL2[2:0] bit

• Tải dữ liệu kênh DAC kép vào thanh ghi DHR mong muốn (DAC_DHR12RD,
DAC_DHR12LD hoặc DAC_DHR8RD)

Khi bộ kích hoạt kênh DAC1 đến, thanh ghi DHR1 được chuyển vào DAC_DOR1 (ba chu kỳ xung nhịp
APB1 sau đó).

Khi bộ kích hoạt kênh DAC2 đến, thanh ghi DHR2 được chuyển vào DAC_DOR2 (ba chu kỳ xung nhịp
APB1 sau đó).

RM0008 Phiên bản 21 261/1136

273
Machine Translated by Google

Bộ chuyển đổi kỹ thuật số sang tương tự (DAC) RM0008

12.4.2 Kích hoạt độc lập với cùng thế hệ LFSR

Để định cấu hình DAC ở chế độ chuyển đổi này, cần có trình tự sau:

• Đặt hai bit kích hoạt kích hoạt kênh DAC TEN1 và TEN2

• Định cấu hình các nguồn kích hoạt khác nhau bằng cách đặt các giá trị khác nhau trong TSEL1[2:0] và
TSEL2[2:0] bit

• Cấu hình hai bit WAVEx[1:0] của kênh DAC là “01” và cùng một mặt nạ LFSR
giá trị trong các bit MAMPx[3:0]

• Tải dữ liệu kênh DAC kép vào thanh ghi DHR mong muốn (DHR12RD, DHR12LD
hoặc DHR8RD)

Khi bộ kích hoạt kênh DAC1 xuất hiện, bộ đếm LFSR1, với cùng mặt nạ, sẽ được thêm vào thanh ghi
DHR1 và tổng được chuyển vào DAC_DOR1 (ba chu kỳ xung nhịp APB1 sau đó). Sau đó bộ đếm LFSR1
được cập nhật.

Khi bộ kích hoạt kênh DAC2 xuất hiện, bộ đếm LFSR2, với cùng mặt nạ, sẽ được thêm vào thanh ghi
DHR2 và tổng được chuyển vào DAC_DOR2 (ba chu kỳ xung nhịp APB1 sau đó). Sau đó bộ đếm LFSR2
được cập nhật.

12.4.3 Kích hoạt độc lập với thế hệ LFSR khác nhau

Để định cấu hình DAC ở chế độ chuyển đổi này, cần có trình tự sau:

• Đặt hai bit kích hoạt kích hoạt kênh DAC TEN1 và TEN2

• Định cấu hình các nguồn kích hoạt khác nhau bằng cách đặt các giá trị khác nhau trong TSEL1[2:0] và
TSEL2[2:0] bit

• Định cấu hình hai bit WAVEx[1:0] của kênh DAC là “01” và đặt các mặt nạ LFSR khác nhau
các giá trị trong các bit MAMP1[3:0] và MAMP2[3:0]

• Tải dữ liệu kênh DAC kép vào thanh ghi DHR mong muốn (DAC_DHR12RD,
DAC_DHR12LD hoặc DAC_DHR8RD)

Khi bộ kích hoạt kênh DAC1 xuất hiện, bộ đếm LFSR1, với mặt nạ được định cấu hình bởi
MAMP1[3:0], sẽ được thêm vào thanh ghi DHR1 và tổng được chuyển vào DAC_DOR1
(ba chu kỳ đồng hồ APB1 sau). Sau đó bộ đếm LFSR1 được cập nhật.

Khi bộ kích hoạt kênh DAC2 xuất hiện, bộ đếm LFSR2, với mặt nạ được định cấu hình bởi
MAMP2[3:0], sẽ được thêm vào thanh ghi DHR2 và tổng được chuyển vào DAC_DOR2 (ba chu kỳ xung
nhịp APB1 sau đó). Sau đó bộ đếm LFSR2 được cập nhật.

12.4.4 Kích hoạt độc lập với cùng một thế hệ tam giác

Để định cấu hình DAC ở chế độ chuyển đổi này, cần có trình tự sau:

• Đặt hai bit kích hoạt kích hoạt kênh DAC TEN1 và TEN2

• Định cấu hình các nguồn kích hoạt khác nhau bằng cách đặt các giá trị khác nhau trong TSEL1[2:0] và
TSEL2[2:0] bit

• Định cấu hình hai bit WAVEx[1:0] của kênh DAC là “1x” và cùng giá trị biên độ tối đa trong
các bit MAMPx[3:0]

• Tải dữ liệu kênh DAC kép vào thanh ghi DHR mong muốn (DAC_DHR12RD,
DAC_DHR12LD hoặc DAC_DHR8RD)

Khi bộ kích hoạt kênh DAC1 xuất hiện, bộ đếm tam giác kênh DAC1, có cùng biên độ tam giác, sẽ
được thêm vào thanh ghi DHR1 và tổng được chuyển vào

262/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi kỹ thuật số sang tương tự (DAC)

DAC_DOR1 (ba chu kỳ xung nhịp APB1 sau). Bộ đếm tam giác DAC kênh1 sau đó được cập nhật.

Khi bộ kích hoạt kênh DAC2 xuất hiện, bộ đếm tam giác kênh DAC2, có cùng biên độ tam giác,
sẽ được thêm vào thanh ghi DHR2 và tổng được chuyển vào DAC_DOR2 (ba chu kỳ xung
nhịp APB1 sau đó). Bộ đếm tam giác DAC kênh2 sau đó được cập nhật.

12.4.5 Kích hoạt độc lập với việc tạo tam giác khác nhau

Để định cấu hình DAC ở chế độ chuyển đổi này, cần có trình tự sau:

• Đặt hai bit kích hoạt kích hoạt kênh DAC TEN1 và TEN2

• Định cấu hình các nguồn kích hoạt khác nhau bằng cách đặt các giá trị khác nhau trong TSEL1[2:0] và
TSEL2[2:0] bit

• Định cấu hình hai bit WAVEx[1:0] của kênh DAC là “1x” và đặt mức tối đa khác nhau
giá trị biên độ trong các bit MAMP1[3:0] và MAMP2[3:0]

• Tải dữ liệu kênh DAC kép vào thanh ghi DHR mong muốn (DAC_DHR12RD,
DAC_DHR12LD hoặc DAC_DHR8RD)

Khi bộ kích hoạt kênh DAC1 xuất hiện, bộ đếm tam giác kênh DAC1, với biên độ tam giác được
định cấu hình bởi MAMP1[3:0], sẽ được thêm vào thanh ghi DHR1 và tổng được chuyển
vào DAC_DOR1 (ba chu kỳ xung nhịp APB1 sau đó). Bộ đếm tam giác DAC kênh1 sau đó được cập
nhật.

Khi bộ kích hoạt kênh DAC2 xuất hiện, bộ đếm tam giác kênh DAC2, với biên độ tam giác được
định cấu hình bởi MAMP2[3:0], sẽ được thêm vào phần thanh ghi DHR2 và tổng được chuyển
vào DAC_DOR2 (ba chu kỳ xung nhịp APB1 sau đó). Bộ đếm tam giác DAC kênh2 sau đó được cập
nhật.

12.4.6 Khởi động phần mềm đồng thời

Để định cấu hình DAC ở chế độ chuyển đổi này, cần có trình tự sau:

• Tải dữ liệu kênh DAC kép vào thanh ghi DHR mong muốn (DAC_DHR12RD,
DAC_DHR12LD hoặc DAC_DHR8RD)

Trong cấu hình này, sau một chu kỳ xung nhịp APB1, các thanh ghi DHR1 và DHR2 lần
lượt được chuyển vào DAC_DOR1 và DAC_DOR2.

12.4.7 Kích hoạt đồng thời không tạo sóng

Để định cấu hình DAC ở chế độ chuyển đổi này, cần có trình tự sau:

• Đặt hai bit kích hoạt kích hoạt kênh DAC TEN1 và TEN2

• Định cấu hình cùng một nguồn kích hoạt cho cả hai kênh DAC bằng cách đặt cùng một giá trị
trong các bit TSEL1[2:0] và TSEL2[2:0]

• Tải dữ liệu kênh DAC kép vào thanh ghi DHR mong muốn (DAC_DHR12RD, DAC_DHR12LD hoặc
DAC_DHR8RD)

Khi có trình kích hoạt đến, các thanh ghi DHR1 và DHR2 lần lượt được chuyển vào DAC_DOR1 và
DAC_DOR2 (sau ba chu kỳ xung nhịp APB1).

RM0008 Phiên bản 21 263/1136

273
Machine Translated by Google

Bộ chuyển đổi kỹ thuật số sang tương tự (DAC) RM0008

12.4.8 Kích hoạt đồng thời với cùng thế hệ LFSR

Để định cấu hình DAC ở chế độ chuyển đổi này, cần có trình tự sau:

• Đặt hai bit kích hoạt kích hoạt kênh DAC TEN1 và TEN2

• Định cấu hình cùng một nguồn kích hoạt cho cả hai kênh DAC bằng cách đặt cùng một giá trị
trong các bit TSEL1[2:0] và TSEL2[2:0]

• Cấu hình hai bit WAVEx[1:0] của kênh DAC là “01” và cùng một mặt nạ LFSR
giá trị trong các bit MAMPx[3:0]

• Tải dữ liệu kênh DAC kép vào thanh ghi DHR mong muốn (DHR12RD, DHR12LD hoặc
DHR8RD)

Khi có trình kích hoạt đến, bộ đếm LFSR1, với cùng mặt nạ, sẽ được thêm vào thanh ghi
DHR1 và tổng được chuyển vào DAC_DOR1 (ba chu kỳ đồng hồ APB1 sau đó). Bộ đếm LFSR1 sau
đó được cập nhật. Đồng thời, bộ đếm LFSR2, với cùng một mặt nạ, được thêm vào thanh ghi DHR2
và tổng được chuyển vào DAC_DOR2 (ba chu kỳ xung nhịp APB1 sau đó). Bộ đếm LFSR2 sau đó
được cập nhật.

12.4.9 Kích hoạt đồng thời với thế hệ LFSR khác nhau

Để định cấu hình DAC ở chế độ chuyển đổi này, cần có trình tự sau:

• Đặt hai bit kích hoạt kích hoạt kênh DAC TEN1 và TEN2

• Định cấu hình cùng một nguồn kích hoạt cho cả hai kênh DAC bằng cách đặt cùng một giá trị
trong các bit TSEL1[2:0] và TSEL2[2:0]

• Định cấu hình hai bit WAVEx[1:0] của kênh DAC là “01” và đặt các mặt nạ LFSR khác nhau
các giá trị sử dụng bit MAMP1[3:0] và MAMP2[3:0]

• Tải dữ liệu kênh DAC kép vào thanh ghi DHR mong muốn (DAC_DHR12RD,
DAC_DHR12LD hoặc DAC_DHR8RD)

Khi có trình kích hoạt đến, bộ đếm LFSR1, với mặt nạ được định cấu hình bởi MAMP1[3:0],
sẽ được thêm vào thanh ghi DHR1 và tổng được chuyển vào DAC_DOR1 (ba chu kỳ xung nhịp APB1
sau đó). Bộ đếm LFSR1 sau đó được cập nhật.
Đồng thời, bộ đếm LFSR2, với mặt nạ được cấu hình bởi MAMP2[3:0], được thêm vào thanh ghi
DHR2 và tổng được chuyển vào DAC_DOR2 (ba chu kỳ xung nhịp APB1 sau đó). Bộ đếm LFSR2 sau
đó được cập nhật.

12.4.10 Kích hoạt đồng thời với cùng một thế hệ tam giác

Để định cấu hình DAC ở chế độ chuyển đổi này, cần có trình tự sau:

• Đặt hai bit kích hoạt kích hoạt kênh DAC TEN1 và TEN2

• Định cấu hình cùng một nguồn kích hoạt cho cả hai kênh DAC bằng cách đặt cùng một giá trị
trong các bit TSEL1[2:0] và TSEL2[2:0]

• Định cấu hình hai bit WAVEx[1:0] của kênh DAC là “1x” và có cùng mức tối đa
giá trị biên độ bằng cách sử dụng các bit MAMPx[3:0]

• Tải dữ liệu kênh DAC kép vào thanh ghi DHR mong muốn (DAC_DHR12RD, DAC_DHR12LD hoặc
DAC_DHR8RD)

Khi có trình kích hoạt đến, bộ đếm tam giác DAC kênh1, có cùng biên độ tam giác, sẽ
được thêm vào thanh ghi DHR1 và tổng được chuyển vào DAC_DOR1 (ba chu kỳ đồng hồ APB1 sau
đó). Bộ đếm tam giác DAC kênh1 sau đó được cập nhật.
Đồng thời, bộ đếm tam giác DAC kênh2, có cùng biên độ tam giác, được

264/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi kỹ thuật số sang tương tự (DAC)

được thêm vào thanh ghi DHR2 và tổng được chuyển vào DAC_DOR2 (ba chu kỳ xung nhịp APB1 sau
đó). Bộ đếm tam giác DAC kênh2 sau đó được cập nhật.

12.4.11 Kích hoạt đồng thời với việc tạo tam giác khác nhau

Để định cấu hình DAC ở chế độ chuyển đổi này, cần có trình tự sau:

• Đặt hai bit kích hoạt kích hoạt kênh DAC TEN1 và TEN2

• Định cấu hình cùng một nguồn kích hoạt cho cả hai kênh DAC bằng cách đặt cùng một giá trị trong
các bit TSEL1[2:0] và TSEL2[2:0]

• Định cấu hình hai bit WAVEx[1:0] của kênh DAC là “1x” và đặt mức tối đa khác nhau
giá trị biên độ trong các bit MAMP1[3:0] và MAMP2[3:0]

• Tải dữ liệu kênh DAC kép vào thanh ghi DHR mong muốn (DAC_DHR12RD,
DAC_DHR12LD hoặc DAC_DHR8RD)

Khi có trình kích hoạt đến, bộ đếm tam giác kênh DAC1, với biên độ tam giác được định
cấu hình bởi MAMP1[3:0], sẽ được thêm vào thanh ghi DHR1 và tổng được chuyển vào DAC_DOR1 (ba
chu kỳ xung nhịp APB1 sau đó). Sau đó, bộ đếm tam giác kênh 1 của DAC được cập nhật.

Đồng thời, bộ đếm tam giác kênh DAC2, với biên độ tam giác được định cấu hình bởi MAMP2[3:0],
được thêm vào thanh ghi DHR2 và tổng được chuyển vào DAC_DOR2 (ba chu kỳ xung nhịp APB1 sau
đó). Sau đó, bộ đếm tam giác DAC kênh2 được cập nhật.

12.5 thanh ghi DAC


Các thanh ghi ngoại vi phải được truy cập bằng từ (32-bit).

12.5.1 Thanh ghi điều khiển DAC (DAC_CR)

Độ lệch địa chỉ: 0x00

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

DMA
MAMP2[3:0] WAVE2[1:0] TSEL2[2:0] TEN2 BOFF2 EN2
Kín đáo EN2

rw rw rw rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DMA
MAMP1[3:0] WAVE1[1:0] TSEL1[2:0] TEN1 BOFF1 EN1
Kín đáo EN1

rw rw rw rw rw rw rw rw rw rw rw rw rw

RM0008 Phiên bản 21 265/1136

273
Machine Translated by Google

Bộ chuyển đổi kỹ thuật số sang tương tự (DAC) RM0008

Bit 31:29 Được bảo lưu.

Bit 28 DMAEN2: Kích hoạt DMA kênh 2 DAC

bit này được thiết lập và xóa bằng phần mềm.


0: Chế độ DAC kênh2 DMA bị tắt
1: Đã bật chế độ DAC kênh2 DMA

Bit 27:24 MAMP2[3:0]: Mặt nạ DAC kênh2/bộ chọn biên độ

Các bit này được phần mềm viết để chọn mặt nạ ở chế độ tạo sóng hoặc biên độ ở chế độ tạo tam giác.

0000: Lộ bit0 của LFSR/biên độ tam giác bằng 1

0001: Lộ mặt nạ bit[1:0] của LFSR/biên độ tam giác bằng 3

0010: Lộ mặt nạ bit[2:0] của LFSR/biên độ tam giác bằng 7

0011: Lộ mặt nạ bit[3:0] của LFSR/biên độ tam giác bằng 15

0100: Lộ mặt nạ bit[4:0] của LFSR/biên độ tam giác bằng 31

0101: Vạch mặt các bit [5:0] của LFSR/biên độ tam giác bằng 63

0110: Lộ mặt nạ bit[6:0] của LFSR/biên độ tam giác bằng 127

0111: Vạch mặt các bit [7:0] của LFSR/biên độ tam giác bằng 255

1000: Lộ mặt các bit [8:0] của LFSR/biên độ tam giác bằng 511

1001: Vạch mặt các bit [9:0] của LFSR/biên độ tam giác bằng 1023

1010: Lộ mặt các bit [10:0] của LFSR/biên độ tam giác bằng 2047

1011: Lộ bit[11:0] của LFSR/biên độ tam giác bằng 4095

Bit 23:22 WAVE2[1:0]: Cho phép tạo nhiễu kênh DAC2/sóng tam giác

Các bit này được thiết lập/đặt lại bằng phần mềm.

00: vô hiệu hóa việc tạo sóng 01:

Đã bật tạo sóng nhiễu 1x: Đã bật tạo sóng

tam giác

Lưu ý: chỉ được sử dụng nếu bit TEN2 = 1 (kích hoạt bộ kích hoạt DAC kênh2)

Bit 21:19 TSEL2[2:0]: Lựa chọn kích hoạt kênh DAC2

Các bit này chọn sự kiện bên ngoài được sử dụng để kích hoạt kênh DAC2
000: Bộ định thời 6 sự kiện TRGO

001: Sự kiện TRGO của bộ định thời 3 trong các thiết bị có đường kết nối, Bộ định thời 8 TRGO ở mật độ cao và

Thiết bị mật độ XL
010: Bộ định thời 7 sự kiện TRGO

011: Bộ định thời 5 sự kiện TRGO

100: Hẹn giờ 2 sự kiện TRGO

101: Sự kiện hẹn giờ 4 TRGO

110: Đường ngoài9

111: Kích hoạt phần mềm

Lưu ý: chỉ được sử dụng nếu bit TEN2 = 1 (kích hoạt bộ kích hoạt DAC kênh2)

Bit 18 TEN2: Kích hoạt kích hoạt DAC kênh 2

Bit này được thiết lập và xóa bằng phần mềm để bật/tắt kích hoạt DAC kênh2 0: Kích hoạt

DAC kênh2 bị vô hiệu hóa và dữ liệu được ghi vào thanh ghi DAC_DHRx được chuyển một chu kỳ xung nhịp
APB1 sau đó sang thanh ghi DAC_DOR2.

1: Kích hoạt DAC kênh2 được kích hoạt và truyền dữ liệu từ thanh ghi DAC_DHRx được truyền ba chu kỳ xung
nhịp APB1 sau đó sang thanh ghi DAC_DOR2.

Lưu ý: Khi chọn kích hoạt phần mềm, chỉ cần một chu kỳ xung nhịp APB1 để DAC_DHRx hoạt động
Chuyển đăng ký DAC_DOR2.

266/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi kỹ thuật số sang tương tự (DAC)

Bit 17 BOFF2: Tắt bộ đệm đầu ra DAC kênh2 Bit này được thiết

lập và xóa bằng phần mềm để bật/tắt bộ đệm đầu ra DAC kênh2.

0: Đã bật bộ đệm đầu ra DAC kênh2 1: Đã tắt

bộ đệm đầu ra DAC kênh2

Bit 16 EN2: Bật DAC kênh 2

Bit này được thiết lập và xóa bằng phần mềm để bật/tắt kênh DAC2.
0: DAC kênh2 bị tắt 1: DAC

kênh2 được bật

Bit 15:13 Được bảo lưu.

Bit 12 DMAEN1: Kích hoạt DMA kênh 1 DAC

bit này được thiết lập và xóa bằng phần mềm.


0: Kênh DAC1 chế độ DMA bị vô hiệu hóa 1:

Kênh DAC1 chế độ DMA được bật

Bit 11:8 MAMP1[3:0]: Bộ chọn biên độ/mặt nạ DAC kênh1

Các bit này được phần mềm viết để chọn mặt nạ ở chế độ tạo sóng hoặc biên độ ở chế độ tạo tam giác.

0000: Lộ mặt bit0 của LFSR/biên độ tam giác bằng 1 0001: Lộ mặt nạ

bit[1:0] của LFSR/biên độ tam giác bằng 3 0010: Lộ mặt nạ bit[2:0] của

LFSR/biên độ tam giác bằng 7 0011: Lộ mặt nạ bit [3:0] của LFSR/biên độ

tam giác bằng 15 0100: Lộ mặt nạ bit[4:0] của LFSR/biên độ tam giác bằng

31 0101: Lộ mặt nạ bit[5:0] của LFSR/biên độ tam giác bằng 63 0110: Lộ mặt

nạ bit[6:0] của LFSR/biên độ tam giác bằng 127 0111: Lộ mặt nạ bit[7:0]

của LFSR/biên độ tam giác bằng 255 1000: Lộ mặt nạ bit[8:0] của LFSR/biên

độ tam giác bằng 511 1001: Lộ mặt nạ bit[9:0] của LFSR/biên độ tam giác

bằng 1023 1010: Lộ mặt nạ bit[10:0] của LFSR/biên độ tam giác bằng 2047

1011: Lộ mặt nạ bit[11:0] của LFSR/biên độ tam giác bằng 4095

Bit 7:6 WAVE1[1:0]: Cho phép tạo nhiễu/sóng tam giác kênh DAC1. Các bit này được thiết

lập/đặt lại bằng phần mềm. 00: vô hiệu hóa

tạo sóng 01: Kích hoạt tạo sóng

nhiễu 1x: Kích hoạt tạo sóng tam giác Lưu

ý: chỉ được sử dụng nếu bit TEN1 = 1 (bật

bộ kích hoạt kênh DAC1)

Bit 5:3 TSEL1[2:0]: Lựa chọn kích hoạt kênh DAC1

Các bit này chọn sự kiện bên ngoài được sử dụng để kích hoạt kênh DAC1
000: Bộ định thời 6 sự kiện TRGO

001: Sự kiện TRGO của bộ định thời 3 trong các thiết bị có đường kết nối, Bộ định thời 8 TRGO ở mật độ cao và

Thiết bị mật độ XL
010: Bộ định thời 7 sự kiện TRGO

011: Bộ định thời 5 sự kiện TRGO

100: Hẹn giờ 2 sự kiện TRGO

101: Sự kiện hẹn giờ 4 TRGO

110: Đường ngoài9

111: Kích hoạt phần mềm

Lưu ý: chỉ được sử dụng nếu bit TEN1 = 1 (kích hoạt bộ kích hoạt DAC kênh1)

RM0008 Phiên bản 21 267/1136

273
Machine Translated by Google

Bộ chuyển đổi kỹ thuật số sang tương tự (DAC) RM0008

Bit 2 TEN1: Kích hoạt kích hoạt DAC kênh1

Bit này được thiết lập và xóa bằng phần mềm để bật/tắt bộ kích hoạt DAC kênh1 0: Bộ kích

hoạt DAC kênh1 bị vô hiệu hóa và dữ liệu được ghi vào thanh ghi DAC_DHRx được chuyển một chu kỳ xung
nhịp APB1 sau đó sang thanh ghi DAC_DOR1.

1: Kích hoạt DAC kênh1 được kích hoạt và truyền dữ liệu từ thanh ghi DAC_DHRx được truyền ba chu kỳ xung
nhịp APB1 sau đó sang thanh ghi DAC_DOR1.

Lưu ý: Khi chọn kích hoạt phần mềm, chỉ cần một chu kỳ xung nhịp APB1 để DAC_DHRx hoạt động
Chuyển đăng ký DAC_DOR1.

Bit 1 BOFF1: Tắt bộ đệm đầu ra DAC kênh1

Bit này được thiết lập và xóa bằng phần mềm để bật/tắt bộ đệm đầu ra DAC kênh1.

0: Đã bật bộ đệm đầu ra DAC kênh1

1: Bộ đệm đầu ra DAC kênh1 bị vô hiệu hóa

Bit 0 EN1: Kích hoạt DAC kênh1

Bit này được thiết lập và xóa bằng phần mềm để bật/tắt kênh DAC1.
0: Đã tắt kênh DAC1 1: Đã bật

kênh DAC1

12.5.2 Thanh ghi kích hoạt phần mềm DAC (DAC_SWTRIGR)

Độ lệch địa chỉ: 0x04

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

SWTRI SWTRI
Kín đáo G2 G1

w w

Bit 31:2 Dành riêng.

Bit 1 SWTRIG2: Phần mềm kích hoạt DAC kênh 2

Bit này được thiết lập và xóa bằng phần mềm để bật/tắt bộ kích hoạt phần mềm.

0: Kích hoạt phần mềm bị vô hiệu hóa

1: Kích hoạt phần mềm kích hoạt

Lưu ý: Bit này được thiết lập lại bằng phần cứng (một chu kỳ xung nhịp APB1 sau) sau khi DAC_DHR2
giá trị thanh ghi được tải vào thanh ghi DAC_DOR2.

Bit 0 SWTRIG1: Phần mềm kích hoạt DAC kênh1

Bit này được thiết lập và xóa bằng phần mềm để bật/tắt bộ kích hoạt phần mềm.

0: Kích hoạt phần mềm bị vô hiệu hóa

1: Kích hoạt phần mềm kích hoạt

Lưu ý: Bit này được thiết lập lại bằng phần cứng (một chu kỳ xung nhịp APB1 sau) sau khi DAC_DHR1
giá trị thanh ghi được tải vào thanh ghi DAC_DOR1.

268/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi kỹ thuật số sang tương tự (DAC)

12.5.3 DAC kênh1 Thanh ghi giữ dữ liệu căn phải 12-bit
(DAC_DHR12R1)
Độ lệch địa chỉ: 0x08

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DACC1DHR[11:0]
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:12 Được bảo lưu.

Bit 11:0 DACC1DHR[11:0]: DAC kênh1 Dữ liệu căn phải 12 bit Các bit này được ghi

bằng phần mềm chỉ định dữ liệu 12 bit cho kênh DAC1.

12.5.4 DAC kênh1 Thanh ghi giữ dữ liệu căn trái 12-bit
(DAC_DHR12L1)
Độ lệch địa chỉ: 0x0C

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DACC1DHR[11:0]
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:16 Được bảo lưu.

Bit 15:4 DACC1DHR[11:0]: DAC kênh1 Dữ liệu căn trái 12 bit Các bit này được

ghi bằng phần mềm chỉ định dữ liệu 12 bit cho kênh DAC1.

Bit 3:0 Dự trữ.

12.5.5 DAC kênh1 Thanh ghi giữ dữ liệu căn phải 8 bit
(DAC_DHR8R1)
Độ lệch địa chỉ: 0x10

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DACC1DHR[7:0]
Kín đáo
rw rw rw rw rw rw rw rw

Bit 31:8 Dành riêng.

Bits 7:0 DACC1DHR[7:0]: DAC kênh1 Dữ liệu căn phải 8 bit Các bit này được

ghi bằng phần mềm chỉ định dữ liệu 8 bit cho kênh DAC1.

RM0008 Phiên bản 21 269/1136

273
Machine Translated by Google

Bộ chuyển đổi kỹ thuật số sang tương tự (DAC) RM0008

12.5.6 DAC kênh2 Thanh ghi giữ dữ liệu căn phải 12-bit
(DAC_DHR12R2)
Độ lệch địa chỉ: 0x14

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DACC2DHR[11:0]
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:12 Được bảo lưu.

Bits 11:0 DACC2DHR[11:0]: DAC kênh2 Dữ liệu căn phải 12 bit Các bit này được ghi

bằng phần mềm chỉ định dữ liệu 12 bit cho kênh DAC2.

12.5.7 DAC kênh2 Thanh ghi giữ dữ liệu căn trái 12-bit
(DAC_DHR12L2)
Độ lệch địa chỉ: 0x18

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DACC2DHR[11:0]
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:16 Được bảo lưu.

Bit 15:4 DACC2DHR[11:0]: DAC kênh2 Dữ liệu căn trái 12 bit Các bit này được ghi

bằng phần mềm chỉ định dữ liệu 12 bit cho kênh DAC2.

Bit 3:0 Dự trữ.

12.5.8 DAC kênh2 Thanh ghi giữ dữ liệu căn phải 8 bit
(DAC_DHR8R2)
Độ lệch địa chỉ: 0x1C

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DACC2DHR[7:0]
Kín đáo
rw rw rw rw rw rw rw rw

Bit 31:8 Dành riêng.

Bits 7:0 DACC2DHR[7:0]: DAC kênh2 Dữ liệu căn phải 8 bit Các bit này được

ghi bằng phần mềm chỉ định dữ liệu 8 bit cho kênh DAC2.

270/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi kỹ thuật số sang tương tự (DAC)

12.5.9 Thanh ghi giữ dữ liệu căn phải 12 bit DAC kép
(DAC_DHR12RD)
Độ lệch địa chỉ: 0x20

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

DACC2DHR[11:0]
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DACC1DHR[11:0]
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:28 Được bảo lưu.

Bits 27:16 DACC2DHR[11:0]: DAC kênh2 Dữ liệu căn phải 12 bit Các bit này được ghi

bằng phần mềm chỉ định dữ liệu 12 bit cho kênh DAC2.

Bit 15:12 Được bảo lưu.

Bits 11:0 DACC1DHR[11:0]: DAC kênh1 Dữ liệu căn phải 12 bit Các bit này được ghi

bằng phần mềm chỉ định dữ liệu 12 bit cho kênh DAC1.

12.5.10 DUAL DAC 12-bit thanh ghi giữ dữ liệu căn trái
(DAC_DHR12LD)
Độ lệch địa chỉ: 0x24

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

DACC2DHR[11:0]
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DACC1DHR[11:0]
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw

Bits 31:20 DACC2DHR[11:0]: DAC kênh2 Dữ liệu căn trái 12 bit Các bit này được

ghi bằng phần mềm, trong đó chỉ định dữ liệu 12 bit cho kênh DAC2.

Bit 19:16 Được bảo lưu.

Bits 15:4 DACC1DHR[11:0]: DAC kênh1 Dữ liệu căn trái 12 bit Các bit này được

ghi bằng phần mềm, chỉ định dữ liệu 12 bit cho kênh DAC1.

Bit 3:0 Dự trữ.

RM0008 Phiên bản 21 271/1136

273
Machine Translated by Google

Bộ chuyển đổi kỹ thuật số sang tương tự (DAC) RM0008

12.5.11 Thanh ghi giữ dữ liệu căn phải DUAL DAC 8 bit
(DAC_DHR8RD)

Độ lệch địa chỉ: 0x28

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DACC2DHR[7:0] DACC1DHR[7:0]
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:16 Được bảo lưu.

Bits 15:8 DACC2DHR[7:0]: DAC kênh2 Dữ liệu căn phải 8 bit Các bit này được ghi

bằng phần mềm chỉ định dữ liệu 8 bit cho kênh DAC2.

Bits 7:0 DACC1DHR[7:0]: DAC kênh1 Dữ liệu căn phải 8 bit Các bit này được

ghi bằng phần mềm chỉ định dữ liệu 8 bit cho kênh DAC1.

12.5.12 Thanh ghi đầu ra dữ liệu DAC kênh1 (DAC_DOR1)

Độ lệch địa chỉ: 0x2C

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DACC1DOR[11:0]
Kín đáo
rrrrrrrrrrr

Bit 31:12 Được bảo lưu.

Bit 11:0 DACC1DOR[11:0]: Đầu ra dữ liệu DAC kênh1

Các bit này ở dạng chỉ đọc, chúng chứa dữ liệu đầu ra cho kênh DAC1.

12.5.13 Thanh ghi đầu ra dữ liệu DAC kênh2 (DAC_DOR2)

Độ lệch địa chỉ: 0x30

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DACC2DOR[11:0]
Kín đáo
rrrrrrrrrrr

Bit 31:12 Được bảo lưu.

Bit 11:0 DACC2DOR[11:0]: Đầu ra dữ liệu DAC kênh2

Các bit này ở dạng chỉ đọc, chúng chứa dữ liệu đầu ra cho kênh DAC2.

272/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ chuyển đổi kỹ thuật số sang tương tự (DAC)

12.5.14 Sơ đồ đăng ký DAC

Bảng sau đây tóm tắt các thanh ghi DAC.

Bảng 75. Sơ đồ thanh ghi DAC

Đăng ký bù đắp

1
5
ố8
s

7
6

0
3
9

2
4
11
13

12
WAV WAV
TSEL2[2 TSEL1
DAC_CR MAMP2[3:0] E2[2: MAMP1[3:0] E1[2:
0x00 Res. Res.

2NE

1NE
:0] [2:0]

2NET

1NET
0] 0]

2FFOB

1FFOB
2NEAMD

1NEAMD
Đặt lại giá trị 0000000000000 0000000000000

DAC_SWTRIGR
0x04 Kín đáo

2GIRTWS
1GIRTWS
Đặt lại giá trị 0 0
DAC_DHR12R1 DACC1DHR[11:0]
0x08 Kín đáo
Đặt lại giá trị 000000000000
DAC_DHR12L1 DACC1DHR[11:0]
0x0C Kín đáo Kín đáo
Đặt lại giá trị 000000000000
DAC_DHR8R1 DACC1DHR[7:0]
0x10 Kín đáo
Đặt lại giá trị 00000000
DAC_DHR12R2 DACC2DHR[11:0]
0x14 Kín đáo
Đặt lại giá trị 000000000000
DAC_DHR12L2 DACC2DHR[11:0]
0x18 Kín đáo Kín đáo
Đặt lại giá trị 000000000000
DAC_DHR8R2 DACC2DHR[7:0]
0x1C Kín đáo
00000000
DAC_DHR12RD DACC2DHR[11:0] DACC1DHR[11:0]
0x20 Kín đáo Kín đáo
Đặt lại giá trị 000000000000 000000000000
DAC_DHR12LD DACC2DHR[11:0] DACC1DHR[11:0]
0x24 Kín đáo Kín đáo
Đặt lại giá trị 000000000000 000000000000
DAC_DHR8RD DACC2DHR[7:0] DACC1DHR[7:0]
0x28 Kín đáo
Đặt lại giá trị 0000000000000000
DAC_DOR1 DACC1DOR[11:0]
0x2C Kín đáo
Đặt lại giá trị 000000000000
DAC_DOR2 DACC2DOR[11:0]
0x30 Kín đáo
Đặt lại giá trị 000000000000

Ghi chú: Tham khảo Bảng 3 trên trang 50 để biết địa chỉ biên của thanh ghi.

RM0008 Phiên bản 21 273/1136

273
Machine Translated by Google

Bộ điều khiển truy cập bộ nhớ trực tiếp (DMA) RM0008

13 Bộ điều khiển truy cập bộ nhớ trực tiếp (DMA)

Các thiết bị mật độ thấp là bộ vi điều khiển STM32F101xx, STM32F102xx và STM32F103xx


trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

Các thiết bị có mật độ trung bình là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 64 đến 128 Kbyte.

Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ nhớ
Flash nằm trong khoảng từ 256 đến 512 Kbyte.

Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ


nhớ Flash nằm trong khoảng từ 768 Kbyte đến 1 Mbyte.

Các thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

Phần này áp dụng cho toàn bộ họ STM32F10xxx, trừ khi có quy định khác.

13.1 Giới thiệu DMA

Truy cập bộ nhớ trực tiếp (DMA) được sử dụng để cung cấp truyền dữ liệu tốc độ cao giữa các thiết bị
ngoại vi và bộ nhớ cũng như bộ nhớ tới bộ nhớ. Dữ liệu có thể được DMA di chuyển nhanh chóng mà không
cần bất kỳ hành động nào của CPU. Điều này giữ cho tài nguyên CPU miễn phí cho các hoạt động khác.

Hai bộ điều khiển DMA có tổng cộng 12 kênh (7 kênh cho DMA1 và 5 kênh cho DMA2), mỗi kênh
dành riêng cho việc quản lý các yêu cầu truy cập bộ nhớ từ một hoặc nhiều thiết bị ngoại vi. Nó
có một trọng tài để xử lý mức độ ưu tiên giữa các yêu cầu DMA.

Các tính năng chính của 13.2 DMA

• 12 kênh có thể cấu hình độc lập (yêu cầu): 7 cho DMA1 và 5 cho DMA2

• Mỗi kênh trong số 12 kênh được kết nối với các yêu cầu DMA phần cứng chuyên dụng, trình kích hoạt
phần mềm cũng được hỗ trợ trên mỗi kênh. Việc cấu hình này được thực hiện bằng phần mềm.
• Mức độ ưu tiên giữa các yêu cầu từ các kênh của một DMA là có thể lập trình bằng phần mềm (4 cấp
độ bao gồm rất cao, cao, trung bình, thấp) hoặc phần cứng trong trường hợp bằng nhau (yêu
cầu 1 có mức độ ưu tiên cao hơn yêu cầu 2, v.v.)

• Kích thước truyền nguồn và đích độc lập (byte, nửa từ, từ), mô phỏng việc đóng gói và giải
nén. Địa chỉ nguồn/đích phải được căn chỉnh theo kích thước dữ liệu.

• Hỗ trợ quản lý bộ đệm tuần hoàn

• 3 cờ sự kiện (chuyển một nửa DMA, hoàn thành chuyển DMA và lỗi truyền DMA) được OR một cách
logic cùng nhau trong một yêu cầu ngắt đơn cho mỗi kênh

• Chuyển bộ nhớ sang bộ nhớ

• Ngoại vi đến bộ nhớ và bộ nhớ đến ngoại vi và ngoại vi đến ngoại vi


chuyển nhượng

• Truy cập vào các thiết bị ngoại vi Flash, SRAM, APB1, APB2 và AHB dưới dạng nguồn và đích

• Số lượng dữ liệu có thể lập trình được truyền: lên tới 65536

Sơ đồ khối được thể hiện trong Hình 48.

274/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển truy cập bộ nhớ trực tiếp (DMA)

Hình 48. Sơ đồ khối DMA trong các thiết bị đường kết nối

ICode
FLITF Tốc biến

Mã D
Cortex-M3

Hệ thống

SRAM
DMA1 Ch.1 DMA
Đặt lại và điều

Ch.2 khiển đồng hồ (RCC)

ab
ậu

t r
eM
t
x
Ch.7 Cầu 1

Cầu 2 APB1
APB2
trọng tài
AMD

ADC1 ĐẮC SPI3/I2S


Yêu cầu DMA I2C2 SPI2/I2S
USART1
nô lệ AHB I2C1 TIM7
SPI1
UART4 TIM6
TIM1
USART3 TIM5
USART2 TIM4
DMA2 Ch.1
TIM3
Yêu cầu DMA TIM2
Ch.2

Ch.5
AMD

trọng tài

nô lệ AHB

Ethernet MAC

USB OOT FS
ai15811b

RM0008 Phiên bản 21 275/1136

291
Machine Translated by Google

Bộ điều khiển truy cập bộ nhớ trực tiếp (DMA) RM0008

Hình 49. Sơ đồ khối DMA trong các thiết bị có mật độ thấp, trung bình-cao và XL

ICode
FLITF Tốc biến

Mã D

Cortex-M3

Hệ thống

SRAM
DMA1 Ch.1 DMA FSMC

abM
t
x
Ch.2


t ậu
r
e
SDIO

Ch.7 Hệ thống AHB Cầu 2

Cầu 1 APB2
APB1
trọng tài

USART2 TIM2 USART1


Yêu cầu DMA
USART3 TIM3 SPI1
nô lệ AHB UART4 ADC1
TIẾNG 4
SPI/I2S2 TIM5 ADC3
SPI/I2S3 TIM6 TIM1
DMA2 Ch.1 I2C1 TIM7 TIM8
Yêu cầu DMA I2C2
Ch.2

Ch.5

trọng tài Yêu cầu DMA

nô lệ AHB

Đặt lại và điều khiển đồng hồ

(RCC)
ai14801b

1. Bộ điều khiển DMA2 chỉ khả dụng ở các thiết bị có mật độ cao và mật độ XL.

1. Các yêu cầu DMA ADC3, SPI/I2S3, UART4, SDIO, TIM5, TIM6, DAC, TIM7, TIM8 chỉ khả dụng ở mức cao
thiết bị mật độ

13.3 Mô tả chức năng DMA


Bộ điều khiển DMA thực hiện truyền bộ nhớ trực tiếp bằng cách chia sẻ bus hệ thống với lõi
Cortex®-M3. Yêu cầu DMA có thể dừng quyền truy cập của CPU vào bus hệ thống trong một số chu kỳ
bus, khi CPU và DMA đang nhắm mục tiêu đến cùng một đích (bộ nhớ hoặc thiết bị ngoại
vi). Ma trận bus thực hiện lập lịch vòng tròn, do đó đảm bảo ít nhất một nửa băng thông bus hệ
thống (cả tới bộ nhớ và thiết bị ngoại vi) cho CPU.

13.3.1 Giao dịch DMA

Sau một sự kiện, thiết bị ngoại vi sẽ gửi tín hiệu yêu cầu đến Bộ điều khiển DMA. Bộ điều
khiển DMA phục vụ yêu cầu tùy thuộc vào mức độ ưu tiên của kênh. Ngay khi Bộ điều khiển
DMA truy cập vào thiết bị ngoại vi, một Xác nhận sẽ được Bộ điều khiển DMA gửi đến thiết bị
ngoại vi. Thiết bị ngoại vi sẽ giải phóng yêu cầu của nó ngay khi nhận được Xác nhận từ Bộ
điều khiển DMA. Sau khi thiết bị ngoại vi xác nhận lại yêu cầu, Bộ điều khiển DMA sẽ giải
phóng Xác nhận. Nếu có nhiều yêu cầu hơn, thiết bị ngoại vi có thể bắt đầu giao dịch tiếp
theo.

276/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển truy cập bộ nhớ trực tiếp (DMA)

Tóm lại, mỗi lần truyền DMA bao gồm ba hoạt động:

• Việc tải dữ liệu từ thanh ghi dữ liệu ngoại vi hoặc một vị trí trong bộ nhớ được đánh địa chỉ
thông qua thanh ghi địa chỉ bộ nhớ/ngoại vi hiện tại bên trong. Địa chỉ bắt đầu được sử dụng
cho lần truyền đầu tiên là địa chỉ bộ nhớ/ngoại vi cơ sở được lập trình trong thanh
ghi DMA_CPARx hoặc DMA_CMARx

• Việc lưu trữ dữ liệu được tải vào thanh ghi dữ liệu ngoại vi hoặc một vị trí trong bộ nhớ được
đánh địa chỉ thông qua thanh ghi địa chỉ bộ nhớ/ngoại vi hiện tại bên trong. Địa chỉ bắt đầu
được sử dụng cho lần truyền đầu tiên là địa chỉ bộ nhớ/ngoại vi cơ sở được lập trình trong
thanh ghi DMA_CPARx hoặc DMA_CMARx

• Việc giảm dần sau của thanh ghi DMA_CNDTRx, chứa số lượng
những giao dịch vẫn phải được thực hiện.

13.3.2 trọng tài

Trọng tài quản lý các yêu cầu kênh dựa trên mức độ ưu tiên của chúng và khởi chạy các chuỗi
truy cập ngoại vi/bộ nhớ.

Các ưu tiên được quản lý theo hai giai đoạn:

• Phần mềm: mỗi kênh ưu tiên có thể được cấu hình trong thanh ghi DMA_CCRx. Ở đó
có bốn cấp độ:

– Ưu tiên rất cao

- Ưu tiên cao

- Ưu tiên trung bình

- Ưu tiên thấp

• Phần cứng: nếu 2 yêu cầu có cùng mức độ ưu tiên phần mềm thì kênh có số ưu tiên thấp nhất sẽ
được ưu tiên so với kênh có số ưu tiên cao nhất. Ví dụ: kênh 2 được ưu tiên hơn
kênh 4.

Ghi chú: Trong các thiết bị đường truyền có mật độ cao, mật độ XL và kết nối, bộ điều khiển DMA1 được ưu
tiên hơn bộ điều khiển DMA2.

13.3.3 kênh DMA

Mỗi kênh có thể xử lý việc truyền DMA giữa một thanh ghi ngoại vi đặt tại một địa chỉ cố định
và một địa chỉ bộ nhớ. Lượng dữ liệu được truyền (lên tới 65535) có thể lập trình được. Thanh
ghi chứa số lượng mục dữ liệu được chuyển sẽ giảm dần sau mỗi giao dịch.

Kích thước dữ liệu có thể lập trình

Kích thước dữ liệu truyền của thiết bị ngoại vi và bộ nhớ hoàn toàn có thể lập trình được
thông qua các bit PSIZE và MSIZE trong thanh ghi DMA_CCRx.

Tăng con trỏ

Các con trỏ ngoại vi và bộ nhớ có thể được tự động tăng sau mỗi giao dịch tùy thuộc vào các bit
PINC và MINC trong thanh ghi DMA_CCRx. Nếu chế độ tăng dần được bật, địa chỉ của lần truyền
tiếp theo sẽ là địa chỉ của lần truyền trước đó được tăng thêm 1, 2 hoặc 4 tùy thuộc vào kích
thước dữ liệu đã chọn. Địa chỉ truyền đầu tiên là địa chỉ được lập trình trong thanh ghi DMA_CPARx/
DMA_CMARx. Trong quá trình truyền, các thanh ghi này giữ giá trị được lập trình ban đầu.
Hiện tại

RM0008 Phiên bản 21 277/1136

291
Machine Translated by Google

Bộ điều khiển truy cập bộ nhớ trực tiếp (DMA) RM0008

địa chỉ truyền (trong thanh ghi địa chỉ bộ nhớ/ngoại vi bên trong hiện tại) không thể truy cập
được bằng phần mềm.

Nếu kênh được định cấu hình ở chế độ không tuần hoàn thì không có yêu cầu DMA nào được cung cấp
sau lần truyền cuối cùng (tức là khi số lượng mục dữ liệu được truyền đã đạt đến 0). Để tải lại một
số mục dữ liệu mới được chuyển vào thanh ghi DMA_CNDTRx, kênh DMA phải bị tắt.

Ghi chú: Nếu kênh DMA bị tắt, các thanh ghi DMA sẽ không được đặt lại. Các thanh ghi kênh DMA (DMA_CCRx,
DMA_CPARx và DMA_CMARx) giữ lại các giá trị ban đầu được lập trình trong giai đoạn cấu hình kênh.

Ở chế độ vòng tròn, sau lần truyền cuối cùng, thanh ghi DMA_CNDTRx sẽ tự động được tải lại với giá
trị được lập trình ban đầu. Các thanh ghi địa chỉ nội bộ hiện tại được tải lại với các giá trị địa
chỉ cơ sở từ các thanh ghi DMA_CPARx/DMA_CMARx.

Thủ tục cấu hình kênh

Phải tuân theo trình tự sau để định cấu hình kênh DMAx (trong đó x là số kênh).

1. Đặt địa chỉ thanh ghi ngoại vi trong thanh ghi DMA_CPARx. Dữ liệu sẽ được di chuyển từ/đến
địa chỉ này đến/từ bộ nhớ sau sự kiện ngoại vi.

2. Đặt địa chỉ bộ nhớ trong thanh ghi DMA_CMARx. Dữ liệu sẽ được ghi vào hoặc
đọc từ bộ nhớ này sau sự kiện ngoại vi.

3. Cấu hình tổng số dữ liệu được truyền trong thanh ghi DMA_CNDTRx.
Sau mỗi sự kiện ngoại vi, giá trị này sẽ giảm đi.

4. Định cấu hình mức độ ưu tiên của kênh bằng cách sử dụng các bit PL[1:0] trong thanh ghi DMA_CCRx

5. Cấu hình hướng truyền dữ liệu, chế độ vòng tròn, thiết bị ngoại vi & bộ nhớ tăng dần
chế độ, kích thước dữ liệu ngoại vi và bộ nhớ và ngắt sau khi truyền một nửa và/hoặc toàn bộ
trong thanh ghi DMA_CCRx

6. Kích hoạt kênh bằng cách đặt bit ENABLE trong thanh ghi DMA_CCRx.

Ngay sau khi kênh được bật, kênh có thể phục vụ bất kỳ yêu cầu DMA nào từ thiết bị ngoại vi
được kết nối trên kênh.

Khi một nửa số byte được truyền, cờ chuyển nửa nửa (HTIF) được đặt và ngắt được tạo ra nếu bit Cho
phép ngắt nửa chuyển giao (HTIE) được đặt. Khi kết thúc quá trình truyền, Cờ hoàn thành truyền
(TCIF) được đặt và ngắt được tạo ra nếu bit Cho phép ngắt hoàn thành truyền (TCIE) được đặt.

Chế độ tròn

Chế độ tuần hoàn có sẵn để xử lý bộ đệm tròn và luồng dữ liệu liên tục (ví dụ: chế độ quét ADC).
Tính năng này có thể được kích hoạt bằng cách sử dụng bit CIRC trong thanh ghi DMA_CCRx.
Khi chế độ vòng tròn được kích hoạt, số lượng dữ liệu cần truyền sẽ tự động được tải lại với
giá trị ban đầu được lập trình trong giai đoạn cấu hình kênh và các yêu cầu DMA tiếp tục được cung
cấp.

Chế độ bộ nhớ-bộ nhớ

Các kênh DMA cũng có thể hoạt động mà không bị kích hoạt bởi yêu cầu từ thiết bị ngoại vi.
Chế độ này được gọi là chế độ Memory to Memory.

Nếu bit MEM2MEM trong thanh ghi DMA_CCRx được đặt thì kênh sẽ bắt đầu truyền ngay khi được phần
mềm kích hoạt bằng cách đặt bit Bật (EN) trong DMA_CCRx

278/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển truy cập bộ nhớ trực tiếp (DMA)

đăng ký. Quá trình truyền dừng lại khi thanh ghi DMA_CNDTRx đạt đến 0. Chế độ Bộ nhớ đến
Bộ nhớ có thể không được sử dụng cùng lúc với chế độ Thông tư.

13.3.4 Độ rộng dữ liệu có thể lập trình, căn chỉnh dữ liệu và phần cuối

Khi PSIZE và MSIZE không bằng nhau, DMA sẽ thực hiện một số sắp xếp dữ liệu như được mô
tả trong Bảng 76.

Bảng 76. Độ rộng dữ liệu có thể lập trình và hành vi endian (khi bit PINC = MINC = 1)

Số lượng
Chiều
Chiều mục dữ Nội dung
rộng cảng Nội dung nguồn: địa
rộng liệu cần Hoạt động chuyển nhượng đích: địa
quốc chỉ/dữ liệu
cổng nguồn chuyển chỉ/dữ liệu
gia Desti
(NDT)

@0x0 / B0 1: ĐỌC B0[7:0] @0x0 rồi VIẾT B0[7:0] @0x0 @0x0 / B0


@0x1 / B1 2: ĐỌC B1[7:0] @0x1 rồi VIẾT B1[7:0] @0x1 @0x1 / B1
88 4
@0x2 / B2 3: ĐỌC B2[7:0] @0x2 rồi VIẾT B2[7:0] @0x2 @0x2 / B2
@0x3 / B3 4: ĐỌC B3[7:0] @0x3 rồi VIẾT B3[7:0] @0x3 @0x3 / B3

@0x0 / B0 1: ĐỌC B0[7:0] @0x0 rồi VIẾT 00B0[15:0] @0x0 @0x0 / 00B0
@0x1 / B1 2: ĐỌC B1[7:0] @0x1 rồi VIẾT 00B1[15:0] @0x2 @0x2 / 00B1
số 8 16 4
@0x2 / B2 3: ĐỌC B3[7:0] @0x2 rồi VIẾT 00B2[15:0] @0x4 @0x4 / 00B2
@0x3 / B3 4: ĐỌC B4[7:0] @0x3 rồi VIẾT 00B3[15:0] @0x6 @0x6 / 00B3

@0x0 / B0 1: ĐỌC B0[7:0] @0x0 rồi VIẾT 000000B0[31:0] @0x0 @0x0 / 000000B0
@0x1 / B1 2: ĐỌC B1[7:0] @0x1 rồi VIẾT 000000B1[31:0] @0x4 @0x4 / 000000B1
số 8 32 4
@0x2 / B2 3: ĐỌC B3[7:0] @0x2 rồi VIẾT 000000B2[31:0] @0x8 @0x8 / 000000B2
@0x3 / B3 4: ĐỌC B4[7:0] @0x3 rồi VIẾT 000000B3[31:0] @0xC @0xC / 000000B3

@0x0 / B1B0 1: ĐỌC B1B0[15:0] @0x0 rồi VIẾT B0[7:0] @0x0 @0x0 / B0
@0x2 / B3B2 2: ĐỌC B3B2[15:0] @0x2 rồi VIẾT B2[7:0] @0x1 @0x1 / B2
16 số 8 4
@0x4 / B5B4 3: ĐỌC B5B4[15:0] @0x4 rồi VIẾT B4[7:0] @0x2 @0x2 / B4
@0x6 / B7B6 4: ĐỌC B7B6[15:0] @0x6 rồi VIẾT B6[7:0] @0x3 @0x3 / B6

@0x0 / B1B0 1: ĐỌC B1B0[15:0] @0x0 rồi VIẾT B1B0[15:0] @0x0 @0x0 / B1B0
@0x2 / B3B2 2: ĐỌC B3B2[15:0] @0x2 rồi VIẾT B3B2[15:0] @0x2 @0x2 / B3B2
16 16 4
@0x4 / B5B4 3: ĐỌC B5B4[15:0] @0x4 rồi VIẾT B5B4[15:0] @0x4 @0x4 / B5B4
@0x6 / B7B6 4: ĐỌC B7B6[15:0] @0x6 rồi VIẾT B7B6[15:0] @0x6 @0x6 / B7B6

@0x0 / B1B0 1: ĐỌC B1B0[15:0] @0x0 rồi VIẾT 0000B1B0[31:0] @0x0 @0x0 / 0000B1B0
@0x2 / B3B2 2: ĐỌC B3B2[15:0] @0x2 rồi VIẾT 0000B3B2[31:0] @0x4 @0x4 / 0000B3B2
16 32 4
@0x4 / B5B4 3: ĐỌC B5B4[15:0] @0x4 rồi VIẾT 0000B5B4[31:0] @0x8 @0x8 / 0000B5B4
@0x6 / B7B6 4: ĐỌC B7B6[15:0] @0x6 rồi VIẾT 0000B7B6[31:0] @0xC @0xC / 0000B7B6

@0x0 / B3B2B1B0 1: ĐỌC B3B2B1B0[31:0] @0x0 rồi VIẾT B0[7:0] @0x0 @0x0 / B0
@0x4 / B7B6B5B4 2: ĐỌC B7B6B5B4[31:0] @0x4 rồi VIẾT B4[7:0] @0x1 @0x1 / B4
32 số 8 4
@0x8 / BBBAB9B8 3: ĐỌC BBBAB9B8[31:0] @0x8 rồi VIẾT B8[7:0] @0x2 @0x2 / B8
@0xC / BFBEBDBC 4: ĐỌC BFBEBDBC[31:0] @0xC rồi VIẾT BC[7:0] @0x3 @0x3 / BC

@0x0 / B3B2B1B0 1: ĐỌC B3B2B1B0[31:0] @0x0 rồi VIẾT B1B0[7:0] @0x0 @0x0 / B1B0
@0x4 / B7B6B5B4 2: ĐỌC B7B6B5B4[31:0] @0x4 rồi VIẾT B5B4[7:0] @0x1 @0x2 / B5B4
32 16 4
@0x8 / BBBAB9B8 3: ĐỌC BBBAB9B8[31:0] @0x8 rồi VIẾT B9B8[7:0] @0x2 @0x4 / B9B8
@0xC / BFBEBDBC 4: ĐỌC BFBEBDBC[31:0] @0xC sau đó VIẾT BDBC[7:0] @0x3 @0x6 / BDBC

@0x0 / B3B2B1B0 1: ĐỌC B3B2B1B0[31:0] @0x0 rồi VIẾT B3B2B1B0[31:0] @0x0 @0x0 / B3B2B1B0
@0x4 / B7B6B5B4 2: ĐỌC B7B6B5B4[31:0] @0x4 rồi VIẾT B7B6B5B4[31:0] @0x4 @0x4 / B7B6B5B4
32 32 4
@0x8 / BBBAB9B8 3: ĐỌC BBBAB9B8[31:0] @0x8 rồi VIẾT BBBAB9B8[31:0] @0x8 @0x8 / BBBAB9B8
@0xC / BFBEBDBC 4: ĐỌC BFBEBDBC[31:0] @0xC sau đó VIẾT BFBEBDBC[31:0] @0xC @0xC / BFBEBDBC

Đánh địa chỉ thiết bị ngoại vi AHB không hỗ trợ hoạt động ghi byte hoặc nửa từ

Khi DMA bắt đầu hoạt động ghi byte hoặc nửa từ AHB, dữ liệu sẽ được sao chép trên các làn chưa
sử dụng của bus HWDATA[31:0]. Vì vậy, khi thiết bị ngoại vi nô lệ AHB được sử dụng không hỗ
trợ hoạt động ghi byte hoặc nửa từ (khi thiết bị ngoại vi không sử dụng HSIZE)

RM0008 Phiên bản 21 279/1136

291
Machine Translated by Google

Bộ điều khiển truy cập bộ nhớ trực tiếp (DMA) RM0008

và không tạo ra bất kỳ lỗi nào, DMA ghi 32 bit HWDATA như trong hai ví dụ bên dưới:

• Để viết nửa từ “0xABCD”, DMA đặt bus HWDATA thành “0xABCDABCD” với HSIZE = HalfWord

• Để ghi byte “0xAB”, DMA đặt bus HWDATA thành “0xABABABAB” với
HSIZE = Byte

Giả sử rằng cầu AHB/APB là thiết bị ngoại vi phụ thuộc AHB 32-bit không sử dụng
Dữ liệu HSIZE được đưa vào tài khoản, nó sẽ chuyển đổi bất kỳ hoạt động byte AHB hoặc nửa từ nào thành hoạt động 32 bit

APB hoạt động theo cách sau:

• Hoạt động ghi byte AHB của dữ liệu “0xB0” thành 0x0 (hoặc thành 0x1, 0x2 hoặc 0x3) sẽ được
chuyển đổi thành hoạt động ghi từ APB của dữ liệu “0xB0B0B0B0” thành 0x0

• Hoạt động ghi nửa từ AHB của dữ liệu “0xB1B0” thành 0x0 (hoặc thành 0x2) sẽ được
chuyển đổi thành hoạt động ghi từ APB của dữ liệu “0xB1B0B1B0” thành 0x0

Ví dụ: để ghi các thanh ghi dự phòng APB (các thanh ghi 16 bit được căn chỉnh theo ranh giới
địa chỉ 32 bit), kích thước nguồn bộ nhớ (MSIZE) phải được cấu hình thành “16-bit” và
kích thước đích ngoại vi (PSIZE) thành “ 32-bit”.

13.3.5 Quản lý lỗi

Lỗi truyền DMA có thể được tạo ra bằng cách đọc từ hoặc ghi vào không gian địa chỉ dành
riêng. Khi xảy ra lỗi truyền DMA trong quá trình truy cập đọc hoặc ghi DMA, kênh bị lỗi sẽ tự
động bị vô hiệu hóa thông qua phần cứng xóa bit EN của nó trong thanh ghi cấu hình Kênh tương
ứng (DMA_CCRx). Cờ ngắt lỗi truyền của kênh (TEIF) trong thanh ghi DMA_IFR được đặt và ngắt
được tạo ra nếu bit cho phép ngắt lỗi truyền (TEIE) trong thanh ghi DMA_CCRx được đặt.

13.3.6 Ngắt

Một ngắt có thể được tạo ra khi truyền một nửa, truyền hoàn tất hoặc lỗi truyền cho mỗi
kênh DMA. Các bit cho phép ngắt riêng biệt có sẵn để linh hoạt.

Bảng 77. Yêu cầu ngắt DMA

Sự kiện gián đoạn Cờ sự kiện Kích hoạt bit điều khiển

Chuyển nhượng một nửa HTIF HTIE

Chuyển hoàn tất TCIF TCIE

Lỗi chuyển TEIF TEIE

Ghi chú: Trong các thiết bị mật độ cao và mật độ XL, các ngắt DMA2 Channel4 và DMA2 Channel5 được ánh
xạ lên cùng một vectơ ngắt. Trong các thiết bị đường kết nối, các ngắt DMA2 Channel4 và DMA2
Channel5 có các vectơ ngắt riêng biệt. Tất cả các ngắt kênh DMA1 và DMA2 khác đều có vectơ
ngắt riêng.

280/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển truy cập bộ nhớ trực tiếp (DMA)

13.3.7 Ánh xạ yêu cầu DMA

Bộ điều khiển DMA1

7 yêu cầu từ các thiết bị ngoại vi (TIMx[1,2,3,4], ADC1, SPI1, SPI/I2S2, I2Cx[1,2] và
USARTx[1,2,3]) được OR một cách logic đơn giản trước khi vào DMA1 , điều này có nghĩa là mỗi
lần chỉ được kích hoạt một yêu cầu. Tham khảo Hình 50.

Các yêu cầu DMA ngoại vi có thể được kích hoạt/hủy kích hoạt độc lập bằng cách lập trình bit
điều khiển DMA trong các thanh ghi của thiết bị ngoại vi tương ứng.

Hình 50. Ánh xạ yêu cầu DMA1

Ngoại vi Đã sửa lỗi ưu tiên phần cứng


tín hiệu yêu cầu

Ưu tiên cao
ADC1 Yêu cầu CTNH 1
Kênh 1
TIM2_CH3
TIM4_CH1
Trình kích hoạt SW (bit MEM2MEM)

Kênh 1 kênh EN
USART3_TX
TIM1_CH1 Yêu cầu CTNH 2
Kênh 2
TIM2_UP
TIM3_CH3
Trình kích hoạt SW (bit MEM2MEM)
SPI1_RX

Kênh 2 kênh EN
USART3_RX
TIM1_CH2 Yêu cầu CTNH 3
Kênh 3
TIM3_CH4
TIM3_UP
Trình kích hoạt SW (bit MEM2MEM)
SPI1_TX
nội bộ
Kênh 3 kênh EN
USART1_TX
TIM1_CH4 DMA1

TIM1_TRIG Yêu cầu CTNH 4 lời yêu cầu


Kênh số 4
TIM1_COM
TIM4_CH2
Trình kích hoạt SW (bit MEM2MEM)
SPI/I2S2_RX
I2C2_TX
Kênh 4 EN bit
USART1_RX
TIM1_UP
Yêu cầu CTNH 5
SPI/I2S2_TX Kênh 5

TIM2_CH1
TIM4_CH3 Trình kích hoạt SW (bit MEM2MEM)

I2C2_RX
Kênh 5 EN bit

USART2_RX
TIM1_CH3 YÊU CẦU CTNH 6
Kênh 6
TIM3_CH1
TIM3_TRIG
SW TRIGGER (bit MEM2MEM)
I2C1_TX

Kênh 6 bit EN

USART2_TX
Yêu cầu phần cứng 7
Kênh 7
TIM2_CH2
Ưu tiên thấp
TIM2_CH4
Trình kích hoạt SW (bit MEM2MEM)
TIM4_UP
I2C1_RX
Kênh 7 bit EN

RM0008 Phiên bản 21 281/1136

291
Machine Translated by Google

Bộ điều khiển truy cập bộ nhớ trực tiếp (DMA) RM0008

Bảng 78 liệt kê các yêu cầu DMA cho mỗi kênh.

Bảng 78. Tóm tắt các yêu cầu DMA1 cho từng kênh

Thiết bị ngoại vi Kênh 1 Kênh 2 Kênh 3 Kênh 4 Kênh 5 Kênh 6 Kênh 7

ADC1 ADC1 - - - - - -

SPI/I2S - - -
SPI1_RX SPI1_TX SPI2/I2S2_RX SPI2/I2S2_TX

USART -
USART3_TX USART3_RX USART1_TX USART1_RX USART2_RX USART2_TX
- - -
tôi 2C I2C2_TX I2C2_RX I2C1_TX I2C1_RX

TIM1_CH4
TIM1 - - -
TIM1_CH1 TIM1_TRIG TIM1_UP TIM1_CH3
TIM1_COM

- - - TIM2_CH2
TIM2 TIM2_CH3 TIM2_UP TIM2_CH1
TIM2_CH4

- TIM3_CH4 - - TIM3_CH1 -
TIM3 TIM3_CH3
TIM3_UP TIM3_TRIG

TIM4 - - -
TIM4_CH1 TIM4_CH2 TIM4_CH3 TIM4_UP

Bộ điều khiển DMA2

Năm yêu cầu từ các thiết bị ngoại vi (TIMx[5,6,7,8], ADC3, SPI/I2S3, UART4,
DAC_Channel[1,2] và SDIO) chỉ được OR một cách logic trước khi vào DMA2, điều này có nghĩa
là chỉ có một yêu cầu phải được kích hoạt tại một thời điểm. Tham khảo Hình 51.

Các yêu cầu DMA ngoại vi có thể được kích hoạt/hủy kích hoạt độc lập bằng cách lập trình bit
điều khiển DMA trong các thanh ghi của thiết bị ngoại vi tương ứng.

Ghi chú: Bộ điều khiển DMA2 và các yêu cầu tương đối của nó chỉ khả dụng trong các thiết bị đường dây
kết nối, mật độ XL và mật độ cao.

282/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển truy cập bộ nhớ trực tiếp (DMA)

Hình 51. Ánh xạ yêu cầu DMA2


Tín hiệu yêu cầu ngoại vi Đã sửa lỗi ưu tiên phần cứng

TIM5_CH4 ƯU TIÊN CAO


TIM5_TRIG Yêu cầu CTNH 1
Kênh 1
TIM8_CH3
TIM8_UP
Trình kích hoạt SW (bit MEM2MEM)
SPI/I2S3_RX

Kênh 1 kênh EN
TIM8_CH4
Yêu cầu CTNH 2
TIM8_TRIG Kênh 2
TIM8_COM
TIM5_CH3 Trình kích hoạt SW (bit MEM2MEM)

TIM5_UP
SPI/I2S3_TX Kênh 2 kênh EN

TIM8_CH1 Yêu cầu CTNH 3


Kênh 3
UART4_RX
TIM6_UP/DAC_Kênh1
Trình kích hoạt SW (bit MEM2MEM)

nội bộ
Kênh 3 kênh EN
DMA2
TIM5_CH2 Yêu cầu CTNH 4 lời yêu cầu
Kênh số 4
SDIO
TIM7_UP/DAC_Channel2
Trình kích hoạt SW (bit MEM2MEM)

Kênh 4 EN bit

ADC3
Yêu cầu CTNH 5
TIM8_CH2 Kênh 5
TIM5_CH1 ƯU TIÊN THẤP

UART4_TX Trình kích hoạt SW (bit MEM2MEM)

Kênh 5 EN bit

Bảng 79 liệt kê các yêu cầu DMA2 cho mỗi kênh.

Bảng 79. Tóm tắt các yêu cầu DMA2 cho từng kênh

Thiết bị ngoại vi Kênh 1 Kênh 2 Kênh 3 Kênh số 4 Kênh 5

ADC3(1) - - - - ADC3

SPI/I2S3 SPI/I2S3_RX SPI/I2S3_TX - - -

UART4 - - UART4_RX - UART4_TX

SDIO(1) - - - SDIO -

TIM5_CH4 TIM5_CH3 -
TIM5 TIM5_CH2 TIM5_CH1
TIM5_TRIG TIM5_UP

TIM6/ - - TIM6_UP/ - -
DAC_Kênh1 DAC_Kênh1

TIM7 - - - TIM7_UP/ -
DAC_Kênh2

TIM8_CH4
TIM8_CH3 -
TIM8 TIM8_TRIG TIM8_CH1 TIM8_CH2
TIM8_UP
TIM8_COM

1. Các yêu cầu DMA ADC3, SDIO và TIM8 chỉ khả dụng ở các thiết bị có mật độ cao và mật độ XL.

RM0008 Phiên bản 21 283/1136


291
Machine Translated by Google

Bộ điều khiển truy cập bộ nhớ trực tiếp (DMA) RM0008

13.4 thanh ghi DMA


Tham khảo Phần 2.2 trên trang 45 để biết danh sách các chữ viết tắt được sử dụng trong mô tả đăng ký.

Ghi chú: Trong các thanh ghi sau, tất cả các bit liên quan đến kênh6 và kênh7 đều không liên quan đến DMA2 vì
nó chỉ có 5 kênh.

Các thanh ghi ngoại vi có thể được truy cập theo byte (8 bit), nửa từ (16 bit) hoặc từ (32-bit)
chút).

13.4.1 Thanh ghi trạng thái ngắt DMA (DMA_ISR)


Độ lệch địa chỉ: 0x00

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

TEIF7 HTIF7 TCIF7 GIF7 TEIF6 HTIF6 TCIF6 GIF6 TEIF5 HTIF5 TCIF5 GIF5
Kín đáo
rr r r r r r r r r r

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

TEIF4 HTIF4 TCIF4 GIF4 TEIF3 HTIF3 TCIF3 GIF3 TEIF2 HTIF2 TCIF2 GIF2 TEIF1 HTIF1 TCIF1 GIF1

rrrrrr r r r rrrr

Bit 31:28 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 27, 23, 19, 15, TEIFx: Cờ lỗi truyền kênh x (x=1..7)
11, 7, 3 Bit này được thiết lập bởi phần cứng. Nó được xóa bằng phần mềm ghi 1 vào bit tương ứng trong thanh ghi
DMA_IFCR.

0: Không có lỗi truyền (TE) trên kênh x

1: Đã xảy ra lỗi truyền (TE) trên kênh x

Bit 26, 22, 18, 14, HTIFx: Cờ chuyển nửa kênh x (x=1..7)
10, 6, 2 Bit này được thiết lập bởi phần cứng. Nó được xóa bằng phần mềm ghi 1 vào bit tương ứng trong thanh ghi
DMA_IFCR.

0: Không có sự kiện chuyển giao một nửa (HT) trên kênh x

1: Đã xảy ra sự kiện chuyển giao một nửa (HT) trên kênh x

Bit 25, 21, 17, 13, TCIFx: Cờ hoàn thành chuyển kênh x (x = 1 ..7)
9, 5, 1 Bit này được thiết lập bởi phần cứng. Nó được xóa bằng phần mềm ghi 1 vào bit tương ứng trong thanh ghi
DMA_IFCR.

0: Không có sự kiện chuyển hoàn tất (TC) trên kênh x

1: Đã xảy ra sự kiện hoàn tất chuyển giao (TC) trên kênh x

Bit 24, 20, 16, 12, GIFx: Cờ ngắt toàn cầu x kênh (x = 1 ..7)
8, 4, 0 Bit này được thiết lập bởi phần cứng. Nó được xóa bằng phần mềm ghi 1 vào bit tương ứng trong thanh ghi
DMA_IFCR.

0: Không có sự kiện TE, HT hoặc TC trên kênh x

1: Đã xảy ra sự kiện TE, HT hoặc TC trên kênh x

284/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển truy cập bộ nhớ trực tiếp (DMA)

13.4.2 Thanh ghi xóa cờ ngắt DMA (DMA_IFCR)


Độ lệch địa chỉ: 0x04

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

CTEIF CHTIF
CTCIF7 CGIF7 CTEIF6 CHTIF6 CTCIF6 CGIF6 CTEIF5 CHTIF5 CTCIF5 CGIF5
Kín đáo 7 7

www w w w w w w w w w

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CTEIF CHTIF CTCIF CTEIF CHTIF


CGIF4 CTCIF3 CGIF3 CTEIF2 CHTIF2 CTCIF2 CGIF2 CTEIF1 CHTIF1 CTCIF1 CGIF1
4 4 4 3 3

wwwww w w w w w w w w w

Bit 31:28 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 27, 23, 19, 15, CTEIFx: Xóa lỗi truyền kênh x (x=1..7)
11, 7, 3 bit này được thiết lập và xóa bằng phần mềm.
0: Không có hiệu lực

1: Xóa cờ TEIF tương ứng trong thanh ghi DMA_ISR

Bit 26, 22, 18, 14, CHTIFx: Xóa một nửa kênh x (x = 1 ..7)
10, 6, 2 bit này được thiết lập và xóa bằng phần mềm.
0: Không có hiệu lực

1: Xóa cờ HTIF tương ứng trong thanh ghi DMA_ISR

Bit 25, 21, 17, 13, CTCIFx: Xóa kênh x hoàn toàn (x = 1 ..7)
9, 5, 1 bit này được thiết lập và xóa bằng phần mềm.
0: Không có hiệu lực

1: Xóa cờ TCIF tương ứng trong thanh ghi DMA_ISR

Bit 24, 20, 16, 12, CGIFx: Xóa ngắt toàn cục kênh x (x = 1 ..7)
8, 4, 0 bit này được thiết lập và xóa bằng phần mềm.
0: Không có hiệu lực

1: Xóa các cờ GIF, TEIF, HTIF và TCIF trong thanh ghi DMA_ISR

RM0008 Phiên bản 21 285/1136

291
Machine Translated by Google

Bộ điều khiển truy cập bộ nhớ trực tiếp (DMA) RM0008

13.4.3 Kênh DMA x thanh ghi cấu hình (DMA_CCRx) (x = 1..7,


trong đó x = số kênh)

Độ lệch địa chỉ: 0x08 + 0d20 × (số kênh – 1)

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

MEM2
PL[1:0] GIẢI QUYẾT[1:0] PSIZE[1:0] MINC PINC CIRC DIR TEIE HTIE TCIE EN
Res. MEM

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:15 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 14 MEM2MEM: Chế độ bộ nhớ sang bộ nhớ

bit này được thiết lập và xóa bằng phần mềm.

0: Chế độ bộ nhớ sang bộ nhớ bị tắt


1: Đã bật chế độ bộ nhớ sang bộ nhớ

Bit 13:12 PL[1:0]: Mức ưu tiên kênh

Các bit này được thiết lập và xóa bằng phần mềm.
00: Thấp

01: Trung bình

10: Cao
11: Rất cao

Bit 11:10 MSIZE[1:0]: Kích thước bộ nhớ

Các bit này được thiết lập và xóa bằng phần mềm.
00: 8 bit
01: 16-bit
10: 32-bit
11: Dự trữ

Bit 9:8 PSIZE[1:0]: Kích thước ngoại vi

Các bit này được thiết lập và xóa bằng phần mềm.
00: 8 bit
01: 16-bit
10: 32-bit
11: Dự trữ

Bit 7 MINC: Chế độ tăng bộ nhớ

bit này được thiết lập và xóa bằng phần mềm.

0: Chế độ tăng bộ nhớ bị tắt


1: Đã bật chế độ tăng bộ nhớ

Bit 6 PINC: Chế độ tăng ngoại vi

bit này được thiết lập và xóa bằng phần mềm.

0: Đã tắt chế độ tăng ngoại vi


1: Đã bật chế độ tăng ngoại vi

Bit 5 CIRC: Chế độ tuần hoàn

bit này được thiết lập và xóa bằng phần mềm.


0: Đã tắt chế độ tuần hoàn
1: Đã bật chế độ tròn

286/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển truy cập bộ nhớ trực tiếp (DMA)

Bit 4 DIR: Hướng truyền dữ liệu

bit này được thiết lập và xóa bằng phần mềm.

0: Đọc từ ngoại vi
1: Đọc từ bộ nhớ

Bit 3 TEIE: Cho phép ngắt lỗi truyền

bit này được thiết lập và xóa bằng phần mềm.

0: Ngắt TE bị vô hiệu hóa


1: Đã bật ngắt TE

Bit 2 HTIE: Cho phép ngắt truyền một nửa

bit này được thiết lập và xóa bằng phần mềm.

0: Ngắt HT bị vô hiệu hóa


1: Đã bật ngắt HT

Bit 1 TCIE: Cho phép ngắt hoàn tất truyền

bit này được thiết lập và xóa bằng phần mềm.

0: Ngắt TC bị vô hiệu hóa


1: Đã bật ngắt TC

Bit 0 EN: Kích hoạt kênh

bit này được thiết lập và xóa bằng phần mềm.


0: Kênh bị vô hiệu hóa
1: Đã bật kênh

13.4.4 Kênh DMA x số thanh ghi dữ liệu (DMA_CNDTRx) (x = 1..7,


trong đó x = số kênh)

Độ lệch địa chỉ: 0x0C + 0d20 × (số kênh – 1)

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

NDT

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:16 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 15:0 NDT[15:0]: Số lượng dữ liệu cần truyền

Số lượng dữ liệu được truyền (0 đến 65535). Thanh ghi này chỉ có thể được ghi khi kênh bị vô hiệu hóa.
Khi kênh được bật, thanh ghi này ở chế độ chỉ đọc, cho biết các byte còn lại sẽ được truyền đi. Thanh
ghi này giảm dần sau mỗi lần truyền DMA.

Sau khi quá trình truyền hoàn tất, thanh ghi này có thể ở mức 0 hoặc được tải lại tự động
theo giá trị được lập trình trước đó nếu kênh được cấu hình ở chế độ tải lại tự động.

Nếu thanh ghi này bằng 0 thì không có giao dịch nào có thể được thực hiện cho dù kênh có được bật hay không.

RM0008 Phiên bản 21 287/1136

291
Machine Translated by Google

Bộ điều khiển truy cập bộ nhớ trực tiếp (DMA) RM0008

13.4.5 Kênh DMA x thanh ghi địa chỉ ngoại vi (DMA_CPARx) (x = 1..7,
trong đó x = số kênh)

Độ lệch địa chỉ: 0x10 + 0d20 × (số kênh – 1)

Giá trị đặt lại: 0x0000 0000

Thanh ghi này không được ghi khi kênh được bật.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PA
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:0 PA[31:0]: Địa chỉ ngoại vi

Địa chỉ cơ sở của thanh ghi dữ liệu ngoại vi mà dữ liệu sẽ được đọc/ghi.
Khi PSIZE là 01 (16-bit), bit PA[0] bị bỏ qua. Quyền truy cập được tự động căn chỉnh theo địa
chỉ nửa từ.

Khi PSIZE là 10 (32-bit), PA[1:0] bị bỏ qua. Quyền truy cập được tự động căn chỉnh theo địa
chỉ từ.

13.4.6 Kênh DMA x thanh ghi địa chỉ bộ nhớ (DMA_CMARx) (x = 1..7,
trong đó x = số kênh)

Độ lệch địa chỉ: 0x14 + 0d20 × (số kênh – 1)

Giá trị đặt lại: 0x0000 0000

Thanh ghi này không được ghi khi kênh được bật.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MA
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:0 MA[31:0]: Địa chỉ bộ nhớ

Địa chỉ cơ sở của vùng bộ nhớ mà dữ liệu sẽ được đọc/ghi từ đó.


Khi MSIZE là 01 (16-bit), bit MA[0] sẽ bị bỏ qua. Quyền truy cập được tự động căn chỉnh
theo địa chỉ nửa từ.

Khi MSIZE là 10 (32-bit), MA[1:0] sẽ bị bỏ qua. Quyền truy cập được tự động căn chỉnh theo
địa chỉ từ.

288/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển truy cập bộ nhớ trực tiếp (DMA)

13.4.7 Sơ đồ đăng ký DMA

Bảng sau đây cung cấp bản đồ thanh ghi DMA và các giá trị đặt lại.

Bảng 80. Sơ đồ thanh ghi DMA và giá trị đặt lại

1
7
5
6

0
3
8
9

2
4
Đăng ký bù đắp

DMA_ISR

7FIG

6FIG

5FIG

4FIG

3FIG

2FIG

1FIG
7FITH

6FITH

5FITH

4FITH

3FITH

2FITH

1FITH
7FIET

6FIET

5FIET

4FIET

3FIET

2FIET

1FIET
7FICT

6FICT

5FICT

4FICT

3FICT

2FICT

1FICT
0x000 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

DMA_IFCR
0x004 Kín đáo
7FIGC

6FIGC

5FIGC

4FIGC

3FIGC

2FIGC

1FIGC
7FIETC

6FIETC

5FIETC

4FIETC

3FIETC

2FIETC

1FIETC
7FITHC

7FICTC

6FITHC

6FICTC

5FITHC

5FICTC

4FITHC

4FICTC

3FITHC

3FICTC

2FITHC

2FICTC

1FITHC

1FICTC
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

PL
DMA_CCR1

CẾ
P RT
ỰI

EITH
EIET

EICT
CNIP

CRIC
CNIM
0x008 Kín đáo [1:0]

H[K
T
MEM2MEM

HMK
T
[

C:Í
1
C:Í
1

H0Ư
H0Ư

C]Ớ
C]Ớ
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

DMA_CNDTR1 NDT[15:0]
0x00C Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

DMA_CPAR1 PA[31:0]
0x010
Giá trị đặt lại 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

DMA_CMAR1 MA[31:0]
0x014
Giá trị đặt lại 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0x018 Kín đáo

PL
DMA_CCR2

CẾ
P RT
ỰI

EITH
EIET
CNIP

EICT
CRIC
CNIM

0x01C Kín đáo [1:0]


H[K
T
MEM2MEM

HMK
T
[

C:Í
1
C:Í
1

H0Ư
H0Ư

C]Ớ
C]Ớ

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

DMA_CNDTR2 NDT[15:0]
0x020 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

DMA_CPAR2 PA[31:0]
0x024
Giá trị đặt lại 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

DMA_CMAR2 MA[31:0]
0x028
Giá trị đặt lại 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0x02C Kín đáo

PL
DMA_CCR3
CẾ
P RT
ỰI

EITH
EIET
CNIP

EICT
CRIC
CNIM

0x030 Kín đáo [1:0]


H[K
T
MEM2MEM

HMK
T
[

C:Í
1
C:Í
1

H0Ư
H0Ư

C]Ớ
C]Ớ

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

DMA_CNDTR3 NDT[15:0]
0x034 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

DMA_CPAR3 PA[31:0]
0x038
Giá trị đặt lại 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

DMA_CMAR3 MA[31:0]
0x03C
Giá trị đặt lại 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0x040 Kín đáo

RM0008 Phiên bản 21 289/1136

291
Machine Translated by Google

Bộ điều khiển truy cập bộ nhớ trực tiếp (DMA) RM0008

Bảng 80. Sơ đồ thanh ghi DMA và giá trị đặt lại (tiếp theo)

1
7
5
6

0
3
8
9

2
4
Đăng ký bù đắp

13

12
0
PL

NV
DMA_CCR4

CẾ
P RT
ỰI

EITH
EIET
CNIP

EICT
CRIC
CNIM
0x044 Kín đáo [1:0]

H[
K
T
MEM2MEM

HM
K
T
[


1

1

Ư
Ư

H0C
H0C

C]Ớ
C]Ớ
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

DMA_CNDTR4 NDT[15:0]
0x048 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

DMA_CPAR4 PA[31:0]
0x04C
Giá trị đặt lại 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

DMA_CMAR4 MA[31:0]
0x050
Giá trị đặt lại 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0x054 Kín đáo

PL
DMA_CCR5

CẾ
P RT
ỰI

EITH
EIET

EICT
CNIP

CRIC
CNIM
0x058 Kín đáo [1:0]

H[
K
T
MEM2MEM

HM
K
T
[


1

1

Ư
Ư

H0C
H0C

C]Ớ
C]Ớ
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

DMA_CNDTR5 NDT[15:0]
0x05C Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

DMA_CPAR5 PA[31:0]
0x060
Giá trị đặt lại 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

DMA_CMAR5 MA[31:0]
0x064
Giá trị đặt lại 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0x068 Kín đáo

PL
DMA_CCR6

CẾ
P RT
ỰI

EITH
EIET
CNIP

EICT
CRIC
CNIM

0x06C Kín đáo [1:0]


H[K
T
MEM2MEM

HMK
T
[

C:Í
1
C:Í
1

H0Ư
H0Ư

C]Ớ
C]Ớ

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

DMA_CNDTR6 NDT[15:0]
0x070 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

DMA_CPAR6 PA[31:0]
0x074
Giá trị đặt lại 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

DMA_CMAR6 MA[31:0]
0x078
Giá trị đặt lại 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0x07C Kín đáo

PL
DMA_CCR7
CẾ
P RT
ỰI

EITH
EIET

EICT
CNIP

CRIC
CNIM

0x080 Kín đáo [1:0]


H[K
T
MEM2MEM

HMK
T
[

C:Í
1
C:Í
1

H0Ư
H0Ư

C]Ớ
C]Ớ

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

DMA_CNDTR7 NDT[15:0]
0x084 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

DMA_CPAR7 PA[31:0]
0x088
Giá trị đặt lại 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

290/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển truy cập bộ nhớ trực tiếp (DMA)

Bảng 80. Sơ đồ thanh ghi DMA và giá trị đặt lại (tiếp theo)

1
7
5
6

0
3
8
9

2
4
Đăng ký bù đắp

DMA_CMAR7 MA[31:0]
0x08C
Giá trị đặt lại 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0x090 Kín đáo

Tham khảo Bảng 3 trên trang 50 để biết địa chỉ biên của thanh ghi.

RM0008 Phiên bản 21 291/1136

291
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

14 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

Các thiết bị mật độ thấp là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

Các thiết bị có mật độ trung bình là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 64 đến 128 Kbyte.

Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ
nhớ Flash nằm trong khoảng từ 256 đến 512 Kbyte.

Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ


bộ nhớ Flash nằm trong khoảng từ 768 Kbyte đến 1 Mbyte.

Các thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

Các thiết bị STM32F103xx mật độ thấp và trung bình cũng như các thiết bị đường dây kết nối
STM32F105xx/STM32F107xx có một bộ hẹn giờ điều khiển nâng cao (TIM1) trong khi các thiết bị
STM32F103xx mật độ cao và mật độ XL có hai bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8).

14.1 Giới thiệu TIM1 và TIM8

Bộ định thời điều khiển nâng cao (TIM1 và TIM8) bao gồm bộ đếm tự động tải lại 16 bit được điều khiển bởi
bộ chia tỷ lệ trước có thể lập trình.

Nó có thể được sử dụng cho nhiều mục đích khác nhau, bao gồm đo độ dài xung của tín hiệu
đầu vào (chụp đầu vào) hoặc tạo ra dạng sóng đầu ra (so sánh đầu ra,PWM,PWM bổ
sung có chèn thời gian chết).

Độ dài xung và chu kỳ dạng sóng có thể được điều chỉnh từ vài micro giây đến vài mili giây
bằng cách sử dụng bộ đếm gộp bộ đếm thời gian và bộ đếm gộp bộ điều khiển đồng hồ RCC.

Bộ định thời điều khiển nâng cao (TIM1 và TIM8) và bộ định thời đa năng (TIMx) hoàn toàn độc
lập và không chia sẻ bất kỳ tài nguyên nào. Chúng có thể được đồng bộ hóa với nhau như
mô tả trong Phần 14.3.20.

292/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

14.2 Các tính năng chính của TIM1 và TIM8

Các tính năng hẹn giờ TIM1 và TIM8 bao gồm:

• Bộ đếm tự động tải lại lên, xuống, lên/xuống 16 bit.


• Bộ đếm gộp trước có thể lập trình 16 bit cho phép chia (cũng “nhanh chóng”) tần số đồng
hồ bộ đếm theo bất kỳ hệ số nào trong khoảng từ 1 đến 65536.

• Lên đến 4 kênh độc lập cho:

– Chụp đầu vào

– So sánh đầu ra

– Tạo xung điện (Chế độ căn lề và căn giữa)

– Đầu ra chế độ một xung

• Đầu ra bổ sung với thời gian chết có thể lập trình

• Mạch đồng bộ để điều khiển bộ định thời bằng tín hiệu bên ngoài và kết nối nhiều bộ định
thời với nhau.
• Bộ đếm lặp lại để cập nhật các thanh ghi bộ đếm thời gian chỉ sau một số chu kỳ nhất
định của bộ đếm.

• Ngắt đầu vào để đặt tín hiệu đầu ra của bộ định thời ở trạng thái reset hoặc ở trạng thái đã biết.

• Tạo ngắt/DMA trong các sự kiện sau:

– Cập nhật: tràn/tràn bộ đếm, khởi tạo bộ đếm (bằng phần mềm hoặc
kích hoạt bên trong/bên ngoài)

– Sự kiện kích hoạt (bắt đầu đếm, dừng, khởi tạo hoặc đếm theo kích hoạt bên trong/bên ngoài)

– Chụp đầu vào

– So sánh đầu ra

– Ngắt đầu vào

• Hỗ trợ bộ mã hóa gia tăng (vuông góc) và mạch cảm biến Hall để định vị
mục đích

• Đầu vào kích hoạt cho đồng hồ bên ngoài hoặc quản lý dòng điện theo chu kỳ

RM0008 Phiên bản 21 293/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

Hình 52. Sơ đồ khối bộ định thời điều khiển nâng cao

Đồng hồ bên trong (CK_INT)


CK_TIM18 từ RCC
RTE_xMIT

Bộ điều
ETR ETRF
Lựa chọn phân cực, khiển kích hoạt
Bộ dò cạnh và bộ đếm trước ETRP
TRGO Đến các đồng hồ tính giờ khác

Đến DAC và ADC


Bộ lọc đầu vào
ITR0
TGI
ITR1

ITR2 TRGI Bộ điều khiển


TRC chế độ nô lệ
ITR3

TIF_ED

Cài lại,
giao diện người dùng

Cho phép,
Lên xuống,
TI1FP1 Đếm Đăng ký REP
Giao diện
bộ mã hóa bạn
TI2FP2

1CO
Nạp lại tự động
bạn

Đăng ký

N1HC_xMIT
N1CO
Bộ đếm lặp lại

CK_PSC PSC CK_CNT CNT


(bộ đếm trước) (quầy tính tiền) thanh ghi DTG[7:0]

2HC_xMIT
CC1I

2CO
CC1I
TI1FP1
TI1 IC1PS
Bộ lọc đầu vào & IC1 Chụp/So sánh OC1REF
Bộ đếm trước DTG Kiểm
soát đầu ra
Máy dò cạnh 1 Đăng ký
TI1FP2

N2HC_xMIT
bạn
TRC CC2I CC2I
TI2FP1
TI2 IC2 IC2PS
Bộ lọc đầu vào & Chụp/So sánh OC2REF
Bộ đếm trước DTG Kiểm
Máy dò cạnh 2 Đăng ký soát đầu ra
TI2FP2
bạn
OC2N
TRC CC3I CC3I
TI3FP3 OC3
TI3 IC3 IC3PS
Bộ lọc đầu vào & Chụp/So sánh OC3REF
Bộ đếm trước DTG Kiểm
Máy dò cạnh 3 Đăng ký soát đầu ra

N3CO
TI3FP4 bạn
TRC CC4I CC4I

N3HC_xMIT
TI4FP3
TI4 IC4 IC4PS
Bộ lọc đầu vào & Chụp/So sánh OC4REF Kiểm
Bộ đếm trước soát đầu ra
Máy dò cạnh 4 Đăng ký
TI4FP4
bạn
TRC
OC4

BRK BI

4HC_xMIT
Lựa chọn phân cực
1K
NI
2
3
4 C_xMIT
HB

Sự kiện lỗi đồng hồ từ bộ điều khiển đồng hồ

CSS (Hệ thống bảo mật đồng hồ)

Ngắt & đầu ra DMA

Sự kiện

MS39906V3

294/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

14.3 Mô tả chức năng TIM1 và TIM8

14.3.1 Đơn vị cơ sở thời gian

Khối chính của bộ định thời điều khiển nâng cao có thể lập trình là bộ đếm 16 bit với thanh
ghi tự động tải lại liên quan. Bộ đếm có thể đếm lên, đếm xuống hoặc cả lên và xuống. Đồng
hồ đếm có thể được chia bằng bộ đếm trước.

Bộ đếm, thanh ghi tự động tải lại và thanh ghi bộ đếm trước có thể được ghi hoặc đọc bằng
phần mềm. Điều này đúng ngay cả khi bộ đếm đang chạy.

Đơn vị cơ sở thời gian bao gồm:

• Thanh ghi bộ đếm (TIMx_CNT)

• Thanh ghi bộ chia tỷ lệ trước (TIMx_PSC)

• Thanh ghi tự động tải lại (TIMx_ARR)


• Thanh ghi bộ đếm lặp lại (TIMx_RCR)

Thanh ghi tự động tải lại được tải trước. Việc ghi vào hoặc đọc từ thanh ghi tự động tải
lại sẽ truy cập vào thanh ghi tải trước. Nội dung của thanh ghi tải trước được chuyển vĩnh
viễn vào thanh ghi ẩn hoặc tại mỗi sự kiện cập nhật (UEV), tùy thuộc vào bit cho phép tải trước
tự động tải lại (ARPE) trong thanh ghi TIMx_CR1. Sự kiện cập nhật được gửi khi bộ đếm đạt đến
mức tràn (hoặc tràn xuống khi đếm ngược) và nếu bit UDIS bằng 0 trong thanh ghi TIMx_CR1. Nó
cũng có thể được tạo ra bởi phần mềm. Việc tạo sự kiện cập nhật được mô tả chi tiết cho
từng cấu hình.

Bộ đếm được bấm giờ bởi đầu ra bộ đếm gộp CK_CNT, chỉ được bật khi bit kích hoạt bộ đếm
(CEN) trong thanh ghi TIMx_CR1 được đặt (tham khảo thêm mô tả bộ điều khiển chế độ phụ để biết
thêm chi tiết về cách bật bộ đếm).

Lưu ý rằng bộ đếm bắt đầu đếm 1 chu kỳ xung nhịp sau khi thiết lập bit CEN trong thanh ghi
TIMx_CR1.

Mô tả bộ đếm trước

Bộ đếm gộp trước có thể chia tần số xung nhịp của bộ đếm cho bất kỳ hệ số nào từ 1 đến 65536.
Nó dựa trên bộ đếm 16 bit được điều khiển thông qua thanh ghi 16 bit (trong thanh ghi TIMx_PSC).
Nó có thể được thay đổi nhanh chóng vì thanh ghi điều khiển này được lưu vào bộ đệm. Tỷ lệ bộ đếm gộp
trước mới được tính đến ở sự kiện cập nhật tiếp theo.

Hình 53 và Hình 54 đưa ra một số ví dụ về hành vi của bộ đếm khi tỷ lệ bộ đếm trước được
thay đổi nhanh chóng:

RM0008 Phiên bản 21 295/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

Hình 53. Sơ đồ định thời của bộ đếm với bộ chia tỷ lệ trước thay đổi từ 1 thành 2

CK_PSC

CEN

Đồng hồ hẹn giờ = CK_CNT

F7 F8 F9 FA FB FC 00 01 02 03
quầy đăng ký

Cập nhật sự kiện (UEV)

Thanh ghi điều khiển bộ đếm trước 0 1

Viết một giá trị mới vào TIMx_PSC

Bộ đệm tỷ lệ trước 0 1

Bộ đếm tỷ lệ trước
0 0 1 0 1 0 1 0 1

MS31076V2

Hình 54. Sơ đồ định thời của bộ đếm với bộ chia tỷ lệ trước thay đổi từ 1 thành 4

CK_PSC

CEN

Đồng hồ hẹn giờ = CK_CNT

F7 F8 F9 FA FB FC 00 01
quầy đăng ký

Cập nhật sự kiện (UEV)

0 3
Thanh ghi điều khiển bộ đếm trước

Viết một giá trị mới vào TIMx_PSC

0 3
Bộ đệm tỷ lệ trước

0 0 1 23 0123
Bộ đếm tỷ lệ trước

MS31077V2

296/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

14.3.2 Chế độ bộ đếm

Chế độ đếm ngược

Trong chế độ đếm ngược, bộ đếm đếm từ 0 đến giá trị tự động tải lại (nội dung của thanh ghi
TIMx_ARR), sau đó khởi động lại từ 0 và tạo ra sự kiện tràn bộ đếm.

Nếu bộ đếm lặp lại được sử dụng thì sự kiện cập nhật (UEV) sẽ được tạo sau khi việc đếm ngược
được lặp lại theo số lần được lập trình trong thanh ghi bộ đếm lặp lại cộng một (TIMx_RCR+1).
Ngược lại, sự kiện cập nhật được tạo ra ở mỗi lần tràn bộ đếm.

Việc đặt bit UG trong thanh ghi TIMx_EGR (bằng phần mềm hoặc bằng bộ điều khiển chế độ phụ)
cũng tạo ra sự kiện cập nhật.

Sự kiện UEV có thể bị vô hiệu hóa bằng phần mềm bằng cách đặt bit UDIS trong thanh ghi
TIMx_CR1. Điều này là để tránh cập nhật các thanh ghi ẩn trong khi ghi các giá trị mới vào các
thanh ghi tải trước. Sau đó không có sự kiện cập nhật nào xảy ra cho đến khi bit UDIS được ghi vào 0.
Tuy nhiên, bộ đếm khởi động lại từ 0, cũng như bộ đếm của bộ đếm gộp trước (nhưng tốc độ
cài đặt tỷ lệ không thay đổi). Ngoài ra, nếu bit URS (lựa chọn yêu cầu cập nhật) trong thanh
ghi TIMx_CR1 được đặt, thì việc đặt bit UG sẽ tạo ra một sự kiện cập nhật UEV nhưng không đặt
cờ UIF (do đó không có yêu cầu ngắt hoặc DMA nào được gửi). Điều này là để tránh tạo ra cả gián
đoạn cập nhật và ghi dữ liệu khi xóa bộ đếm trong sự kiện ghi dữ liệu.

Khi một sự kiện cập nhật xảy ra, tất cả các thanh ghi sẽ được cập nhật và cờ cập nhật (bit UIF
trong thanh ghi TIMx_SR) được đặt (tùy thuộc vào bit URS):

• Bộ đếm lặp lại được tải lại với nội dung của thanh ghi TIMx_RCR,

• Thanh ghi bóng tự động tải lại được cập nhật với giá trị tải trước (TIMx_ARR),

• Bộ đệm của bộ đếm gộp trước được tải lại với giá trị tải trước (nội dung của TIMx_PSC
đăng ký).

Các hình sau đây hiển thị một số ví dụ về hoạt động của bộ đếm đối với các tần số xung nhịp
khác nhau khi TIMx_ARR=0x36.

Hình 55. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 1

CK_PSC

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 31 32 33 34 35 36 00 01 02 03 04 05 06 07

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)

MS31078V3

RM0008 Phiên bản 21 297/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

Hình 56. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 2

CK_PSC

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 0034 0035 0036 0000 0001 0002 0003

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)


MS31079V3

Hình 57. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 4

CK_PSC

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 0035 0036 0000 0001

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)


MS31080V3

Hình 58. Sơ đồ định thời của bộ đếm, xung nhịp bên trong chia cho N

CK_PSC

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 1F 20 00

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)


MS31081V3

298/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

Hình 59. Sơ đồ định thời bộ đếm, cập nhật sự kiện khi ARPE=0 (TIMx_ARR chưa được tải
trước)

CK_PSC

CEN

Đồng hồ hẹn giờ = CK_CNT

31 32 33 34 35 36 00 01 02 03 04 05 06 07
quầy đăng ký

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)

Tự động tải lại đăng ký tải trước FF 36

Viết một giá trị mới vào TIMx_ARR


MS31082V3

Hình 60. Sơ đồ định thời của bộ đếm, cập nhật sự kiện khi ARPE=1 (tIMx_ARR được
tải trước)

CK_PSC

CEN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký F0 F1 F2 F3 F4 F5 00 01 02 03 04 05 06 07

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt


(UIF)

Tự động tải lại tải trước


F5 36
đăng ký

Bóng tự động tải lại


F5 36
đăng ký

Viết một giá trị mới vào TIMx_ARR MS31083V2

RM0008 Phiên bản 21 299/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

Chế độ đếm ngược

Trong chế độ đếm ngược, bộ đếm đếm từ giá trị tự động tải lại (nội dung của thanh ghi TIMx_ARR)
xuống 0, sau đó khởi động lại từ giá trị tự động tải lại và tạo ra sự kiện tràn bộ đếm.

Nếu bộ đếm lặp lại được sử dụng, sự kiện cập nhật (UEV) sẽ được tạo sau khi đếm ngược được lặp lại
theo số lần được lập trình trong thanh ghi bộ đếm lặp lại cộng một (TIMx_RCR+1). Mặt khác, sự kiện
cập nhật được tạo ở mỗi luồng truy cập.

Việc đặt bit UG trong thanh ghi TIMx_EGR (bằng phần mềm hoặc bằng bộ điều khiển chế độ phụ) cũng
tạo ra sự kiện cập nhật.

Sự kiện cập nhật UEV có thể bị vô hiệu hóa bằng phần mềm bằng cách đặt bit UDIS trong thanh ghi
TIMx_CR1. Điều này là để tránh cập nhật các thanh ghi ẩn trong khi ghi các giá trị mới vào các
thanh ghi tải trước. Sau đó không có sự kiện cập nhật nào xảy ra cho đến khi bit UDIS được ghi vào 0.
Tuy nhiên, bộ đếm khởi động lại từ giá trị tự động tải lại hiện tại, trong khi bộ đếm của bộ đếm gộp
lại khởi động lại từ 0 (nhưng tốc độ cài đặt tỷ lệ không thay đổi).

Ngoài ra, nếu bit URS (lựa chọn yêu cầu cập nhật) trong thanh ghi TIMx_CR1 được đặt, thì việc đặt bit
UG sẽ tạo ra một sự kiện cập nhật UEV nhưng không đặt cờ UIF (do đó không có yêu cầu ngắt hoặc DMA nào
được gửi). Điều này là để tránh tạo ra cả gián đoạn cập nhật và ghi dữ liệu khi xóa bộ đếm trong sự
kiện ghi dữ liệu.

Khi một sự kiện cập nhật xảy ra, tất cả các thanh ghi sẽ được cập nhật và cờ cập nhật (bit UIF trong
thanh ghi TIMx_SR) được đặt (tùy thuộc vào bit URS):

• Bộ đếm lặp lại được tải lại với nội dung của thanh ghi TIMx_RCR

• Bộ đệm của bộ đếm gộp trước được tải lại với giá trị tải trước (nội dung của TIMx_PSC
đăng ký)

• Thanh ghi hoạt động tự động tải lại được cập nhật với giá trị tải trước (nội dung của thanh
ghi TIMx_ARR). Lưu ý rằng việc tự động tải lại được cập nhật trước khi bộ đếm được tải
lại, để khoảng thời gian tiếp theo là khoảng thời gian dự kiến

Các hình sau đây hiển thị một số ví dụ về hoạt động của bộ đếm đối với các tần số xung nhịp khác
nhau khi TIMx_ARR=0x36.

300/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

Hình 61. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 1

CK_PSC

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 05 04 03 02 01 00 36 35 34 33 32 31 30 2F

Bộ đếm tràn
(cnt_udf)

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt


(UIF)

MS31184V1

Hình 62. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 2

CK_PSC

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

0002 0001 0000 0036 0035 0034 0033


quầy đăng ký

Bộ đếm tràn

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt


(UIF)

MS31185V1

RM0008 Phiên bản 21 301/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

Hình 63. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 4

CK_PSC

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 0001 0000 0036 0035

Bộ đếm tràn

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)


MS40510V1

Hình 64. Sơ đồ định thời của bộ đếm, xung nhịp bên trong chia cho N

CK_PSC

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 20 1F 00 36

Bộ đếm tràn

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt


(UIF)

MS31187V1

302/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

Hình 65. Sơ đồ định thời của bộ đếm, sự kiện cập nhật khi bộ đếm lặp lại không được sử dụng

CK_PSC

CEN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 05 04 03 02 01 00 36 35 34 33 32 31 30 2F

Bộ đếm tràn

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt


(UIF)

Tự động tải lại tải trước


FF 36
đăng ký

Viết một giá trị mới vào TIMx_ARR


MS31188V1

Chế độ căn giữa (đếm lên/xuống)

Ở chế độ căn giữa, bộ đếm đếm từ 0 đến giá trị tự động tải lại (nội dung của thanh ghi TIMx_ARR) –
1, tạo ra sự kiện tràn bộ đếm, sau đó đếm từ giá trị tự động tải lại xuống 1 và tạo ra sự kiện
tràn bộ đếm. Sau đó nó bắt đầu đếm lại từ 0.

Chế độ căn giữa được kích hoạt khi các bit CMS trong thanh ghi TIMx_CR1 không bằng '00'. Cờ ngắt
so sánh đầu ra của các kênh được cấu hình ở đầu ra được đặt khi: bộ đếm đếm ngược (Chế độ căn
giữa 1, CMS = "01"), bộ đếm đếm lên (Chế độ căn giữa 2, CMS = "10") bộ đếm đếm lên xuống (Chế độ căn
giữa 3, CMS = "11").

Ở chế độ này, không thể ghi bit hướng DIR trong thanh ghi TIMx_CR1. Nó được cập nhật bằng phần cứng
và đưa ra hướng hiện tại của bộ đếm.

Sự kiện cập nhật có thể được tạo tại mỗi lần tràn bộ đếm và tại mỗi lần tràn bộ đếm hoặc bằng cách
đặt bit UG trong thanh ghi TIMx_EGR (bằng phần mềm hoặc bằng cách sử dụng bộ điều khiển chế độ phụ)
cũng tạo ra một sự kiện cập nhật. Trong trường hợp này, bộ đếm khởi động lại việc đếm từ 0, cũng như
bộ đếm của bộ đếm gộp trước.

Sự kiện cập nhật UEV có thể bị vô hiệu hóa bằng phần mềm bằng cách đặt bit UDIS trong thanh ghi
TIMx_CR1. Điều này là để tránh cập nhật các thanh ghi ẩn trong khi ghi các giá trị mới vào các
thanh ghi tải trước. Sau đó không có sự kiện cập nhật nào xảy ra cho đến khi bit UDIS được ghi vào 0.
Tuy nhiên, bộ đếm vẫn tiếp tục đếm lên xuống dựa trên giá trị tự động tải lại hiện tại.

Ngoài ra, nếu bit URS (lựa chọn yêu cầu cập nhật) trong thanh ghi TIMx_CR1 được đặt, việc đặt bit UG
sẽ tạo ra sự kiện cập nhật UEV nhưng không đặt cờ UIF (do đó không có yêu cầu ngắt hoặc DMA nào được
gửi). Điều này là để tránh tạo ra cả gián đoạn cập nhật và ghi dữ liệu khi xóa bộ đếm trong sự kiện
ghi dữ liệu.

RM0008 Phiên bản 21 303/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

Khi một sự kiện cập nhật xảy ra, tất cả các thanh ghi đều được cập nhật và cờ cập nhật (bit UIF trong
Thanh ghi TIMx_SR) được đặt (tùy thuộc vào bit URS):

• Bộ đếm lặp lại được tải lại với nội dung của thanh ghi TIMx_RCR

• Bộ đệm của bộ đếm gộp trước được tải lại với giá trị tải trước (nội dung của TIMx_PSC
đăng ký)

• Thanh ghi hoạt động tự động tải lại được cập nhật với giá trị tải trước (nội dung của
thanh ghi TIMx_ARR). Lưu ý rằng nếu nguồn cập nhật là tràn bộ đếm, thì quá trình tải lại tự
động sẽ được cập nhật trước khi bộ đếm được tải lại, sao cho khoảng thời gian tiếp theo là
khoảng thời gian dự kiến (bộ đếm được tải với giá trị mới).

Các hình sau đây hiển thị một số ví dụ về hoạt động của bộ đếm đối với các tần số xung nhịp khác
nhau.

Hình 66. Sơ đồ định thời bộ đếm, xung clock bên trong chia cho 1, TIMx_ARR = 0x6

CK_PSC

CEN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 04 03 02 01 00 01 02 03 04 05 06 05 03 04

Bộ đếm tràn

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)


MS31189V2

1. Ở đây, chế độ căn giữa 1 được sử dụng (để biết thêm chi tiết, hãy tham khảo Phần 14.4: các thanh ghi TIM1 và TIM8).

Hình 67. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 2

CK_PSC

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 0003 0002 0001 0000 0001 0002 0003

Bộ đếm tràn

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)


MS31190V2

304/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

Hình 68. Sơ đồ định thời của bộ đếm, xung clock bên trong chia cho 4, TIMx_ARR=0x36

CK_PSC

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 0034 0035 0036 0035

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)


MS31191V2

1. Chế độ căn giữa 2 hoặc 3 được sử dụng với UIF khi tràn.

Hình 69. Sơ đồ định thời của bộ đếm, xung nhịp bên trong chia cho N

CK_PSC

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 20 1F 01 00

Bộ đếm tràn

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)


MS31192V2

RM0008 Phiên bản 21 305/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

Hình 70. Sơ đồ thời gian của bộ đếm, sự kiện cập nhật với ARPE=1 (bộ đếm tràn)

CK_PSC

CEN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 06 05 04 03 02 01 00 01 02 03 04 05 06 07

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)

Tự động tải lại đăng ký tải trước FD 36

Viết một giá trị mới vào TIMx_ARR

Tự động tải lại sổ đăng ký hoạt động


FD 36

MS31193V3

Hình 71. Sơ đồ định thời bộ đếm, Sự kiện cập nhật với ARPE=1 (tràn bộ đếm)

CK_PSC

CEN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký F7 F8 F9 FA FB FC 36 35 34 33 32 31 30 2F

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)

Tự động tải lại đăng ký tải trước FD 36

Viết một giá trị mới vào TIMx_ARR

Tự động tải lại sổ đăng ký hoạt động


FD 36

MS31194V2

14.3.3 Bộ đếm lặp lại

Mục 14.3.1: Đơn vị cơ sở thời gian mô tả cách tạo sự kiện cập nhật (UEV) liên quan đến tràn/tràn bộ đếm. Nó thực

sự chỉ được tạo khi bộ đếm lặp lại đạt tới 0. Điều này có thể hữu ích khi tạo tín hiệu điều khiển từ xa.

Điều này có nghĩa là dữ liệu được truyền từ các thanh ghi tải trước sang các thanh ghi ẩn (thanh ghi tự động

tải lại TIMx_ARR, thanh ghi bộ đếm trước TIMx_PSC, cũng như các thanh ghi chụp/so sánh TIMx_CCRx ở chế độ

so sánh) mỗi bộ đếm N+1 tràn hoặc tràn, trong đó N là giá trị trong thanh ghi bộ đếm lặp lại TIMx_RCR.

306/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

Bộ đếm lặp lại giảm đi:

• Tại mỗi bộ đếm tràn ở chế độ đếm ngược,

• Tại mỗi bộ đếm tràn ở chế độ đếm ngược,

• Tại mỗi bộ đếm tràn và tại mỗi bộ đếm tràn ở chế độ căn giữa.

Mặc dù điều này giới hạn số lần lặp lại tối đa ở 128 chu kỳPWM, nhưng nó có thể cập nhật chu kỳ nhiệm vụ hai lần

trong mỗi chu kỳPWM. Khi làm mới các thanh ghi so sánh chỉ một lần trong mỗi khoảng thời gianPWM ở chế độ căn

giữa, độ phân giải tối đa là 2xTck, do tính đối xứng của mẫu.

Bộ đếm lặp lại là loại tự động tải lại; tốc độ lặp lại được duy trì như được xác định bởi giá trị thanh ghi TIMx_RCR

(tham khảo Hình 72). Khi sự kiện cập nhật được tạo bởi phần mềm (bằng cách đặt bit UG trong thanh ghi TIMx_EGR) hoặc

bằng phần cứng thông qua bộ điều khiển chế độ phụ, nó sẽ xảy ra ngay lập tức bất kể giá trị của bộ đếm lặp lại là

gì và bộ đếm lặp lại được tải lại với nội dung của TIMx_RCR đăng ký.

Trong chế độ căn giữa, đối với các giá trị lẻ của RCR, sự kiện cập nhật xảy ra ở luồng tràn hoặc luồng dưới tùy

thuộc vào thời điểm thanh ghi RCR được ghi và khi bộ đếm được bắt đầu. Nếu RCR được ghi trước khi khởi động bộ đếm

thì UEV sẽ xảy ra khi tràn bộ đếm. Nếu RCR được ghi sau khi khởi động bộ đếm thì UEV sẽ xuất hiện ở dòng dưới. Ví dụ:

với RCR = 3, UEV được tạo ở mỗi sự kiện tràn hoặc tràn thứ 4 tùy thuộc vào thời điểm RCR được ghi.

Hình 72. Ví dụ về tốc độ cập nhật tùy thuộc vào chế độ và cài đặt thanh ghi TIMx_RCR

Chế độ căn chỉnh ngược Chế độ căn lề

Quầy tính tiền đếm ngược đếm ngược


TIMx_CNT

TIMx_RCR = 0
UEV

TIMx_RCR = 1
UEV

UEV
TIMx_RCR = 2

TIMx_RCR = 3 UEV

TIMx_RCR = 3

UEV
đồng bộ lại

(bởi SW) (bởi SW) (bởi SW)

UEV
Sự kiện cập nhật: Các thanh ghi tải trước được chuyển sang các thanh ghi đang hoạt động và tạo ra ngắt cập nhật
Sự kiện cập nhật nếu xảy ra tình trạng tràn bộ đếm lặp lại khi bộ đếm bằng giá trị tự động tải lại.

MSv31195V1

RM0008 Phiên bản 21 307/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

14.3.4 Lựa chọn đồng hồ

Đồng hồ đếm có thể được cung cấp bởi các nguồn đồng hồ sau:
• Đồng hồ bên trong (CK_INT)
• Chế độ đồng hồ bên ngoài1: chân đầu vào bên ngoài
• Chế độ đồng hồ bên ngoài2: đầu vào kích hoạt bên ngoài ETR
• Đầu vào kích hoạt bên trong (ITRx): sử dụng một bộ định thời làm bộ đếm gộp trước cho bộ định thời khác, ví dụ:

người dùng có thể định cấu hình Bộ định thời 1 để hoạt động như bộ định tỷ lệ trước cho Bộ định thời 2. Tham khảo

Sử dụng một bộ định thời làm bộ đếm gộp trước cho bộ định thời khác để biết thêm chi tiết .

Nguồn đồng hồ bên trong (CK_INT)

Nếu bộ điều khiển chế độ phụ bị tắt (SMS=000), thì các bit CEN, DIR (trong thanh ghi
TIMx_CR1) và các bit UG (trong thanh ghi TIMx_EGR) là các bit điều khiển thực tế và chỉ có
thể được thay đổi bằng phần mềm (ngoại trừ UG vẫn bị xóa). tự động). Ngay sau khi bit CEN
được ghi lên 1, bộ đếm gộp trước sẽ được đồng hồ bên trong CK_INT bấm giờ.

Hình 73 cho thấy hoạt động của mạch điều khiển và bộ đếm ngược ở chế độ bình thường,
không có bộ đếm trước.

Hình 73. Mạch điều khiển ở chế độ bình thường, xung nhịp bên trong chia cho 1

Đồng hồ nội bộ

CEN=CNT_EN

UG

CNT_INIT

Đồng hồ đếm = CK_CNT = CK_PSC

quầy đăng ký 31 3 2 33 34 35 36 00 01 02 03 04 05 06 07

MS31085V2

Chế độ nguồn xung nhịp ngoài 1

Chế độ này được chọn khi SMS=111 trong thanh ghi TIMx_SMCR. Bộ đếm có thể đếm ở mỗi cạnh tăng
hoặc giảm trên đầu vào đã chọn.

308/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

Hình 74. Ví dụ kết nối đồng hồ bên ngoài TI2

TIMx_SMCR

TS[2:0]

TI2F hoặc
hoặc
TI1F hoặc Mã hoá
ITRx cách thức
0xx
TI1_ED
100 TRGI Đồng hồ bên ngoài
TI1FP1 CK_PSC
101 chế độ 1
TI2F_Tăng
TI2 Bờ rìa
0 TI2FP2 ETRF Đồng hồ bên ngoài
Lọc 110
máy dò 1 ETRF chế độ 2
TI2F_Rơi 111
CK_INT Đồng hồ nội bộ

cách thức
ICF[3:0] CC2P (đồng hồ nội bộ)

TIMx_CCMR1 TIMx_CCER
ECE SMS[2:0]

TIMx_SMCR

MS31196V1

Ví dụ: để định cấu hình bộ đếm ngược để đếm phản hồi với cạnh tăng trên đầu vào TI2, hãy sử dụng quy trình
sau:

1. Cấu hình kênh 2 để phát hiện các cạnh lên trên đầu vào TI2 bằng cách viết CC2S = '01' vào
thanh ghi TIMx_CCMR1.

2. Định cấu hình thời lượng bộ lọc đầu vào bằng cách ghi các bit IC2F[3:0] vào TIMx_CCMR1
đăng ký (nếu không cần bộ lọc, giữ IC2F=0000).

3. Chọn phân cực cạnh tăng bằng cách ghi CC2P=0 vào thanh ghi TIMx_CCER.

4. Định cấu hình bộ hẹn giờ ở chế độ đồng hồ bên ngoài 1 bằng cách viết SMS=111 trong TIMx_SMCR
đăng ký.

5. Chọn TI2 làm nguồn đầu vào kích hoạt bằng cách ghi TS=110 vào thanh ghi TIMx_SMCR.

6. Kích hoạt bộ đếm bằng cách ghi CEN=1 vào thanh ghi TIMx_CR1.

Ghi chú: Bộ chia tỷ lệ chụp trước không được sử dụng để kích hoạt nên người dùng không cần phải định cấu hình nó.

Khi cạnh tăng xảy ra trên TI2, bộ đếm sẽ đếm một lần và cờ TIF được đặt.

Độ trễ giữa cạnh tăng trên TI2 và xung nhịp thực tế của bộ đếm là do mạch tái đồng bộ hóa trên đầu vào TI2.

RM0008 Phiên bản 21 309/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

Hình 75. Mạch điều khiển ở chế độ xung nhịp ngoài 1

TI2

CNT_EN

Đồng hồ đếm = CK_CNT = CK_PSC

quầy đăng ký 34 35 36

TIF

Viết TIF=0

MS31087V2

Chế độ nguồn xung nhịp ngoài 2

Chế độ này được chọn bằng cách ghi ECE=1 vào thanh ghi TIMx_SMCR.

Bộ đếm có thể đếm ở mỗi cạnh tăng hoặc giảm trên ETR đầu vào kích hoạt bên ngoài.

Hình 76 cung cấp cái nhìn tổng quan về khối đầu vào kích hoạt bên ngoài.

Hình 76. Khối đầu vào kích hoạt bên ngoài

TI2F hoặc
hoặc
TI1F hoặc Chế độ mã
hóa

TRGI Chế độ đồng hồ


ETR CK_PSC
0 ngoài 1
Bộ chia / ETRP
Chân ETR Bộ ETRF Chế độ đồng hồ
1, /2, /4, /8
1 fDTS lọc ngược ngoài 2

CK_INT Chế độ đồng hồ

ETP bên trong


ETPS[1:0] ETF[3:0] (đồng hồ nội bộ)

TIMx_SMCR TIMx_SMCR TIMx_SMCR

ECE SMS[2:0]

TIMx_SMCR

MS33116V1

310/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

Ví dụ: để định cấu hình bộ đếm ngược để đếm từng 2 cạnh lên trên ETR, hãy sử dụng quy
trình sau:

1. Vì không cần bộ lọc trong ví dụ này, hãy viết ETF[3:0]=0000 vào sổ đăng ký TIMx_SMCR.

2. Đặt bộ đếm gộp trước bằng cách ghi ETPS[1:0]=01 vào thanh ghi TIMx_SMCR

3. Chọn phát hiện cạnh tăng trên chân ETR bằng cách ghi ETP=0 vào TIMx_SMCR
đăng ký

4. Kích hoạt chế độ đồng hồ bên ngoài 2 bằng cách ghi ECE=1 vào thanh ghi TIMx_SMCR.

5. Kích hoạt bộ đếm bằng cách ghi CEN=1 vào thanh ghi TIMx_CR1.

Bộ đếm đếm một lần cho mỗi 2 cạnh tăng ETR.

Độ trễ giữa cạnh tăng trên ETR và đồng hồ thực tế của bộ đếm là do mạch tái đồng bộ hóa trên
tín hiệu ETRP.

Hình 77. Mạch điều khiển ở chế độ xung nhịp ngoài 2

f
CK_INT

CNT_EN

ETR

ETRP

ETRF

Đồng hồ đếm ngược =

CK_INT =CK_PSC

quầy đăng ký 34 35 36

MS33111V2

14.3.5 Ghi/so sánh các kênh


Mỗi kênh Chụp/So sánh được xây dựng xung quanh một thanh ghi chụp/so sánh (bao gồm cả
thanh ghi bóng), giai đoạn đầu vào để chụp (với bộ lọc kỹ thuật số, ghép kênh và bộ đếm trước)
và giai đoạn đầu ra (với bộ so sánh và điều khiển đầu ra).

Hình 78 đến Hình 81 đưa ra cái nhìn tổng quan về một kênh Chụp/So sánh.

Tầng đầu vào lấy mẫu đầu vào TIx tương ứng để tạo ra tín hiệu được lọc TIxF.
Sau đó, bộ dò cạnh với lựa chọn phân cực sẽ tạo ra tín hiệu (TIxFPx) có thể được bộ điều
khiển chế độ phụ sử dụng làm đầu vào kích hoạt hoặc làm lệnh chụp. Nó được định tỷ
lệ trước trước thanh ghi chụp (ICxPS).

RM0008 Phiên bản 21 311/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

Hình 78. Kênh thu thập/so sánh (ví dụ: giai đoạn đầu vào kênh 1)

TI1F_ED
Đến bộ điều khiển chế độ nô lệ

TI1 TI1F_Tăng
0 TI1FP1
Bộ TI1F Máy
fDTS
01
lọc ngược dò cạnh TI1F_Rơi 1

TI2FP1 IC1 Bộ chia / IC1PS


10
1, /2, /4, /8

ICF[3:0] CC1P/CC1NP TRC


11
TIMx_CCMR1 TIMx_CCER (từ bộ điều khiển
chế độ nô lệ)
TI2F_Rising 0
(từ kênh 2)
CC1S[1:0] ICPS[1:0] CC1E
TI2F_Falling 1
(từ kênh 2) TIMx_CCMR1 TIMx_CCER

MS33115V1

Giai đoạn đầu ra tạo ra dạng sóng trung gian sau đó được sử dụng để tham chiếu: OCxRef
(mức hoạt động cao). Sự phân cực hoạt động ở cuối chuỗi.

Hình 79. Mạch chính thu/so sánh kênh 1

Xe buýt APB

Giao diện ngoại vi MCU

số 8 số 8
pấht

S viết CCR1H
utếi
- nb
6 (
1

Đọc CCR1H
)

S viết_in_progress
đọc_in_progress viết CCR1L
Đọc CCR1L Chụp/so sánh đăng ký tải trước R
R
Chế độ CC1S[1]
so sánh_chuyển đầu ra
chụp_chuyển
CC1S[0]
Chế độ
CC1S[1] OC1PE
đầu vào OC1PE
CC1S[0] Chụp/so sánh thanh ghi bóng
UEV

(từ đơn vị
TIMx_CCMR1
IC1PS Bộ so sánh
Chiếm lấy
cơ sở thời gian)
CC1E CNT>CCR1

Quầy tính tiền


CNT=CCR1
CC1G

TIMx_EGR
MS31089V3

312/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

Hình 80. Giai đoạn đầu ra của kênh thu thập/so sánh (kênh 1 đến 3)

Đến bộ điều khiển chế độ

chính

ETRF 0
Mạch OC1
cho
'0'
x0 1 phép đầu ra
OC1REF OC1REFC
01
OC1_DT CC1P
CNT>CCR1 11
Chế độ
đầu ra Bộ Thời gian chết
TIM1_CCER
Bộ điều khiển chọn đầu ra máy phát điện
CNT=CCR1 OC1N_DT
11

10 0
(1) Mạch OC1N
OCxREF '0'
0x cho
OC5REF 1
phép đầu ra

CC1NE CC1E TIM1_CCER

OC1CE OC1M[3:0] DTG[7:0] CC1NE CC1E CC1NP MOE OSSI OSSR

TIM1_CCMR1 TIM1_BDTR TIM1_CCER TIM1_CCER TIM1_BDTR

MS35909V1

Hình 81. Tầng đầu ra của kênh chụp/so sánh (kênh 4)

Đến bộ điều khiển

chế độ chính
ETR Mạch cho
0
phép đầu
OC4
1
ra

CNT>CCR4 Bộ điều
khiển CC4P
OC4REF
CNT>CCR4 chế độ đầu ra
TIM1_CCER

CC4E TIM1_CCER

MOE OSSI TIM1_BDTR


OC1M[3:0]
OIS4 TIM1_CR2
TIM1_CCMR2

MS37370V1

Khối thu thập/so sánh được tạo thành từ một thanh ghi tải trước và một thanh ghi bóng. Viết và
đọc luôn truy cập vào thanh ghi tải trước.

Trong chế độ chụp, việc chụp thực sự được thực hiện trong thanh ghi bóng, được sao chép vào
thanh ghi tải trước.

Trong chế độ so sánh, nội dung của thanh ghi tải trước được sao chép vào thanh ghi bóng để
so sánh với bộ đếm.

RM0008 Phiên bản 21 313/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

14.3.6 Chế độ chụp đầu vào

Trong chế độ thu thập đầu vào, các thanh ghi Chụp/So sánh (TIMx_CCRx) được sử dụng để chốt giá
trị của bộ đếm sau khi chuyển đổi được phát hiện bởi tín hiệu ICx tương ứng. Khi quá trình
chụp xảy ra, cờ CCXIF tương ứng (thanh ghi TIMx_SR) được đặt và một yêu cầu ngắt hoặc DMA có thể
được gửi nếu chúng được bật. Nếu việc chụp xảy ra trong khi cờ CCxIF đã ở mức cao thì cờ bắt quá
mức CCxOF (thanh ghi TIMx_SR) được đặt. CCxIF có thể được xóa bằng phần mềm bằng cách ghi nó
vào '0' hoặc bằng cách đọc dữ liệu đã ghi được lưu trong thanh ghi TIMx_CCRx. CCxOF bị
xóa khi được ghi vào '0'.

Ví dụ sau đây cho thấy cách nắm bắt giá trị bộ đếm trong TIMx_CCR1 khi đầu vào TI1 tăng. Để thực
hiện việc này, hãy sử dụng quy trình sau:

• Chọn đầu vào hoạt động: TIMx_CCR1 phải được liên kết với đầu vào TI1, vì vậy hãy ghi các bit CC1S
thành 01 trong thanh ghi TIMx_CCMR1. Ngay khi CC1S khác 00, kênh được cấu hình ở đầu vào và
thanh ghi TIMx_CCR1 trở thành chỉ đọc.

• Lập trình khoảng thời gian lọc đầu vào cần thiết đối với tín hiệu được kết nối với
bộ đếm thời gian (bằng cách lập trình các bit ICxF trong thanh ghi TIMx_CCMRx nếu đầu vào là đầu vào TIx).

Hãy tưởng tượng rằng, khi chuyển đổi, tín hiệu đầu vào không ổn định trong tối đa 5 chu
kỳ xung nhịp bên trong. Chúng ta phải lập trình thời lượng lọc dài hơn năm chu kỳ đồng hồ
này. Chúng tôi có thể xác nhận quá trình chuyển đổi trên TI1 khi phát hiện được 8 mẫu liên
tiếp với cấp độ mới (được lấy mẫu ở tần số fDTS ). Sau đó ghi các bit IC1F vào 0011 trong
thanh ghi TIMx_CCMR1.

• Chọn cạnh của quá trình chuyển đổi tích cực trên kênh TI1 bằng cách ghi bit CC1P lên 0 in
thanh ghi TIMx_CCER (cạnh tăng trong trường hợp này).

• Lập trình bộ chia tỷ lệ đầu vào. Trong ví dụ của chúng tôi, chúng tôi muốn việc chụp được thực hiện ở
mỗi lần chuyển đổi hợp lệ, do đó bộ đếm gộp trước bị vô hiệu hóa (ghi các bit IC1PS vào '00'
trong thanh ghi TIMx_CCMR1).

• Cho phép chụp từ bộ đếm vào thanh ghi chụp bằng cách đặt bit CC1E trong
Đăng ký TIMx_CCER.
• Nếu cần, hãy bật yêu cầu ngắt liên quan bằng cách đặt bit CC1IE trong thanh ghi
TIMx_DIER và/hoặc yêu cầu DMA bằng cách đặt bit CC1DE trong thanh ghi TIMx_DIER.

Khi quá trình chụp đầu vào xảy ra:

• Thanh ghi TIMx_CCR1 lấy giá trị của bộ đếm trong quá trình chuyển đổi tích cực.

• Cờ CC1IF được thiết lập (cờ ngắt). CC1OF cũng được đặt nếu có ít nhất hai lần chụp liên tiếp
xảy ra trong khi cờ chưa bị xóa.

• Một ngắt được tạo ra tùy thuộc vào bit CC1IE.

• Yêu cầu DMA được tạo ra tùy thuộc vào bit CC1DE.

Để xử lý việc thu thập quá mức, nên đọc dữ liệu trước cờ thu thập quá mức. Điều này nhằm
tránh bỏ sót tình trạng bắt quá mức có thể xảy ra sau khi đọc cờ và trước khi đọc dữ liệu.

Ghi chú: Yêu cầu ngắt IC và/hoặc DMA có thể được tạo bằng phần mềm bằng cách đặt bit CCxG
tương ứng trong thanh ghi TIMx_EGR.

314/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

14.3.7 Chế độ đầu vàoPWM

Chế độ này là một trường hợp cụ thể của chế độ chụp đầu vào. Quy trình giống nhau ngoại trừ:

• Hai tín hiệu ICx được ánh xạ trên cùng một đầu vào TIx.

• 2 tín hiệu ICx này hoạt động ở các cạnh có cực tính ngược nhau.

• Một trong hai tín hiệu TIxFP được chọn làm đầu vào kích hoạt và bộ điều khiển chế độ phụ
được cấu hình ở chế độ reset.

Ví dụ: người dùng có thể đo khoảng thời gian (trong thanh ghi TIMx_CCR1) và chu kỳ nhiệm vụ
(trong thanh ghi TIMx_CCR2) củaPWM được áp dụng trên TI1 bằng quy trình sau (tùy thuộc vào tần
số CK_INT và giá trị bộ đếm trước):

• Chọn đầu vào hoạt động cho TIMx_CCR1: ghi các bit CC1S thành 01 trong thanh ghi TIMx_CCMR1
(đã chọn TI1).

• Chọn cực hoạt động cho TI1FP1 (được sử dụng cả để chụp trong TIMx_CCR1 và xóa bộ đếm): ghi
bit CC1P thành '0' (hoạt động ở cạnh tăng).

• Chọn đầu vào hoạt động cho TIMx_CCR2: ghi các bit CC2S thành 10 trong thanh ghi TIMx_CCMR1
(đã chọn TI1).

• Chọn cực hoạt động cho TI1FP2 (dùng để chụp trong TIMx_CCR2): ghi CC2P
bit thành '1' (hoạt động ở cạnh xuống).

• Chọn đầu vào kích hoạt hợp lệ: ghi các bit TS thành 101 trong thanh ghi TIMx_SMCR
(đã chọn TI1FP1).

• Cấu hình bộ điều khiển chế độ nô lệ ở chế độ đặt lại: ghi các bit SMS thành 100 trong
thanh ghi TIMx_SMCR.

• Cho phép chụp: ghi các bit CC1E và CC2E vào '1' trong thanh ghi TIMx_CCER.

Hình 82. Định thời chế độ đầu vàoPWM

1. Chế độ đầu vào RGB chỉ có thể được sử dụng với các tín hiệu TIMx_CH1/TIMx_CH2 do thực tế là chỉ có
TI1FP1 và TI2FP2 được kết nối với bộ điều khiển chế độ phụ.

RM0008 Phiên bản 21 315/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

14.3.8 Chế độ đầu ra cưỡng bức

Ở chế độ đầu ra (các bit CCxS = 00 trong thanh ghi TIMx_CCMRx), mỗi tín hiệu so sánh đầu ra (OCxREF
và sau đó là OCx/OCxN) có thể được chuyển trực tiếp sang mức hoạt động hoặc không hoạt động bằng
phần mềm, độc lập với mọi so sánh giữa thanh ghi so sánh đầu ra và bộ đếm .

Để buộc tín hiệu so sánh đầu ra (OCXREF/OCx) về mức hoạt động của nó, người dùng chỉ cần ghi 101
vào các bit OCxM trong thanh ghi TIMx_CCMRx tương ứng. Do đó OCXREF bị ép ở mức cao (OCxREF luôn
ở mức hoạt động ở mức cao) và OCx nhận giá trị ngược lại với bit phân cực CCxP.

Ví dụ: CCxP=0 (OCx hoạt động ở mức cao) => OCx bị ép lên mức cao.

Tín hiệu OCxREF có thể bị ép xuống mức thấp bằng cách ghi các bit OCxM thành 100 trong thanh ghi
TIMx_CCMRx.

Dù sao, việc so sánh giữa thanh ghi bóng TIMx_CCRx và bộ đếm vẫn được thực hiện và cho phép đặt
cờ. Yêu cầu ngắt và DMA có thể được gửi tương ứng. Điều này được mô tả trong phần chế
độ so sánh đầu ra bên dưới.

14.3.9 Chế độ so sánh đầu ra

Chức năng này được sử dụng để điều khiển dạng sóng đầu ra hoặc cho biết khi một khoảng thời gian đã
trôi qua.

Khi tìm thấy sự trùng khớp giữa thanh ghi chụp/so sánh và bộ đếm, chức năng so sánh đầu ra: • Gán
chân đầu ra tương

ứng cho một giá trị lập trình được xác định bởi chế độ so sánh đầu ra (các bit OCxM trong thanh
ghi TIMx_CCMRx) và cực đầu ra (CCxP bit trong thanh ghi TIMx_CCER). Chân đầu ra có thể giữ mức
của nó (OCXM=000), được đặt hoạt động (OCxM=001), được đặt không hoạt động (OCxM=010) hoặc có
thể chuyển đổi (OCxM=011) khi khớp.

• Đặt cờ trong thanh ghi trạng thái ngắt (bit CCxIF trong thanh ghi TIMx_SR).

• Tạo ra một ngắt nếu mặt nạ ngắt tương ứng được đặt (bit CCXIE trong thanh ghi TIMx_DIER).

• Gửi yêu cầu DMA nếu bit kích hoạt tương ứng được đặt (bit CCxDE trong thanh ghi
TIMx_DIER, bit CCDS trong thanh ghi TIMx_CR2 để lựa chọn yêu cầu DMA).

Các thanh ghi TIMx_CCRx có thể được lập trình có hoặc không có các thanh ghi tải trước bằng cách
sử dụng bit OCxPE trong thanh ghi TIMx_CCMRx.

Trong chế độ so sánh đầu ra, sự kiện cập nhật UEV không ảnh hưởng đến đầu ra OCxREF và OCx.
Độ phân giải thời gian là một số đếm của bộ đếm. Chế độ so sánh đầu ra cũng có thể được sử dụng để
xuất ra một xung đơn (ở chế độ Một xung).

316/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

Thủ tục:

1. Chọn đồng hồ bộ đếm (bên trong, bên ngoài, bộ đếm gộp trước).

2. Ghi dữ liệu mong muốn vào thanh ghi TIMx_ARR và TIMx_CCRx.

3. Đặt bit CCxIE nếu yêu cầu ngắt được tạo ra.

4. Chọn chế độ đầu ra. Ví dụ:

– Viết OCxM = 011 để chuyển đổi chân đầu ra OCx khi CNT khớp với CCRx

– Viết OCxPE = 0 để vô hiệu hóa thanh ghi tải trước

– Viết CCxP = 0 để chọn cực tích cực cao

– Viết CCxE = 1 để kích hoạt đầu ra

5. Kích hoạt bộ đếm bằng cách đặt bit CEN trong thanh ghi TIMx_CR1.

Thanh ghi TIMx_CCRx có thể được cập nhật bất cứ lúc nào bằng phần mềm để điều khiển dạng
sóng đầu ra, miễn là thanh ghi tải trước không được bật (OCxPE='0', nếu không thì thanh ghi
bóng TIMx_CCRx chỉ được cập nhật ở sự kiện cập nhật tiếp theo UEV). Một ví dụ được đưa ra
trong Hình 83.

Hình 83. Chế độ so sánh đầu ra, bật OC1.

Viết B201h vào thanh ghi CC1R

TIM1_CNT 0039 003A 003B B200 B201

TIM1_CCR1 003A B201

OC1REF=OC1

Đã phát hiện kết quả trùng khớp trên CCR1

Ngắt được tạo nếu được bật


MS31092V2

Chế độ 14.3.10PWM

Chế độ Điều chế độ rộng xung cho phép tạo tín hiệu có tần số được xác định bởi giá trị của
thanh ghi TIMx_ARR và chu kỳ nhiệm vụ được xác định bởi giá trị của thanh ghi TIMx_CCRx.

Chế độPWM có thể được chọn độc lập trên mỗi kênh (mộtPWM cho mỗi đầu ra OCx) bằng cách
ghi '110' (chế độPWM 1) hoặc '111' (chế độPWM 2) trong các bit OCxM trong thanh ghi
TIMx_CCMRx. Thanh ghi tải trước tương ứng phải được bật bằng cách đặt bit OCxPE trong thanh
ghi TIMx_CCMRx và cuối cùng là thanh ghi tải trước tự động tải lại (ở chế độ đếm ngược hoặc
căn giữa) bằng cách đặt bit ARPE trong thanh ghi TIMx_CR1.

Vì các thanh ghi tải trước chỉ được chuyển sang các thanh ghi ẩn khi xảy ra sự kiện cập nhật,
trước khi khởi động bộ đếm, người dùng phải khởi tạo tất cả các thanh ghi bằng cách đặt bit UG
trong thanh ghi TIMx_EGR.

RM0008 Phiên bản 21 317/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

Phân cực OCx được lập trình bằng phần mềm bằng cách sử dụng bit CCxP trong thanh ghi TIMx_CCER.
Nó có thể được lập trình ở mức hoạt động cao hoặc mức hoạt động thấp. Đầu ra OCx được kích hoạt
bằng sự kết hợp của các bit CCxE, CCxNE, MOE, OSSI và OSSR (các thanh ghi TIMx_CCER và TIMx_BDTR).
Tham khảo mô tả thanh ghi TIMx_CCER để biết thêm chi tiết.

Trong chế độPWM (1 hoặc 2), TIMx_CNT và TIMx_CCRx luôn được so sánh để xác định xem TIMx_CCRx
TIMx_CNT hay TIMx_CNT TIMx_CCRx (tùy thuộc vào hướng của bộ đếm).

Bộ hẹn giờ có thể tạo ra xung điều khiển ở chế độ căn chỉnh cạnh hoặc chế độ căn giữa
tùy thuộc vào các bit CMS trong thanh ghi TIMx_CR1.

Chế độ căn chỉnh theo cạnh của PLC

• Cấu hình đếm ngược

Tính năng đếm ngược được kích hoạt khi bit DIR trong thanh ghi TIMx_CR1 ở mức thấp. Tham
khảo Chế độ đếm ngược.

Trong ví dụ sau, chúng tôi xem xét chế độPWM 1. Tín hiệuPWM tham chiếu OCxREF ở mức
cao miễn là TIMx_CNT < TIMx_CCRx nếu không nó sẽ ở mức thấp. Nếu giá trị so sánh trong
TIMx_CCRx lớn hơn giá trị tự động tải lại (trong TIMx_ARR) thì OCxREF được giữ ở '1'.
Nếu giá trị so sánh là 0 thì OCxRef được giữ ở mức '0'.
Hình 84 cho thấy một số dạng sóng điều chỉnh theo cạnh trong ví dụ trong đó
TIMx_ARR=8.

Hình 84. Dạng sóng điều chỉnh cạnh (ARR=8)

quầy đăng ký 0 1 2 34 5 6 7 8 01

OCXREF
CCRx=4
CCxIF

OCXREF
CCRx=8
CCxIF

OCXREF '1'
CCRx>8
CCxIF

OCXREF '0'
CCRx=0
CCxIF

MS31093V1

318/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

• Cấu hình đếm ngược

Đếm ngược được kích hoạt khi bit DIR trong thanh ghi TIMx_CR1 ở mức cao. Tham
khảo Chế độ đếm ngược

Ở chế độPWM 1, tín hiệu tham chiếu OCxRef ở mức thấp miễn là
TIMx_CNT > TIMx_CCRx nếu không nó sẽ ở mức cao. Nếu giá trị so sánh trong TIMx_CCRx lớn
hơn giá trị tự động tải lại trong TIMx_ARR thì OCxREF được giữ ở '1'. Không thể sử dụng
0%PWM trong chế độ này.

Chế độ căn giữa trung tâm

Chế độ căn giữa được kích hoạt khi các bit CMS trong thanh ghi TIMx_CR1 khác với '00' (tất
cả các cấu hình còn lại có cùng tác dụng đối với tín hiệu OCxRef/OCx).
Cờ so sánh được đặt khi bộ đếm đếm lên, khi nó đếm ngược hoặc cả hai khi nó đếm lên và đếm
xuống tùy thuộc vào cấu hình bit CMS. Bit hướng (DIR) trong thanh ghi TIMx_CR1 được cập nhật
bằng phần cứng và không được thay đổi bằng phần mềm. Tham khảo Chế độ căn giữa (đếm lên/xuống).

Hình 85 cho thấy một số dạng sóng điều chỉnh trung tâm trong một ví dụ trong đó:

• TIMx_ARR=8,

• Chế độPWM là chế độPWM 1,

• Cờ được thiết lập khi bộ đếm đếm ngược tương ứng với chế độ căn giữa 1 được chọn cho
CMS=01 trong thanh ghi TIMx_CR1.

RM0008 Phiên bản 21 319/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

Hình 85. Dạng sóng điều chỉnh trung tâm (ARR=8)

Quầy đăng ký 0123456787654 32101

OCxREF
CCRx = 4

CCxIF CMS=01
CMS=10
CMS=11

OCxREF
CCRx = 7

CMS=10 hoặc 11
CCxIF

'1'
OCxREF
CCRx = 8

CCxIF CMS=01
CMS=10
CMS=11
'1'
OCxREF
CCRx > 8

CCxIF CMS=01
CMS=10
CMS=11
'0'
OCxREF
CCRx = 0

CCxIF CMS=01
CMS=10
CMS=11

ai14681b

Gợi ý về cách sử dụng chế độ căn giữa:

• Khi khởi động ở chế độ căn giữa, cấu hình lên xuống hiện tại sẽ được sử dụng. Nó
có nghĩa là bộ đếm đếm lên hoặc đếm xuống tùy thuộc vào giá trị được ghi bằng bit DIR
trong thanh ghi TIMx_CR1. Hơn nữa, phần mềm không được phép thay đổi các bit DIR và CMS
cùng một lúc.

• Không nên ghi vào bộ đếm trong khi đang chạy ở chế độ căn giữa vì nó
có thể dẫn đến những kết quả không mong đợi. Đặc biệt:

– Hướng không được cập nhật nếu người dùng ghi một giá trị vào bộ đếm lớn hơn giá trị
tự động tải lại (TIMx_CNT>TIMx_ARR). Ví dụ: nếu bộ đếm đang đếm lên thì nó sẽ tiếp
tục đếm lên.

– Hướng được cập nhật nếu người dùng ghi 0 hoặc ghi giá trị TIMx_ARR vào bộ đếm nhưng
không có UEV Sự kiện Cập nhật nào được tạo.

• Cách an toàn nhất để sử dụng chế độ căn giữa là tạo bản cập nhật bằng phần mềm
(thiết lập bit UG trong thanh ghi TIMx_EGR) ngay trước khi khởi động bộ đếm và không ghi
bộ đếm trong khi nó đang chạy.

320/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

14.3.11 Đầu ra bổ sung và chèn thời gian chết

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) có thể xuất ra hai tín hiệu bổ sung và quản lý
thời điểm tắt và bật của đầu ra.

Thời gian này thường được gọi là thời gian chết và phải được điều chỉnh tùy thuộc vào
thiết bị được kết nối với đầu ra và đặc tính của chúng (độ trễ nội tại của bộ chuyển mức, độ
trễ do công tắc nguồn...)

Người dùng có thể chọn cực tính của đầu ra (đầu ra chính OCx hoặc OCxN bổ sung) một cách
độc lập cho từng đầu ra. Điều này được thực hiện bằng cách ghi vào các bit CCxP và CCxNP
trong thanh ghi TIMx_CCER.

Các tín hiệu bổ sung OCx và OCxN được kích hoạt bằng sự kết hợp của một số bit điều
khiển: các bit CCxE và CCxNE trong thanh ghi TIMx_CCER và các bit MOE, OISx, OISxN, OSSI
và OSSR trong các thanh ghi TIMx_BDTR và TIMx_CR2. Tham khảo Bảng 83
để biết thêm chi tiết. Đặc biệt, thời gian chết được kích hoạt khi chuyển sang trạng thái
IDLE (MOE giảm xuống 0).

Tính năng chèn thời gian chết được kích hoạt bằng cách thiết lập cả hai bit CCxE và CCxNE và
bit MOE nếu có mạch ngắt. Các bit DTG[7:0] của thanh ghi TIMx_BDTR được sử dụng để điều
khiển việc tạo thời gian chết cho tất cả các kênh. Từ dạng sóng tham chiếu OCxREF, nó tạo ra 2
đầu ra OCx và OCxN. Nếu OCx và OCxN đang hoạt động ở mức cao:

• Tín hiệu đầu ra OCx giống như tín hiệu tham chiếu ngoại trừ cạnh tăng, bị trễ so với cạnh
tăng tham chiếu.

• Tín hiệu đầu ra OCxN ngược lại với tín hiệu tham chiếu ngoại trừ cạnh lên, bị trễ so với
cạnh xuống tham chiếu.

Nếu độ trễ lớn hơn độ rộng của đầu ra hoạt động (OCx hoặc OCxN) thì xung tương ứng
sẽ không được tạo ra.

Các hình sau đây thể hiện mối quan hệ giữa tín hiệu đầu ra của bộ tạo thời gian chết và tín
hiệu tham chiếu OCxREF. (chúng tôi giả sử CCxP=0, CCxNP=0, MOE=1, CCxE=1 và CCxNE=1 trong
các ví dụ này)

Hình 86. Đầu ra bổ sung có chèn thời gian chết.

OCxREF

OCx

trì hoãn

OCxN
trì hoãn

MS31095V1

RM0008 Phiên bản 21 321/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

Hình 87. Dạng sóng thời gian chết có độ trễ lớn hơn xung âm.

OCxREF

OCx

trì hoãn

OCxN

MS31096V1

Hình 88. Dạng sóng thời gian chết có độ trễ lớn hơn xung dương.

OCxREF

OCx

OCxN

trì hoãn

MS31097V1

Độ trễ thời gian chết là như nhau đối với mỗi kênh và có thể lập trình được bằng các bit DTG
trong thanh ghi TIMx_BDTR. Tham khảo Mục 14.4.18: Thanh ghi ngắt và thời gian chết TIM1 và TIM8
(TIMx_BDTR) để tính toán độ trễ.

Chuyển hướng OCxREF sang OCx hoặc OCxN

Ở chế độ đầu ra (bắt buộc, so sánh đầu ra hoặc PPP), OCxREF có thể được chuyển hướng lại đến
đầu ra OCx hoặc đầu ra OCxN bằng cách định cấu hình các bit CCxE và CCxNE trong thanh ghi
TIMx_CCER.

Điều này cho phép người dùng gửi một dạng sóng cụ thể (chẳng hạn như mức độ hoạt động tĩnh)
trên một đầu ra trong khi phần bổ sung vẫn ở mức không hoạt động. Các khả năng khác là có cả hai
đầu ra ở mức không hoạt động hoặc cả hai đầu ra đều hoạt động và bổ sung thời gian chết.

Ghi chú: Khi chỉ OCxN được kích hoạt (CCxE=0, CCxNE=1), nó không được bổ sung và sẽ hoạt động ngay khi
OCxREF ở mức cao. Ví dụ: nếu CCxNP=0 thì OCxN=OCxRef. Mặt khác, khi cả OCx và OCxN đều được bật
(CCxE=CCxNE=1) OCx sẽ hoạt động khi OCxREF ở mức cao trong khi OCxN được bổ sung và hoạt
động khi OCxREF ở mức thấp.

14.3.12 Sử dụng chức năng ngắt

Khi sử dụng chức năng ngắt, các tín hiệu cho phép đầu ra và mức không hoạt động được sửa đổi
theo các bit điều khiển bổ sung (các bit MOE, OSSI và OSSR trong thanh ghi TIMx_BDTR, các bit OISx
và OISxN trong thanh ghi TIMx_CR2). Trong mọi trường hợp, đầu ra OCx và OCxN không thể được
đặt cả hai ở mức hoạt động tại một thời điểm nhất định. Tham khảo Bảng 83 để biết thêm chi tiết.

322/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

Nguồn ngắt có thể là chốt đầu vào ngắt hoặc sự kiện lỗi đồng hồ, được tạo bởi Hệ thống bảo mật đồng hồ
(CSS), từ Bộ điều khiển đồng hồ đặt lại. Để biết thêm thông tin về Hệ thống bảo mật đồng hồ, hãy tham
khảo Phần 7.2.7: Hệ thống bảo mật đồng hồ (CSS).

Khi thoát khỏi cài đặt lại, mạch ngắt bị vô hiệu hóa và bit MOE ở mức thấp. Người dùng có thể kích
hoạt chức năng ngắt bằng cách đặt bit BKE trong thanh ghi TIMx_BDTR. Phân cực đầu vào ngắt có thể được
chọn bằng cách định cấu hình bit BKP trong cùng một thanh ghi. BKE và BKP có thể được sửa đổi cùng một
lúc. Khi các bit BKE và BKP được ghi, độ trễ 1 chu kỳ xung nhịp APB được áp dụng trước khi việc ghi
có hiệu lực. Do đó, cần phải đợi 1 chu kỳ xung nhịp APB để đọc lại bit một cách chính xác sau thao tác
ghi.

Do cạnh xuống MOE có thể không đồng bộ nên một mạch tái đồng bộ hóa đã được chèn vào giữa tín hiệu
thực tế (tác động lên đầu ra) và bit điều khiển đồng bộ (được truy cập trong thanh ghi TIMx_BDTR). Nó
dẫn đến một số độ trễ giữa tín hiệu không đồng bộ và tín hiệu đồng bộ. Đặc biệt, nếu MOE được ghi lên 1
trong khi nó ở mức thấp thì phải chèn một độ trễ (lệnh giả) trước khi đọc chính xác. Điều này là do
người dùng ghi tín hiệu không đồng bộ nhưng lại đọc tín hiệu đồng bộ.

Khi xảy ra ngắt (mức đã chọn trên đầu vào ngắt):

• Bit MOE bị xóa không đồng bộ, đưa các đầu ra ở trạng thái không hoạt động, trạng thái không hoạt động
hoặc ở trạng thái reset (được chọn bởi bit OSSI). Tính năng này hoạt động ngay cả khi bộ dao
động MCU tắt.

• Mỗi kênh đầu ra được điều khiển với mức được lập trình trong bit OISx trong
Đăng ký TIMx_CR2 ngay khi MOE=0. Nếu OSSI=0 thì bộ định thời sẽ giải phóng đầu ra kích hoạt, nếu
không thì đầu ra kích hoạt vẫn ở mức cao.

• Khi sử dụng các đầu ra bổ sung:

– Đầu tiên các đầu ra được đặt ở trạng thái không hoạt động ở trạng thái reset (tùy thuộc vào cực tính).

Việc này được thực hiện không đồng bộ để nó hoạt động ngay cả khi không có đồng hồ nào được cung cấp cho bộ
hẹn giờ.

– Nếu đồng hồ hẹn giờ vẫn còn thì bộ tạo thời gian chết sẽ được kích hoạt lại trong
để điều khiển các đầu ra với mức được lập trình trong các bit OISx và OISxN sau thời gian
chết. Ngay cả trong trường hợp này, OCx và OCxN không thể được đưa đến mức hoạt động
cùng nhau. Lưu ý rằng do quá trình đồng bộ lại trên MOE nên thời gian chết dài hơn bình
thường một chút (khoảng 2 chu kỳ xung nhịp ck_tim).

– Nếu OSSI=0 thì bộ định thời sẽ giải phóng các đầu ra cho phép, nếu không thì các đầu ra cho
phép vẫn duy trì hoặc trở nên cao ngay khi một trong các bit CCxE hoặc CCxNE ở mức cao.

• Cờ trạng thái ngắt (bit BIF trong thanh ghi TIMx_SR) được đặt. Một ngắt có thể
được tạo nếu bit BIE trong thanh ghi TIMx_DIER được đặt. Yêu cầu DMA có thể được gửi nếu bit BDE
trong thanh ghi TIMx_DIER được đặt.
• Nếu bit AOE trong thanh ghi TIMx_BDTR được đặt, bit MOE sẽ tự động được đặt lại ở sự kiện cập
nhật tiếp theo UEV. Điều này có thể được sử dụng để thực hiện một quy định, ví dụ.
Mặt khác, MOE vẫn ở mức thấp cho đến khi nó được ghi lại vào '1'. Trong trường hợp này, nó có thể
được sử dụng để bảo mật và đầu vào ngắt có thể được kết nối với cảnh báo từ trình điều khiển nguồn, cảm
biến nhiệt hoặc bất kỳ thành phần bảo mật nào.

Ghi chú: Các đầu vào ngắt đang hoạt động theo cấp độ. Do đó, MOE không thể được thiết lập khi đầu vào ngắt
đang hoạt động (không phải tự động hay bằng phần mềm). Trong khi đó, cờ trạng thái BIF không thể xóa
được.

Việc ngắt có thể được tạo bởi đầu vào BRK có cực tính có thể lập trình và bit kích hoạt BKE trong
thanh ghi TIMx_BDTR.

RM0008 Phiên bản 21 323/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

Có hai giải pháp để tạo break:

• Bằng cách sử dụng đầu vào BRK có cực tính có thể lập trình và bit kích hoạt BKE trong thanh
ghi TIMx_BDTR

• Bằng phần mềm thông qua bit BG của thanh ghi TIMx_EGR.

Ngoài việc quản lý đầu vào và đầu ra ngắt, tính năng bảo vệ ghi đã được triển khai bên
trong mạch ngắt để bảo vệ ứng dụng. Nó cho phép đóng băng cấu hình của một số tham số
(thời gian chết, phân cực OCx/OCxN và trạng thái khi bị tắt, cấu hình OCxM, cho phép ngắt
và phân cực). Người dùng có thể chọn từ ba mức bảo vệ được chọn bởi các bit LOCK trong thanh
ghi TIMx_BDTR. Tham khảo Mục 14.4.18: Thanh ghi ngắt và thời gian chết TIM1 và TIM8
(TIMx_BDTR). Các bit LOCK chỉ có thể được ghi một lần sau khi thiết lập lại MCU.

324/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

Hình 89 cho thấy một ví dụ về hành vi của các đầu ra khi bị ngắt.

Hình 89. Hành vi đầu ra đáp lại sự ngắt quãng.

PHÁ (MOE )

OCxREF

OCx
(OCxN không được triển khai, CCxP=0, OISx=1)

OCx
(OCxN không được triển khai, CCxP=0, OISx=0)

OCx
(OCxN không được triển khai, CCxP=1, OISx=1)

OCx
(OCxN không được triển khai, CCxP=1, OISx=0)

OCx

OCxN trì hoãn trì hoãn trì hoãn

(CCxE=1, CCxP=0, OISx=0, CCxNE=1, CCxNP=0, OISxN=1)

OCx

OCxN trì hoãn trì hoãn trì hoãn

(CCxE=1, CCxP=0, OISx=1, CCxNE=1, CCxNP=1, OISxN=1)

OCx

OCxN trì hoãn

(CCxE=1, CCxP=0, OISx=0, CCxNE=0, CCxNP=0, OISxN=1)

OCx

OCxN trì hoãn

(CCxE=1, CCxP=0, OISx=1, CCxNE=0, CCxNP=0, OISxN=0)

OCx

OCxN
(CCxE=1, CCxP=0, CCxNE=0, CCxNP=0, OISx=OISxN=0 hoặc OISx=OISxN=1)

MS31098V1

RM0008 Phiên bản 21 325/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

14.3.13 Xóa tín hiệu OCxREF khi có sự kiện bên ngoài

Tín hiệu OCxREF cho một kênh nhất định có thể được điều khiển ở mức Thấp bằng cách áp dụng mức Cao
cho đầu vào ETRF (bit kích hoạt OCxCE của thanh ghi TIMx_CCMRx tương ứng được đặt thành '1'). Tín
hiệu OCxREF vẫn ở mức Thấp cho đến khi xảy ra sự kiện cập nhật tiếp theo, UEV.

Chức năng này chỉ có thể được sử dụng ở chế độ so sánh đầu ra và chế độ xung, và không hoạt động ở
chế độ bắt buộc.

Ví dụ: tín hiệu ETR có thể được kết nối với đầu ra của bộ so sánh được sử dụng để xử lý dòng điện.
Trong trường hợp này, ETR phải được cấu hình như sau:

1. Cần tắt Bộ chia tỷ lệ kích hoạt bên ngoài: các bit ETPS[1:0] của thanh ghi TIMx_SMCR được đặt
thành '00'.

2. Chế độ đồng hồ bên ngoài 2 phải bị tắt: bit ECE của thanh ghi TIMx_SMCR được đặt thành
'0'.

3. Phân cực kích hoạt bên ngoài (ETP) và Bộ lọc kích hoạt bên ngoài (ETF) có thể
được cấu hình theo nhu cầu của người dùng.

Hình 90 cho thấy hành vi của tín hiệu OCxREF khi Đầu vào ETRF trở thành Cao, đối với cả hai giá trị
của bit kích hoạt OCxCE. Trong ví dụ này, bộ định thời TIMx được lập trình ở chế độPWM.

Hình 90. Xóa TIMx OCxREF

(CCRx)

Bộ đếm (CNT)

ETRF

OCxREF (OCxCE = '0')

OCxREF (OCxCE = '1')

ETFF trở nên cao ERF vẫn cao


MSv35889V1

326/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

14.3.14 Tạo xung 6 bước

Khi các đầu ra bổ sung được sử dụng trên một kênh, các bit tải trước có sẵn trên các
bit OCxM, CCxE và CCxNE. Các bit tải trước được chuyển tới các bit tối tại sự kiện chuyển
mạch COM. Do đó, người dùng có thể lập trình trước cấu hình cho bước tiếp theo và thay đổi
cấu hình của tất cả các kênh cùng một lúc. COM có thể được tạo bằng phần mềm bằng cách đặt
bit COM trong thanh ghi TIMx_EGR hoặc bằng phần cứng (trên cạnh lên TRGI).

Cờ được đặt khi sự kiện COM xảy ra (bit COMIF trong thanh ghi TIMx_SR), có thể tạo ra ngắt
(nếu bit COMIE được đặt trong thanh ghi TIMx_DIER) hoặc yêu cầu DMA (nếu bit COMDE được đặt
trong thanh ghi TIMx_DIER ).

Hình 91 mô tả hành vi của đầu ra OCx và OCxN khi xảy ra sự kiện COM, trong 3 ví dụ khác nhau
về cấu hình được lập trình.

Hình 91. Ví dụ về tạo 6 bước, COM (OSSR=1)

RM0008 Phiên bản 21 327/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

14.3.15 Chế độ một xung

Chế độ một xung (OPM) là trường hợp cụ thể của các chế độ trước đó. Nó cho phép bộ đếm được khởi động
để đáp ứng với kích thích và tạo ra xung có độ dài có thể lập trình sau độ trễ được lập trình.

Việc khởi động bộ đếm có thể được điều khiển thông qua bộ điều khiển chế độ phụ. Việc tạo dạng sóng
có thể được thực hiện ở chế độ so sánh đầu ra hoặc chế độPWM. Chọn chế độ Một xung bằng cách đặt bit
OPM trong thanh ghi TIMx_CR1. Điều này làm cho bộ đếm tự động dừng ở sự kiện cập nhật tiếp theo UEV.

Một xung chỉ có thể được tạo chính xác nếu giá trị so sánh khác với giá trị ban đầu của bộ đếm.
Trước khi bắt đầu (khi bộ hẹn giờ đang chờ kích hoạt), cấu hình phải là:

• Trong đếm ngược: CNT < CCRx ARR (cụ thể là 0 < CCRx)
• Đang đếm ngược: CNT > CCRx

Hình 92. Ví dụ về chế độ một xung.

TI2

OC1REF

OC1

TIM1_ARR

TIM1_CCR1
yề
h
n ầi
n ut
í Q

0
t
tDELAY tPULSE
MS31099V2

Ví dụ: người dùng có thể muốn tạo xung dương trên OC1 với độ dài tPULSE
và sau độ trễ tDELAY ngay khi phát hiện thấy cạnh dương trên chân đầu vào TI2.

Hãy sử dụng TI2FP2 làm trình kích hoạt 1:

• Ánh xạ TI2FP2 tới TI2 bằng cách viết CC2S='01' vào thanh ghi TIMx_CCMR1.

• TI2FP2 phải phát hiện cạnh lên, ghi CC2P='0' vào thanh ghi TIMx_CCER.

• Định cấu hình TI2FP2 làm trình kích hoạt cho bộ điều khiển chế độ nô lệ (TRGI) bằng cách ghi TS='110'
vào thanh ghi TIMx_SMCR.

• TI2FP2 được sử dụng để khởi động bộ đếm bằng cách viết SMS tới '110' trong thanh ghi TIMx_SMCR
(chế độ kích hoạt).

Dạng sóng OPM được xác định bằng cách ghi các thanh ghi so sánh (có tính đến tần số xung nhịp và
bộ đếm trước bộ đếm).

• tDELAY được xác định bởi giá trị được ghi trong thanh ghi TIMx_CCR1.

• tPULSE được xác định bởi sự khác biệt giữa giá trị tự động tải lại và giá trị so sánh (TIMx_ARR -
TIMx_CCR1).

• Giả sử người dùng muốn xây dựng một dạng sóng có sự chuyển đổi từ '0' sang '1' khi xảy ra sự so
sánh so sánh và chuyển đổi từ '1' sang '0' khi bộ đếm đạt tới

328/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

giá trị tự động tải lại. Để thực hiện việc này, hãy bật chế độPWM 2 bằng cách ghi
OC1M=111 vào thanh ghi TIMx_CCMR1. Người dùng có thể tùy chọn kích hoạt các thanh ghi tải
trước bằng cách viết OC1PE='1' vào thanh ghi TIMx_CCMR1 và ARPE trong thanh ghi TIMx_CR1.
Trong trường hợp này, giá trị so sánh phải được ghi vào thanh ghi TIMx_CCR1, giá trị tự
động tải lại trong thanh ghi TIMx_ARR, tạo bản cập nhật bằng cách đặt bit UG và chờ sự kiện
kích hoạt bên ngoài trên TI2. CC1P được ghi vào '0' trong ví dụ này.

Trong ví dụ của chúng tôi, các bit DIR và CMS trong thanh ghi TIMx_CR1 phải ở mức thấp.

Người dùng chỉ muốn một xung (Chế độ đơn), vì vậy '1' phải được ghi vào bit OPM trong thanh ghi
TIMx_CR1 để dừng bộ đếm ở sự kiện cập nhật tiếp theo (khi bộ đếm chuyển từ giá trị tự động tải lại
về 0 ). Khi bit OPM trong thanh ghi TIMx_CR1 được đặt thành '0', thì Chế độ lặp lại được chọn.

Trường hợp cụ thể: Kích hoạt nhanh OCx:

Ở chế độ Một xung, tính năng phát hiện cạnh trên đầu vào TIx sẽ đặt bit CEN để bật bộ đếm. Sau
đó, việc so sánh giữa bộ đếm và giá trị so sánh sẽ làm cho đầu ra chuyển đổi. Nhưng cần có
một số chu kỳ xung nhịp cho các hoạt động này và nó giới hạn độ trễ tối thiểu tDELAY phút mà
chúng ta có thể nhận được.

Nếu người dùng muốn xuất ra dạng sóng có độ trễ tối thiểu thì phải đặt bit OCxFE trong thanh
ghi TIMx_CCMRx. Sau đó, OCxRef (và OCx) bị buộc phải đáp lại kích thích mà không tính đến sự so
sánh. Cấp độ mới của nó giống như khi một trận đấu so sánh đã xảy ra. OCxFE chỉ hoạt động nếu kênh
được cấu hình ở chế độPWM1 hoặcPWM2.

14.3.16 Chế độ giao diện bộ mã hóa

Để chọn chế độ Giao diện bộ mã hóa, hãy ghi SMS='001' vào thanh ghi TIMx_SMCR nếu bộ đếm chỉ
đếm trên các cạnh TI2, SMS='010' nếu nó chỉ đếm trên các cạnh TI1 và SMS='011' nếu nó đếm trên
cả hai cạnh TI1 và TI2.

Chọn cực TI1 và TI2 bằng cách lập trình các bit CC1P và CC2P trong thanh ghi TIMx_CCER. Khi cần,
người dùng cũng có thể lập trình bộ lọc đầu vào.

Hai đầu vào TI1 và TI2 được sử dụng để giao tiếp với bộ mã hóa gia tăng. Tham khảo Bảng 81.
Bộ đếm được bấm giờ theo từng chuyển đổi hợp lệ trên TI1FP1 hoặc TI2FP2 (TI1 và TI2 sau khi chọn
bộ lọc đầu vào và phân cực, TI1FP1=TI1 nếu không được lọc và không bị đảo ngược,
TI2FP2=TI2 nếu không được lọc và không bị đảo ngược) giả sử rằng nó được kích hoạt (bit
CEN trong thanh ghi TIMx_CR1 được ghi vào '1'). Trình tự chuyển đổi của hai đầu vào được đánh giá
và tạo ra các xung đếm cũng như tín hiệu hướng. Tùy thuộc vào trình tự bộ đếm đếm lên hoặc xuống,
bit DIR trong thanh ghi TIMx_CR1 được sửa đổi bằng phần cứng cho phù hợp. Bit DIR được tính ở
mỗi lần chuyển đổi trên bất kỳ đầu vào nào (TI1 hoặc TI2), bất kể bộ đếm chỉ đếm trên TI1, chỉ TI2
hoặc cả TI1 và TI2.

Chế độ giao diện bộ mã hóa hoạt động đơn giản như một đồng hồ bên ngoài với chức năng chọn
hướng. Điều này có nghĩa là bộ đếm chỉ đếm liên tục trong khoảng từ 0 đến giá trị tự động tải lại
trong thanh ghi TIMx_ARR (0 đến ARR hoặc ARR xuống 0 tùy theo hướng). Vì vậy người dùng phải cấu
hình TIMx_ARR trước khi bắt đầu. theo cách tương tự, các tính năng chụp, so sánh, đặt tỷ lệ
trước, bộ đếm lặp lại, đầu ra kích hoạt tiếp tục hoạt động như bình thường. Chế độ bộ mã hóa và
Chế độ đồng hồ bên ngoài 2 không tương thích và không được chọn cùng nhau.

Ở chế độ này, bộ đếm được sửa đổi tự động theo tốc độ và hướng của bộ mã hóa gia tăng và nội dung
của nó, do đó luôn thể hiện vị trí của bộ mã hóa. Hướng đếm tương ứng với hướng quay của
cảm biến được kết nối.

RM0008 Phiên bản 21 329/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

Bảng 81 tóm tắt các kết hợp có thể xảy ra, giả sử TI1 và TI2 không chuyển đổi cùng lúc.

Bảng 81. Hướng đếm so với tín hiệu bộ mã hóa

tín hiệu TI1FP1 tín hiệu TI2FP2


Tích cực Mức tín hiệu ngược lại
bờ rìa (TI1FP1 cho TI2, TI2FP2 cho TI1)
Trỗi dậy Rơi Trỗi dậy Rơi

Cao Xuống Không đếm Không đếm


Đếm tiếp
Hướng lên

chỉ TI1 Thấp Xuống Không đếm Không đếm


Hướng lên

Cao Không đếm Không đếm Xuống


Đếm tiếp
Hướng lên

chỉ TI2 Thấp Không đếm Không đếm Xuống Hướng lên

Cao Xuống Xuống


Đếm tiếp
Hướng lên Hướng lên

TI1 và TI2
Thấp Hướng lên
Xuống Xuống Hướng lên

Bộ mã hóa gia tăng bên ngoài có thể được kết nối trực tiếp với MCU mà không cần logic giao
diện bên ngoài. Tuy nhiên, bộ so sánh thường được sử dụng để chuyển đổi đầu ra vi sai
của bộ mã hóa thành tín hiệu số. Điều này làm tăng đáng kể khả năng chống ồn. Đầu ra bộ
mã hóa thứ ba chỉ ra vị trí số 0 cơ học, có thể được kết nối với đầu vào ngắt bên ngoài
và kích hoạt thiết lập lại bộ đếm.

Hình 93 đưa ra một ví dụ về hoạt động của bộ đếm, thể hiện việc tạo tín hiệu đếm và điều
khiển hướng. Nó cũng cho thấy cách bù jitter đầu vào khi cả hai cạnh được chọn. Điều
này có thể xảy ra nếu cảm biến được đặt gần một trong các điểm chuyển mạch. Đối với ví dụ này,
chúng tôi giả định rằng cấu hình như sau:

• CC1S='01' (thanh ghi TIMx_CCMR1, TI1FP1 được ánh xạ trên TI1).

• CC2S='01' (thanh ghi TIMx_CCMR2, TI1FP2 được ánh xạ trên TI2).

• CC1P='0', và IC1F = '0000' (thanh ghi TIMx_CCER, TI1FP1 không đảo, TI1FP1=TI1).

• CC2P='0', và IC2F = '0000' (thanh ghi TIMx_CCER, TI1FP2 không đảo, TI1FP2=
TI2).

• SMS='011' (thanh ghi TIMx_SMCR, cả hai đầu vào đều hoạt động cả khi tăng và giảm
các cạnh).

• CEN='1' (thanh ghi TIMx_CR1, bộ đếm được bật).

330/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

Hình 93. Ví dụ về hoạt động của bộ đếm trong chế độ giao diện bộ mã hóa.

phía trước sự bồn chồn


phía sau sự bồn chồn
phía trước

TI1

TI2

Quầy tính tiền

hướng lên
xuống hướng lên

MS33107V1

Hình 94 đưa ra một ví dụ về hoạt động của bộ đếm khi đảo cực TI1FP1 (cấu hình tương tự như
trên ngoại trừ CC1P='1').

Hình 94. Ví dụ về chế độ giao diện bộ mã hóa với cực TI1FP1 bị đảo ngược.

phía trước sự bồn chồn


phía sau sự bồn chồn
phía trước

TI1

TI2

Quầy tính tiền

xuống hướng lên


xuống

MS33108V1

Bộ hẹn giờ khi được định cấu hình ở chế độ Giao diện bộ mã hóa sẽ cung cấp thông tin về vị trí
hiện tại của cảm biến. Người dùng có thể lấy thông tin động (tốc độ, khả năng tăng
tốc, giảm tốc) bằng cách đo khoảng thời gian giữa hai sự kiện bộ mã hóa bằng cách sử dụng bộ
hẹn giờ thứ hai được định cấu hình ở chế độ chụp. Đầu ra của bộ mã hóa cho biết điểm 0 cơ học có
thể được sử dụng cho mục đích này. Tùy thuộc vào thời gian giữa hai sự kiện, bộ đếm cũng có thể
được đọc vào thời gian thông thường. Điều này có thể được thực hiện bằng cách chốt giá trị
bộ đếm vào thanh ghi thu thập đầu vào thứ ba nếu có (khi đó tín hiệu thu phải theo chu kỳ
và có thể được tạo bởi bộ đếm thời gian khác). khi khả dụng, bạn cũng có thể đọc giá trị của
nó thông qua yêu cầu DMA do đồng hồ thời gian thực tạo ra.

RM0008 Phiên bản 21 331/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

14.3.17 Chức năng XOR đầu vào hẹn giờ

Bit TI1S trong thanh ghi TIMx_CR2, cho phép bộ lọc đầu vào của kênh 1 được kết nối với đầu ra của cổng XOR,
kết hợp ba chân đầu vào TIMx_CH1, TIMx_CH2 và TIMx_CH3.

Đầu ra XOR có thể được sử dụng với tất cả các chức năng đầu vào hẹn giờ như kích hoạt hoặc chụp đầu
vào. Một ví dụ về tính năng này được sử dụng để giao tiếp với cảm biến Hall được đưa ra
trong Phần 14.3.18.

14.3.18 Giao tiếp với cảm biến Hall

Việc này được thực hiện bằng cách sử dụng bộ định thời điều khiển nâng cao (TIM1 hoặc TIM8) để tạo tín hiệu
điều khiển động cơ và bộ định thời khác TIMx (TIM2, TIM3, TIM4 hoặc TIM5) được gọi là “bộ định
thời giao tiếp” trong Hình 95 . ” chụp 3 chân đầu vào hẹn giờ (TIMx_CH1, TIMx_CH2 và TIMx_CH3) được
kết nối qua XOR với kênh đầu vào TI1 (được chọn bằng cách đặt bit TI1S trong thanh ghi TIMx_CR2).

Bộ điều khiển chế độ phụ được cấu hình ở chế độ đặt lại; đầu vào phụ là TI1F_ED. Do đó, mỗi khi một
trong 3 đầu vào chuyển đổi, bộ đếm sẽ khởi động lại việc đếm từ 0. Điều này tạo ra cơ sở thời gian được
kích hoạt bởi bất kỳ thay đổi nào trên đầu vào Hall.

Trên “bộ hẹn giờ giao tiếp”, kênh thu/so sánh 1 được cấu hình ở chế độ thu, tín hiệu thu là TRC
(xem Hình 78). Giá trị được ghi lại, tương ứng với thời gian trôi qua giữa 2 lần thay đổi đầu vào, cung
cấp thông tin về tốc độ động cơ.

Có thể sử dụng “bộ hẹn giờ giao tiếp” ở chế độ đầu ra để tạo xung làm thay đổi cấu hình các kênh của bộ
hẹn giờ điều khiển nâng cao (TIM1 hoặc TIM8) (bằng cách kích hoạt sự kiện COM). Bộ định thời TIM1 được sử
dụng để tạo tín hiệu điều khiển động cơ. Để thực hiện điều này, kênh hẹn giờ giao tiếp phải được lập trình
sao cho xung dương được tạo ra sau độ trễ được lập trình (ở chế độ so sánh đầu ra hoặc chế độPWM).
Xung này được gửi đến bộ hẹn giờ điều khiển nâng cao (TIM1 hoặc TIM8) thông qua đầu ra TRGO.

Ví dụ: người dùng muốn thay đổi cấu hìnhPWM của bộ định thời điều khiển nâng cao TIM1 sau một khoảng trễ
được lập trình mỗi khi có thay đổi xảy ra trên đầu vào Hall được kết nối với một trong các bộ định thời
TIMx.

• Cấu hình 3 đầu vào hẹn giờ ORed vào kênh đầu vào TI1 bằng cách ghi bit TI1S vào
TIMx_CR2 đăng ký thành '1',

• Lập trình cơ sở thời gian: ghi TIMx_ARR vào giá trị lớn nhất (bộ đếm phải
bị xóa bởi sự thay đổi TI1. Đặt bộ đếm gộp trước để có khoảng thời gian đếm tối đa dài hơn thời gian
giữa 2 lần thay đổi trên cảm biến,

• Lập trình kênh 1 ở chế độ chụp (TRC đã chọn): ghi các bit CC1S vào
TIMx_CCMR1 đăng ký vào '11'. Người dùng cũng có thể lập trình bộ lọc kỹ thuật số nếu cần,

• Lập trình kênh 2 ở chế độPWM 2 với độ trễ mong muốn: ghi các bit OC2M vào '111' và các bit CC2S vào '00'
trong thanh ghi TIMx_CCMR1,

• Chọn OC2REF làm đầu ra kích hoạt trên TRGO: ghi các bit MMS trong thanh ghi TIMx_CR2 vào '101',

Trong bộ hẹn giờ điều khiển nâng cao TIM1, đầu vào ITR bên phải phải được chọn làm đầu vào kích hoạt, bộ
hẹn giờ được lập trình để tạo tín hiệuPWM, tín hiệu điều khiển chụp/so sánh được tải trước (CCPC=1
trong thanh ghi TIMx_CR2) và sự kiện COM được được điều khiển bởi đầu vào kích hoạt (CCUS=1 trong
thanh ghi TIMx_CR2). Các bit điều khiển PLC (CCxE, OCxM) được ghi sau sự kiện COM cho bước tiếp theo (điều
này có thể được thực hiện trong chương trình con ngắt được tạo bởi cạnh lên của OC2REF).

332/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

Hình 95 mô tả ví dụ này.

Hình 95. Ví dụ về giao diện cảm biến Hall

TIH1

TIH2

TIH3
oế
p ni

a ẹt
H
g

Bộ đếm (CNT)

(CCR2)

CCR1 C7A3 C7A8 C794 C7A5 C7AB C796

TRGO=OC2REF

COM

OC1

OC1N

OC2

OC2N
uo
ng
ể ờa

i
n ộc

i
h
â B
h
g
đ
k
n

OC3

OC3N

Viết CCxE, CCxNE


và OCxM cho bước tiếp theo

ai17335b

RM0008 Phiên bản 21 333/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

14.3.19 TIMx và đồng bộ hóa kích hoạt bên ngoài

Bộ hẹn giờ TIMx có thể được đồng bộ hóa với bộ kích hoạt bên ngoài ở một số chế độ: Chế độ đặt lại,
chế độ Kiểm soát và chế độ Kích hoạt.

Chế độ nô lệ: Chế độ đặt lại

Bộ đếm và bộ đếm gộp trước của nó có thể được khởi tạo lại để phản hồi một sự kiện trên đầu vào kích hoạt.
Hơn nữa, nếu bit URS từ thanh ghi TIMx_CR1 ở mức thấp thì một sự kiện cập nhật UEV sẽ được
tạo ra. Sau đó tất cả các thanh ghi được tải trước (TIMx_ARR, TIMx_CCRx) đều được cập nhật.

Trong ví dụ sau, bộ đếm ngược bị xóa để phản hồi cạnh tăng trên đầu vào TI1:

• Cấu hình kênh 1 để phát hiện các cạnh lên trên TI1. Định cấu hình thời lượng bộ lọc đầu vào (trong
ví dụ này, chúng tôi không cần bất kỳ bộ lọc nào, vì vậy chúng tôi giữ IC1F=0000). Bộ
chia tỷ lệ chụp trước không được sử dụng để kích hoạt nên không cần phải định cấu hình nó.
Các bit CC1S chỉ chọn nguồn chụp đầu vào, CC1S = 01 trong thanh ghi TIMx_CCMR1. Viết CC1P=0
vào thanh ghi TIMx_CCER để xác thực cực tính (và chỉ phát hiện các cạnh lên).

• Cấu hình bộ đếm thời gian ở chế độ reset bằng cách viết SMS=100 vào thanh ghi TIMx_SMCR. Chọn TI1
làm nguồn đầu vào bằng cách ghi TS=101 vào thanh ghi TIMx_SMCR.
• Bắt đầu bộ đếm bằng cách ghi CEN=1 vào thanh ghi TIMx_CR1.

Bộ đếm bắt đầu đếm theo đồng hồ bên trong, sau đó hoạt động bình thường cho đến cạnh tăng TI1.
Khi TI1 tăng, bộ đếm sẽ bị xóa và khởi động lại từ 0. Trong khi đó, cờ kích hoạt được đặt (bit
TIF trong thanh ghi TIMx_SR) và yêu cầu ngắt hoặc yêu cầu DMA có thể được gửi nếu được bật
(tùy thuộc vào TIE và Các bit TDE trong thanh ghi TIMx_DIER).

Hình dưới đây cho thấy hành vi này khi thanh ghi tự động tải lại TIMx_ARR=0x36.
Độ trễ giữa cạnh tăng trên TI1 và thời điểm reset thực tế của bộ đếm là do mạch tái đồng bộ hóa
trên đầu vào TI1.

Hình 96. Mạch điều khiển ở chế độ reset

TI1

UG

Đồng hồ đếm = CK_CNT = CK_PSC

quầy đăng ký 30 31 32 33 34 35 36 00 01 02 03 00 01 02 03

TIF
MS31401V3

334/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

Chế độ nô lệ: Chế độ kiểm soát

Bộ đếm có thể được kích hoạt tùy thuộc vào mức đầu vào được chọn.

Trong ví dụ sau, bộ đếm ngược chỉ đếm khi đầu vào TI1 ở mức thấp:

• Cấu hình kênh 1 để phát hiện mức thấp trên TI1. Định cấu hình thời lượng bộ lọc đầu vào (trong
ví dụ này, chúng tôi không cần bất kỳ bộ lọc nào, vì vậy chúng tôi giữ IC1F=0000). Bộ
chia tỷ lệ chụp trước không được sử dụng để kích hoạt nên người dùng không cần phải
định cấu hình nó. Các bit CC1S chỉ chọn nguồn chụp đầu vào, CC1S=01 trong thanh ghi TIMx_CCMR1.
Viết CC1P=1 vào thanh ghi TIMx_CCER để xác nhận cực tính (và chỉ phát hiện mức thấp).

• Định cấu hình bộ hẹn giờ ở chế độ kiểm soát bằng cách viết SMS=101 vào thanh ghi TIMx_SMCR. Chọn
TI1 làm nguồn đầu vào bằng cách ghi TS=101 vào thanh ghi TIMx_SMCR.

• Kích hoạt bộ đếm bằng cách ghi CEN=1 vào thanh ghi TIMx_CR1 (ở chế độ kiểm soát, bộ đếm không
khởi động nếu CEN=0, bất kể mức đầu vào kích hoạt là gì).

Bộ đếm bắt đầu đếm trên đồng hồ bên trong miễn là TI1 ở mức thấp và dừng ngay khi TI1 ở mức cao. Cờ
TIF trong thanh ghi TIMx_SR được đặt cả khi bộ đếm bắt đầu hoặc dừng.

Độ trễ giữa cạnh tăng trên TI1 và điểm dừng thực tế của bộ đếm là do mạch tái đồng bộ hóa trên
đầu vào TI1.

Hình 97. Mạch điều khiển ở chế độ cổng

TI1

CNT_EN

Đồng hồ đếm = ck_cnt = ck_psc

quầy đăng ký 30 31 32 33 34 35 36 37 38

TIF

Viết TIF=0
MS31402V3

RM0008 Phiên bản 21 335/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

Chế độ nô lệ: Chế độ kích hoạt

Bộ đếm có thể bắt đầu phản hồi một sự kiện trên đầu vào đã chọn.

Trong ví dụ sau, bộ đếm ngược bắt đầu phản hồi cạnh tăng trên đầu vào TI2:

• Cấu hình kênh 2 để phát hiện các cạnh lên trên TI2. Định cấu hình thời lượng bộ lọc đầu vào (trong ví dụ
này, chúng tôi không cần bất kỳ bộ lọc nào, vì vậy chúng tôi giữ IC2F=0000). Bộ chia tỷ lệ chụp
trước không được sử dụng để kích hoạt nên không cần phải định cấu hình nó. Các bit CC2S được cấu
hình để chỉ chọn nguồn chụp đầu vào, CC2S=01 trong thanh ghi TIMx_CCMR1. Viết CC2P=1 vào thanh
ghi TIMx_CCER để xác nhận cực tính (và chỉ phát hiện mức thấp).

• Định cấu hình bộ hẹn giờ ở chế độ kích hoạt bằng cách viết SMS=110 vào thanh ghi TIMx_SMCR. Chọn TI2 làm
nguồn đầu vào bằng cách ghi TS=110 vào thanh ghi TIMx_SMCR.

Khi cạnh tăng xảy ra trên TI2, bộ đếm bắt đầu đếm trên đồng hồ bên trong và cờ TIF được đặt.

Độ trễ giữa cạnh tăng trên TI2 và thời điểm bắt đầu thực tế của bộ đếm là do mạch tái đồng bộ hóa trên đầu
vào TI2.

Hình 98. Mạch điều khiển ở chế độ trigger

TI2

CNT_EN

Đồng hồ đếm = ck_cnt = ck_psc

quầy đăng ký 34 35 36 37 38

TIF

MS31403V2

Chế độ nô lệ: chế độ đồng hồ bên ngoài 2 + chế độ kích hoạt

Chế độ đồng hồ bên ngoài 2 có thể được sử dụng cùng với chế độ phụ khác (ngoại trừ chế độ đồng hồ bên ngoài
1 và chế độ bộ mã hóa). Trong trường hợp này, tín hiệu ETR được sử dụng làm đầu vào đồng hồ bên ngoài và
đầu vào khác có thể được chọn làm đầu vào kích hoạt (ở chế độ đặt lại, chế độ kiểm soát hoặc chế độ kích
hoạt). Không nên chọn ETR làm TRGI thông qua các bit TS của thanh ghi TIMx_SMCR.

Trong ví dụ sau, bộ đếm ngược được tăng lên ở mỗi cạnh tăng của tín hiệu ETR ngay khi cạnh tăng của
TI1 xảy ra:

1. Cấu hình mạch đầu vào kích hoạt bên ngoài bằng cách lập trình thanh ghi TIMx_SMCR như
sau:

– ETF = 0000: không có bộ lọc

– ETPS = 00: bộ đếm gộp trước bị vô hiệu hóa

– ETP = 0: phát hiện các cạnh tăng trên ETR và ECE=1 để kích hoạt đồng hồ bên ngoài
chế độ 2.

2. Cấu hình kênh 1 như sau để phát hiện các cạnh lên trên TI: – IC1F=0000: không

có bộ lọc.

– Bộ chia tỷ lệ chụp trước không được sử dụng để kích hoạt và không cần phải có
được cấu hình.

– CC1S=01 trong thanh ghi TIMx_CCMR1 để chỉ chọn nguồn chụp đầu vào

336/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

– CC1P=0 trong thanh ghi TIMx_CCER để xác nhận cực tính (và phát hiện cạnh lên
chỉ một).

3. Định cấu hình bộ hẹn giờ ở chế độ kích hoạt bằng cách viết SMS=110 vào thanh ghi TIMx_SMCR.
Chọn TI1 làm nguồn đầu vào bằng cách ghi TS=101 vào thanh ghi TIMx_SMCR.

Cạnh tăng trên TI1 cho phép bộ đếm và đặt cờ TIF. Bộ đếm sau đó đếm trên các cạnh tăng ETR.

Độ trễ giữa cạnh lên của tín hiệu ETR và thiết lập lại thực tế của bộ đếm là do mạch tái đồng
bộ hóa trên đầu vào ETRP.

Hình 99. Mạch điều khiển ở chế độ xung nhịp ngoài 2 + chế độ trigger

TI1

CEN/CNT_EN

ETR

Đồng hồ đếm = CK_CNT = CK_PSC

quầy đăng ký 34 35 36

TIF

MS33110V1

14.3.20 Đồng bộ hóa bộ hẹn giờ

Các bộ định thời TIM được liên kết nội bộ với nhau để đồng bộ hóa hoặc tạo chuỗi. Tham khảo
Phần 15.3.15: Đồng bộ hóa bộ hẹn giờ để biết chi tiết.

Ghi chú: Đồng hồ của bộ định thời phụ phải được bật trước khi nhận các sự kiện từ bộ định thời chính
và không được thay đổi nhanh chóng trong khi nhận được kích hoạt từ bộ định thời chính.

14.3.21 Chế độ gỡ lỗi

Khi bộ vi điều khiển chuyển sang chế độ gỡ lỗi ( lõi Cortex®-M3 tạm dừng), bộ đếm TIMx tiếp
tục hoạt động bình thường hoặc dừng, tùy thuộc vào bit cấu hình DBG_TIMx_STOP trong mô-đun
DBG. Để biết thêm chi tiết, hãy tham khảo Phần 31.16.2: Hỗ trợ gỡ lỗi cho bộ hẹn giờ, cơ
quan giám sát, bxCAN và I2C.

Vì mục đích an toàn, khi bộ đếm dừng lại (DBG_TIMx_STOP = 1 trong thanh ghi
DBGMCU_APBx_FZ), các đầu ra bị vô hiệu hóa (như thể bit MOE đã được đặt lại). Các đầu ra có
thể bị buộc ở trạng thái không hoạt động (bit OSI = 1) hoặc được bộ điều khiển GPIO (bit OSSI
= 0) kiểm soát để buộc chúng chuyển sang Hi-Z.

RM0008 Phiên bản 21 337/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

14.4 Thanh ghi TIM1 và TIM8


Tham khảo Phần 2.2 để biết danh sách các từ viết tắt được sử dụng trong mô tả thanh ghi.

Các thanh ghi ngoại vi có thể được truy cập bằng nửa từ (16 bit) hoặc từ (32 bit).

14.4.1 Thanh ghi điều khiển TIM1 và TIM8 1 (TIMx_CR1)

Độ lệch địa chỉ: 0x00

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CKD[1:0] ARPE CMS[1:0] DIR OPM URS UDIS CEN


Kín đáo
rw rw rw rw rw rw rw rw rw rw

Bit 15:10 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 9:8 CKD[1:0]: Phân chia đồng hồ

Trường bit này biểu thị tỷ lệ phân chia giữa tần số đồng hồ hẹn giờ (CK_INT) và thời gian chết và đồng hồ

lấy mẫu (tDTS) được sử dụng bởi bộ tạo thời gian chết và bộ lọc kỹ thuật số.
(ETR, TIx),

00: tDTS=tCK_INT
01: tDTS=2*tCK_INT
10: tDTS=4*tCK_INT
11: Reserved, không lập trình giá trị này

Bit 7 ARPE: Cho phép tải trước tự động tải lại

0: Thanh ghi TIMx_ARR không được đệm


1: Thanh ghi TIMx_ARR được lưu vào bộ đệm

Bits 6:5 CMS[1:0]: Lựa chọn chế độ căn giữa

00: Chế độ căn lề. Bộ đếm đếm lên hoặc xuống tùy thuộc vào bit hướng (DIR).

01: Chế độ căn giữa 1. Bộ đếm đếm lên xuống luân phiên. Cờ ngắt so sánh đầu ra của các kênh được cấu hình
ở đầu ra (CCxS=00 trong thanh ghi TIMx_CCMRx) chỉ được đặt khi bộ đếm đang đếm ngược.

10: Chế độ căn giữa 2. Bộ đếm đếm lên xuống luân phiên. Cờ ngắt so sánh đầu ra của các kênh được cấu hình
ở đầu ra (CCxS=00 trong thanh ghi TIMx_CCMRx) chỉ được đặt khi bộ đếm đang đếm lên.

11: Chế độ căn giữa 3. Bộ đếm đếm lên xuống luân phiên. Cờ ngắt so sánh đầu ra của các kênh được cấu hình
ở đầu ra (CCxS=00 trong thanh ghi TIMx_CCMRx) được đặt cả khi bộ đếm đang đếm lên hoặc xuống.

Lưu ý: Không được phép chuyển từ chế độ căn lề sang chế độ căn giữa khi bộ đếm đang được bật (CEN=1)

Bit 4 TRỰC TIẾP: Hướng

0: Bộ đếm được sử dụng làm bộ đếm ngược


1: Bộ đếm được sử dụng làm bộ đếm ngược

Lưu ý: Bit này chỉ được đọc khi bộ hẹn giờ được cấu hình ở chế độ Căn giữa hoặc Bộ mã hóa
cách thức.

Bit 3 OPM: Chế độ một xung

0: Bộ đếm không dừng ở sự kiện cập nhật


1: Bộ đếm dừng đếm ở sự kiện cập nhật tiếp theo (xóa bit CEN)

338/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

Bit 2 URS: Cập nhật nguồn yêu cầu

Bit này được thiết lập và xóa bằng phần mềm để chọn nguồn sự kiện UEV.

0: Bất kỳ sự kiện nào sau đây đều tạo ra ngắt cập nhật hoặc yêu cầu DMA nếu được bật.
Những sự kiện này có thể là:

– Bộ đếm tràn/tràn

– Thiết lập bit UG

– Cập nhật thế hệ thông qua bộ điều khiển chế độ phụ

1: Chỉ tràn/tràn bộ đếm mới tạo ra ngắt cập nhật hoặc yêu cầu DMA nếu được bật.

Bit 1 UDIS: Vô hiệu hóa cập nhật

Bit này được thiết lập và xóa bằng phần mềm để bật/tắt việc tạo sự kiện UEV.

0: Đã bật UEV. Sự kiện Cập nhật (UEV) được tạo bởi một trong các sự kiện sau:

– Bộ đếm tràn/tràn

– Thiết lập bit UG

– Cập nhật thế hệ thông qua bộ điều khiển chế độ phụ

Các thanh ghi đệm sau đó được tải với các giá trị tải trước của chúng.

1: UEV bị vô hiệu hóa. Sự kiện Cập nhật không được tạo, các thanh ghi ẩn giữ nguyên giá trị của chúng
(ARR, PSC, CCRx). Tuy nhiên, bộ đếm và bộ đếm gộp trước được khởi tạo lại nếu bit UG được đặt hoặc nếu
nhận được thiết lập lại phần cứng từ bộ điều khiển chế độ phụ.

Bit 0 CEN: Cho phép bộ đếm

0: Bộ đếm bị vô hiệu hóa

1: Đã bật bộ đếm

Lưu ý: Đồng hồ bên ngoài, chế độ kiểm soát và chế độ bộ mã hóa chỉ có thể hoạt động nếu bit CEN đã được cài
đặt trước đó bằng phần mềm. Tuy nhiên, chế độ kích hoạt có thể tự động đặt bit CEN bằng phần cứng.

14.4.2 Thanh ghi điều khiển TIM1 và TIM8 2 (TIMx_CR2)

Độ lệch địa chỉ: 0x04

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

OIS4 OIS3N OIS3 OIS2N OIS2 OIS1N OIS1 TI1S MMS[2:0] CCDS CCUS CCPC
Res. Res.
rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 14 OIS4: Trạng thái không hoạt động đầu ra 4 (đầu ra OC4)

tham khảo bit OIS1

Bit 13 OIS3N: Đầu ra trạng thái không hoạt động 3 (đầu ra OC3N)

tham khảo bit OIS1N

Bit 12 OIS3: Trạng thái không hoạt động đầu ra 3 (đầu ra OC3)

tham khảo bit OIS1

Bit 11 OIS2N: Trạng thái nhàn rỗi đầu ra 2 (đầu ra OC2N)

tham khảo bit OIS1N

Bit 10 OIS2: Trạng thái nhàn rỗi đầu ra 2 (đầu ra OC2)

tham khảo bit OIS1

RM0008 Phiên bản 21 339/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

Bit 9 OIS1N: Trạng thái nhàn rỗi đầu ra 1 (đầu ra OC1N)

0: OC1N=0 sau thời gian chết khi MOE=0

1: OC1N=1 sau thời gian chết khi MOE=0

Lưu ý: Bit này không thể sửa đổi miễn là LOCK cấp 1, 2 hoặc 3 đã được lập trình
(Các bit LOCK trong thanh ghi TIMx_BDTR).

Bit 8 OIS1: Trạng thái không hoạt động đầu ra 1 (đầu ra OC1)

0: OC1=0 (sau thời gian chết nếu OC1N được triển khai) khi MOE=0
1: OC1=1 (sau thời gian chết nếu OC1N được triển khai) khi MOE=0

Lưu ý: Bit này không thể sửa đổi miễn là LOCK cấp 1, 2 hoặc 3 đã được lập trình
(Các bit LOCK trong thanh ghi TIMx_BDTR).

Bit 7 TI1S: Lựa chọn TI1

0: Chân TIMx_CH1 được kết nối với đầu vào TI1


1: Các chân TIMx_CH1, CH2 và CH3 được kết nối với đầu vào TI1 (kết hợp XOR)

Bit 6:4 MMS[2:0]: Lựa chọn chế độ chính

Các bit này cho phép chọn thông tin sẽ được gửi ở chế độ chính tới bộ định thời phụ để đồng bộ hóa

(TRGO). Sự kết hợp như sau:


000: Đặt lại - bit UG từ thanh ghi TIMx_EGR được sử dụng làm đầu ra kích hoạt (TRGO). Nếu thiết lập lại
được tạo bởi đầu vào kích hoạt (bộ điều khiển chế độ phụ được định cấu hình ở chế độ đặt lại) thì tín hiệu
trên TRGO bị trễ so với thiết lập lại thực tế.
001: Kích hoạt - tín hiệu Kích hoạt bộ đếm CNT_EN được sử dụng làm đầu ra kích hoạt (TRGO). Sẽ rất hữu
ích khi bắt đầu nhiều bộ hẹn giờ cùng lúc hoặc để điều khiển một cửa sổ trong đó bộ hẹn giờ phụ được bật.

Tín hiệu Kích hoạt bộ đếm được tạo bằng logic OR giữa bit điều khiển CEN và đầu vào kích hoạt khi được
định cấu hình ở chế độ kiểm soát. Khi tín hiệu Kích hoạt bộ đếm được điều khiển bởi đầu vào kích
hoạt, sẽ có độ trễ trên TRGO, ngoại trừ nếu chế độ chính/phụ được chọn (xem mô tả bit MSM trong thanh ghi
TIMx_SMCR).
010: Cập nhật - Sự kiện cập nhật được chọn làm đầu ra kích hoạt (TRGO). Ví dụ, bộ đếm thời gian chính có
thể được sử dụng làm bộ đếm gộp trước cho bộ đếm thời gian phụ.
011: Xung so sánh - Đầu ra kích hoạt gửi một xung dương khi cờ CC1IF được đặt (ngay cả khi nó đã ở mức
cao), ngay khi xảy ra việc chụp hoặc so sánh.
(TRGO).
100: So sánh - Tín hiệu OC1REF được sử dụng làm đầu ra kích hoạt (TRGO)
101: So sánh - Tín hiệu OC2REF được sử dụng làm đầu ra kích hoạt (TRGO)
110: So sánh - Tín hiệu OC3REF được sử dụng làm đầu ra trigger (TRGO)
111: So sánh - Tín hiệu OC4REF được sử dụng làm đầu ra trigger (TRGO)

Lưu ý: Đồng hồ của bộ định thời phụ và ADC phải được bật trước khi nhận các sự kiện từ bộ định thời chính
và không được thay đổi nhanh chóng trong khi nhận được kích hoạt từ bộ định thời chính.

Bit 3 CCDS: Chụp/so sánh lựa chọn DMA

0: Yêu cầu DMA CCx được gửi khi xảy ra sự kiện CCx
1: Yêu cầu CCx DMA được gửi khi xảy ra sự kiện cập nhật

340/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

Bit 2 CCUS: Lựa chọn cập nhật điều khiển thu thập/so sánh

0: Khi các bit điều khiển chụp/so sánh được tải trước (CCPC=1), chúng được cập nhật bằng cách chỉ thiết
lập bit COMG
1: Khi các bit điều khiển chụp/so sánh được tải trước (CCPC=1), chúng được cập nhật bằng cách thiết lập
bit COMG hoặc khi xảy ra cạnh tăng trên TRGI

Lưu ý: Bit này chỉ hoạt động trên các kênh có đầu ra bổ sung.

Bit 1 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 0 CCPC: Chụp/so sánh điều khiển được tải trước

0: Các bit CCxE, CCxNE và OCxM không được tải trước

1: Các bit CCxE, CCxNE và OCxM được tải trước, sau khi ghi xong, chúng chỉ được cập nhật khi xảy ra sự
kiện giao hoán (COM) (bộ bit COMG hoặc cạnh tăng được phát hiện trên TRGI, tùy thuộc vào bit CCUS).

Lưu ý: Bit này chỉ hoạt động trên các kênh có đầu ra bổ sung.

RM0008 Phiên bản 21 341/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

14.4.3 Thanh ghi điều khiển chế độ nô lệ TIM1 và TIM8 (TIMx_SMCR)

Độ lệch địa chỉ: 0x08

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

ETP ECE ETPS[1:0] ETF[3:0] MSM TS[2:0] Res. SMS[2:0]

rw rw rw rw rw rw rw rw rw rw rw rw Res. rw rw rw

Bit 15 ETP: Phân cực kích hoạt bên ngoài

Bit này chọn xem ETR hay ETR được sử dụng cho hoạt động kích hoạt
0: ETR không đảo ngược, hoạt động ở mức cao hoặc cạnh tăng.
1: ETR bị đảo ngược, hoạt động ở mức thấp hoặc cạnh giảm.

Bit 14 ECE: Kích hoạt đồng hồ bên ngoài

Bit này cho phép chế độ đồng hồ bên ngoài 2.

0: Chế độ đồng hồ ngoài 2 bị tắt

1: Đã bật chế độ đồng hồ bên ngoài 2. Bộ đếm được điều khiển bởi bất kỳ cạnh hoạt động nào trên tín hiệu
ETRF.

Lưu ý: 1: Việc đặt bit ECE có tác dụng tương tự như chọn chế độ xung nhịp ngoài 1 với TRGI được kết
nối với ETRF (SMS=111 và TS=111).

2: Có thể sử dụng đồng thời chế độ đồng hồ bên ngoài 2 với các chế độ phụ sau: chế độ reset, chế độ
kiểm soát và chế độ kích hoạt. Tuy nhiên, TRGI không được kết nối với ETRF trong trường hợp này
(bit TS không được là 111).
3: Nếu chế độ đồng hồ bên ngoài 1 và chế độ đồng hồ bên ngoài 2 được bật cùng lúc, đầu vào đồng hồ

bên ngoài là ERF.

Bit 13:12 ETPS[1:0]: Bộ chia tỷ lệ kích hoạt bên ngoài

Tần số ETRP của tín hiệu kích hoạt bên ngoài tối đa phải bằng 1/4 tần số TIMxCLK. Bộ đếm gộp trước
có thể được kích hoạt để giảm tần số ETRP. Nó rất hữu ích khi nhập đồng hồ bên ngoài nhanh.

00: Bộ chia tỷ lệ trước TẮT

01: Tần số ETRP chia cho 2


10: tần số ETRP chia cho 4
11: Tần số ETRP chia cho 8

342/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

Bits 11:8 ETF[3:0]: Bộ lọc kích hoạt bên ngoài

Trường bit này sau đó xác định tần số được sử dụng để lấy mẫu tín hiệu ETRP và độ dài của bộ lọc kỹ thuật
số được áp dụng cho ETRP. Bộ lọc kỹ thuật số được tạo từ một bộ đếm sự kiện trong đó cần có N sự
kiện liên tiếp để xác thực quá trình chuyển đổi ở đầu ra: 0000: Không có bộ lọc,

việc lấy mẫu được thực hiện tại fDTS 0001:

fSAMPLING = fCK_INT , N=2 0010:


fSAMPLING=fCK_INT, N =4 0011:
fSAMPLING=fCK_INT, N=8 0100:
fSAMPLING=fDTS/2, N=6 0101:
fSAMPLING=fDTS/2, N=8 0110:
fSAMPLING=fDTS/4, N=6 0111:
fSAMPLING=fDTS/ 4, N=8 1000:
fSAMPLING=fDTS/8, N=6 1001:
fSAMPLING=fDTS/8, N=8 1010:
fSAMPLING=fDTS/16, N=5 1011:
fSAMPLING=fDTS/16, N=6 1100 :
fSAMPLING=fDTS/16, N=8 1101:
fSAMPLING=fDTS/32, N=5 1110:
fSAMPLING=fDTS/32, N=6 1111:
fSAMPLING=fDTS/32, N=8

Bit 7 MSM: Chế độ Master/Slave

0: Không hành

động 1: Tác động của một sự kiện lên đầu vào kích hoạt (TRGI) bị trì hoãn để cho phép đồng bộ
hóa hoàn hảo giữa bộ hẹn giờ hiện tại và bộ phụ thuộc của nó (thông qua TRGO). Sẽ rất hữu ích nếu chúng ta
muốn đồng bộ hóa nhiều bộ tính giờ trên một sự kiện bên ngoài.

Bit 6:4 TS[2:0]: Lựa chọn kích hoạt

Trường bit này chọn đầu vào kích hoạt được sử dụng để đồng bộ hóa bộ đếm.
000: Kích hoạt nội bộ 0 (ITR0)
001: Kích hoạt nội bộ 1 (ITR1)
010: Kích hoạt nội bộ 2 (ITR2)
011: Kích hoạt nội bộ 3 (ITR3)
100: Máy dò cạnh TI1 (TI1F_ED)
101: Đầu vào hẹn giờ được lọc 1 (TI1FP1)
110: Đầu vào hẹn giờ được lọc 2 (TI2FP2)
111: Đầu vào kích hoạt bên ngoài (ETRF)

Xem Bảng 82 để biết thêm chi tiết về ý nghĩa ITRx cho mỗi Bộ hẹn giờ.

Lưu ý: Các bit này chỉ được thay đổi khi chúng không được sử dụng (ví dụ khi SMS=000) thành
tránh phát hiện cạnh sai ở quá trình chuyển đổi.

Bit 3 Dành riêng, phải được giữ ở giá trị đặt lại.

RM0008 Phiên bản 21 343/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

Bit 2:0 SMS: Lựa chọn chế độ phụ

Khi tín hiệu bên ngoài được chọn, cạnh hoạt động của tín hiệu kích hoạt (TRGI) được liên kết với
cực được chọn trên đầu vào bên ngoài (xem mô tả thanh ghi Điều khiển đầu vào và mô tả thanh ghi
Điều khiển.
000: Chế độ phụ bị tắt - nếu CEN = '1' thì bộ đếm gộp trước được đồng hồ bên trong bấm giờ trực
tiếp.

001: Chế độ mã hóa 1 - Bộ đếm đếm lên/xuống trên cạnh TI2FP1 tùy thuộc vào mức TI1FP2.

010: Chế độ mã hóa 2 - Bộ đếm đếm lên/xuống trên cạnh TI1FP2 tùy thuộc vào mức TI2FP1.

011: Chế độ bộ mã hóa 3 - Bộ đếm đếm lên/xuống trên cả hai cạnh TI1FP1 và TI2FP2 tùy thuộc
vào mức của đầu vào khác.
100: Chế độ đặt lại - Cạnh nâng của đầu vào kích hoạt đã chọn (TRGI) sẽ khởi tạo lại bộ đếm và tạo
bản cập nhật của các thanh ghi.
101: Chế độ kiểm soát - Đồng hồ bộ đếm được bật khi đầu vào kích hoạt (TRGI) ở mức cao. Bộ đếm
dừng (nhưng không được đặt lại) ngay khi bộ kích hoạt ở mức thấp. Cả việc bắt đầu và dừng của bộ
đếm đều được điều khiển.

110: Chế độ kích hoạt - Bộ đếm bắt đầu ở cạnh tăng của TRGI kích hoạt (nhưng nó không được
đặt lại). Chỉ có sự khởi đầu của bộ đếm được kiểm soát.
111: Chế độ đồng hồ bên ngoài 1 - Các cạnh nhô lên của bộ kích hoạt đã chọn (TRGI) đồng hồ cho bộ đếm.

Lưu ý: Không được sử dụng chế độ kiểm soát nếu TI1F_ED được chọn làm đầu vào kích hoạt
(TS='100'). Thật vậy, TI1F_ED xuất ra 1 xung cho mỗi lần chuyển tiếp trên TI1F, trong khi chế
độ kiểm soát sẽ kiểm tra mức tín hiệu kích hoạt.

Đồng hồ của bộ định thời phụ phải được bật trước khi nhận các sự kiện từ bộ định thời chính
và không được thay đổi nhanh chóng trong khi nhận được kích hoạt từ bộ định thời chính.

Bảng 82. Kết nối kích hoạt bên trong TIMx(1)

TIM nô lệ ITR0 (TS = 000) ITR1 (TS = 001) ITR2 (TS = 010) ITR3 (TS = 011)

TIM1 TIM5_TRGO TIM2_TRGO TIM3_TRGO TIM4_TRGO

TIM8 TIM1_TRGO TIM2_TRGO TIM4_TRGO TIM5_TRGO

1. Khi sản phẩm không có bộ hẹn giờ thì bộ kích hoạt ITRx tương ứng sẽ không có sẵn.

14.4.4 TIM1 và TIM8 DMA/thanh ghi cho phép ngắt (TIMx_DIER)


Độ lệch địa chỉ: 0x0C

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

TDE COMDE CC4DE CC3DE CC2DE CC1DE UDE BIE TIE COMIE CC4IE CC3IE CC2IE CC1IE UIE
Res.
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 14 TDE: Kích hoạt yêu cầu DMA kích hoạt

0: Yêu cầu DMA kích hoạt bị vô hiệu hóa

1: Đã bật yêu cầu DMA kích hoạt

Bit 13 COMDE: Cho phép yêu cầu COM DMA

0: Yêu cầu COM DMA bị vô hiệu hóa


1: Đã bật yêu cầu COM DMA

344/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

Bit 12 CC4DE: Cho phép chụp/so sánh 4 yêu cầu DMA

0: Yêu cầu DMA CC4 bị vô hiệu hóa


1: Đã bật yêu cầu DMA CC4

Bit 11 CC3DE: Cho phép chụp/so sánh 3 yêu cầu DMA

0: Yêu cầu CC3 DMA bị vô hiệu hóa


1: Đã bật yêu cầu DMA CC3

Bit 10 CC2DE: Cho phép chụp/so sánh 2 yêu cầu DMA

0: Yêu cầu DMA CC2 bị vô hiệu hóa


1: Đã bật yêu cầu DMA CC2

Bit 9 CC1DE: Cho phép chụp/so sánh 1 yêu cầu DMA

0: Yêu cầu DMA CC1 bị vô hiệu hóa


1: Đã bật yêu cầu DMA CC1

Bit 8 UDE: Cho phép yêu cầu cập nhật DMA

0: Yêu cầu cập nhật DMA bị vô hiệu hóa


1: Đã bật yêu cầu cập nhật DMA

Bit 7 BIE: Cho phép ngắt ngắt

0: Ngắt ngắt bị vô hiệu hóa


1: Đã bật ngắt ngắt

Bit 6 TIE: Cho phép ngắt kích hoạt

0: Ngắt kích hoạt bị vô hiệu hóa


1: Kích hoạt ngắt kích hoạt

Bit 5 COMIE: Cho phép ngắt COM

0: Ngắt COM bị vô hiệu hóa


1: Đã bật ngắt COM

Bit 4 CC4IE: Cho phép chụp/so sánh 4 ngắt

0: Ngắt CC4 bị vô hiệu hóa


1: Cho phép ngắt CC4

Bit 3 CC3IE: Cho phép chụp/so sánh 3 ngắt

0: Ngắt CC3 bị vô hiệu hóa


1: Đã bật ngắt CC3

Bit 2 CC2IE: Cho phép chụp/so sánh 2 ngắt

0: Ngắt CC2 bị vô hiệu hóa


1: Cho phép ngắt CC2

Bit 1 CC1IE: Cho phép chụp/so sánh 1 ngắt

0: Ngắt CC1 bị vô hiệu hóa


1: Cho phép ngắt CC1

Bit 0 UIE: Cho phép ngắt cập nhật

0: Ngắt cập nhật bị vô hiệu hóa


1: Đã bật ngắt cập nhật

RM0008 Phiên bản 21 345/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

14.4.5 Thanh ghi trạng thái TIM1 và TIM8 (TIMx_SR)


Độ lệch địa chỉ: 0x10

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CC4OF CC3OF CC2OF CC1OF Res. BIF TIF COMIF CC4IF CC3IF CC2IF CC1IF UIF
Kín đáo
rc_w0 rc_w0 rc_w0 rc_w0 Độ phân giải rc_w0 rc_w0 rc_w0 rc_w0 rc_w0 rc_w0 rc_w0 rc_w0

Bit 15:13 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 12 CC4OF: Chụp/So sánh 4 cờ bắt vượt mức

tham khảo mô tả CC1OF

Bit 11 CC3OF: Chụp/So sánh 3 cờ bắt vượt mức

tham khảo mô tả CC1OF

Bit 10 CC2OF: Chụp/So sánh 2 cờ bắt vượt mức

tham khảo mô tả CC1OF

Bit 9 CC1OF: Chụp/So sánh 1 cờ bắt vượt mức

Cờ này chỉ được đặt bằng phần cứng khi kênh tương ứng được định cấu hình ở chế độ chụp đầu vào.
Nó được xóa bằng phần mềm bằng cách ghi nó vào '0'.
0: Không phát hiện thấy tình trạng chụp quá mức.

1: Giá trị bộ đếm đã được ghi lại trong thanh ghi TIMx_CCR1 trong khi cờ CC1IF đã được đặt

Bit 8 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 7 BIF: Cờ ngắt ngắt

Cờ này được thiết lập bởi phần cứng ngay khi đầu vào ngắt hoạt động. Nó có thể được xóa bằng phần
mềm nếu đầu vào ngắt không hoạt động.
0: Không có sự kiện ngắt nào xảy ra.

1: Đã phát hiện mức hoạt động trên đầu vào ngắt.

Bit 6 TIF: Cờ ngắt kích hoạt

Cờ này được đặt bằng phần cứng khi có sự kiện kích hoạt (cạnh hoạt động được phát hiện trên đầu vào TRGI khi bộ

điều khiển chế độ phụ được bật ở tất cả các chế độ ngoại trừ chế độ kiểm soát, cả hai cạnh trong trường hợp

chế độ kiểm soát được chọn). Nó được xóa bằng phần mềm.

0: Không có sự kiện kích hoạt nào xảy ra.

1: Đang chờ kích hoạt ngắt.

Bit 5 COMIF: Cờ ngắt COM

Cờ này được đặt bằng phần cứng trong sự kiện COM (khi Chụp/so sánh các bit Điều khiển - CCxE,
CCxNE, OCxM - đã được cập nhật). Nó được xóa bằng phần mềm.
0: Không có sự kiện COM nào xảy ra.

1: COM đang chờ ngắt.

Bit 4 CC4IF: Cờ bắt/so sánh 4 ngắt

tham khảo mô tả CC1IF

Bit 3 CC3IF: Cờ bắt/so sánh 3 ngắt

tham khảo mô tả CC1IF

346/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

Bit 2 CC2IF: Cờ bắt/so sánh 2 ngắt

tham khảo mô tả CC1IF

Bit 1 CC1IF: Chụp/So sánh 1 cờ ngắt

Nếu kênh CC1 được cấu hình làm đầu ra:


Cờ này được đặt bằng phần cứng khi bộ đếm khớp với giá trị so sánh, với một số ngoại lệ ở chế độ căn
giữa (tham khảo các bit CMS trong mô tả thanh ghi TIMx_CR1). Nó được xóa bằng phần mềm.

0: Không khớp.

1: Nội dung của bộ đếm TIMx_CNT khớp với nội dung của thanh ghi TIMx_CCR1.
Khi nội dung của TIMx_CCR1 lớn hơn nội dung của TIMx_ARR, bit CC1IF sẽ ở mức cao khi tràn bộ đếm (ở chế độ
đếm lên và đếm lên/xuống) hoặc tràn xuống (ở chế độ đếm ngược)

Nếu kênh CC1 được cấu hình làm đầu vào:


Bit này được thiết lập bởi phần cứng khi chụp. Nó được xóa bằng phần mềm hoặc bằng cách đọc
thanh ghi TIMx_CCR1.
0: Không xảy ra thu nạp đầu vào
1: Giá trị bộ đếm đã được ghi lại trong thanh ghi TIMx_CCR1 (Một cạnh đã được phát hiện trên IC1
khớp với cực đã chọn)

Bit 0 UIF: Cờ ngắt cập nhật

Bit này được thiết lập bởi phần cứng trong một sự kiện cập nhật. Nó được xóa bằng phần mềm.

0: Không có cập nhật nào xảy ra.

1: Cập nhật ngắt đang chờ xử lý. Bit này được thiết lập bởi phần cứng khi các thanh ghi được cập nhật:

– Khi tràn hoặc tràn liên quan đến giá trị bộ đếm lặp lại (cập nhật nếu bộ đếm lặp lại
= 0) và nếu UDIS=0 trong thanh ghi TIMx_CR1.

– Khi CNT được khởi tạo lại bằng phần mềm sử dụng bit UG trong thanh ghi TIMx_EGR, nếu URS=0 và
UDIS=0 trong thanh ghi TIMx_CR1.

– Khi CNT được khởi tạo lại bởi một sự kiện kích hoạt (tham khảo Mục 14.4.3: Thanh ghi điều khiển chế độ phụ
TIM1 và TIM8 (TIMx_SMCR)), nếu URS=0 và UDIS=0 trong thanh ghi TIMx_CR1.

14.4.6 Thanh ghi tạo sự kiện TIM1 và TIM8 (TIMx_EGR)


Độ lệch địa chỉ: 0x14

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

BG TG COMG CC4G CC3G CC2G CC1G UG


Kín đáo
wwwwwwww

Bit 15:8 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 7 BG: Tạo ngắt

Bit này được thiết lập bởi phần mềm để tạo ra một sự kiện, nó sẽ tự động bị xóa bằng phần cứng.

0: Không có hành động

1: Một sự kiện ngắt được tạo ra. Bit MOE bị xóa và cờ BIF được đặt. Sự gián đoạn liên quan hoặc chuyển
DMA có thể xảy ra nếu được bật.

Bit 6 TG: Tạo kích hoạt

Bit này được thiết lập bởi phần mềm để tạo ra một sự kiện, nó sẽ tự động bị xóa bằng phần cứng.

0: Không có hành động

1: Cờ TIF được đặt trong thanh ghi TIMx_SR. Sự gián đoạn liên quan hoặc chuyển DMA có thể xảy ra nếu
được bật.

RM0008 Phiên bản 21 347/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

Bit 5 COMG: Chụp/So sánh việc tạo cập nhật điều khiển

Bit này có thể được thiết lập bằng phần mềm, nó sẽ tự động bị xóa bằng phần cứng
0: Không có hành động

1: Khi bit CCPC được đặt, nó cho phép cập nhật các bit CCxE, CCxNE và OCxM

Lưu ý: Bit này chỉ hoạt động trên các kênh có đầu ra bổ sung.

Bit 4 CC4G: Chụp/So sánh thế hệ thứ 4

tham khảo mô tả CC1G

Bit 3 CC3G: Chụp/So sánh thế hệ thứ 3

tham khảo mô tả CC1G

Bit 2 CC2G: Chụp/So sánh thế hệ thứ 2

tham khảo mô tả CC1G

Bit 1 CC1G: Chụp/So sánh 1 thế hệ

Bit này được thiết lập bởi phần mềm để tạo ra một sự kiện, nó sẽ tự động bị xóa bằng phần cứng.

0: Không có hành động

1: Sự kiện thu thập/so sánh được tạo trên kênh 1:


Nếu kênh CC1 được cấu hình làm đầu ra:
Cờ CC1IF được đặt, ngắt tương ứng hoặc yêu cầu DMA sẽ được gửi nếu được bật.
Nếu kênh CC1 được cấu hình làm đầu vào:
Giá trị hiện tại của bộ đếm được ghi vào thanh ghi TIMx_CCR1. Cờ CC1IF được đặt, yêu cầu ngắt hoặc DMA
tương ứng sẽ được gửi nếu được bật. Cờ CC1OF được đặt nếu cờ CC1IF đã ở mức cao.

Bit 0 UG: Tạo bản cập nhật

Bit này có thể được thiết lập bằng phần mềm, nó sẽ tự động bị xóa bằng phần cứng.
0: Không có hành động

1: Khởi động lại bộ đếm và tạo bản cập nhật của các thanh ghi. Lưu ý rằng bộ đếm bộ đếm gộp trước cũng bị
xóa (dù sao thì tỷ lệ của bộ đếm gộp trước cũng không bị ảnh hưởng). Bộ đếm sẽ bị xóa nếu chế độ căn giữa
được chọn hoặc nếu DIR=0 (đếm ngược), nếu không, bộ đếm sẽ nhận giá trị tự động tải lại (TIMx_ARR) nếu
DIR=1 (đếm ngược).

348/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

14.4.7 Thanh ghi chế độ chụp/so sánh TIM1 và TIM8 1 (TIMx_CCMR1)

Độ lệch địa chỉ: 0x18

Giá trị đặt lại: 0x0000

Các kênh có thể được sử dụng ở đầu vào (chế độ chụp) hoặc ở đầu ra (chế độ so sánh). Hướng
của kênh được xác định bằng cách định cấu hình các bit CCxS tương ứng. Tất cả các bit khác của
thanh ghi này có chức năng khác ở chế độ đầu vào và đầu ra. Đối với một bit nhất định, OCxx mô tả
chức năng của nó khi kênh được cấu hình ở đầu ra, ICxx mô tả chức năng của nó khi kênh được cấu
hình ở đầu vào. Vì vậy, người dùng phải lưu ý rằng cùng một bit có thể có ý nghĩa khác nhau đối với
giai đoạn đầu vào và giai đoạn đầu ra.

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

OC2 OC2 OC2 OC1 OC1 OC1


OC2M[2:0] OC1M[2:0]
CN Thể dục FE CN Thể dục FE
CC2S[1:0] CC1S[1:0]

IC2F[3:0] IC2PSC[1:0] IC1F[3:0] IC1PSC[1:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Chế độ so sánh đầu ra:

Bit 15 OC2CE: Cho phép xóa so sánh đầu ra 2

Bit 14:12 OC2M[2:0]: Chế độ so sánh đầu ra 2

Bit 11 OC2PE: Cho phép tải trước so sánh đầu ra 2

Bit 10 OC2FE: Cho phép so sánh đầu ra 2 nhanh

Bit 9:8 CC2S[1:0]: Chụp/So sánh 2 lựa chọn

Trường bit này xác định hướng của kênh (đầu vào/đầu ra) cũng như đầu vào được sử dụng.
00: Kênh CC2 được cấu hình làm đầu ra
01: Kênh CC2 được cấu hình làm đầu vào, IC2 được ánh xạ trên TI2
10: Kênh CC2 được cấu hình làm đầu vào, IC2 được ánh xạ trên TI1
11: Kênh CC2 được cấu hình làm đầu vào, IC2 được ánh xạ trên TRC. Chế độ này chỉ hoạt động nếu đầu vào
kích hoạt bên trong được chọn thông qua bit TS (thanh ghi TIMx_SMCR)

Lưu ý: Các bit CC2S chỉ có thể ghi khi kênh TẮT (CC2E = '0' trong TIMx_CCER).

Bit 7 OC1CE: Cho phép xóa so sánh đầu ra 1

OC1CE: So sánh đầu ra 1 Xóa Kích hoạt

0: OC1Ref không bị ảnh hưởng bởi đầu vào ETRF


1: OC1Ref bị xóa ngay khi phát hiện mức Cao trên đầu vào ETRF

RM0008 Phiên bản 21 349/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

Bit 6:4 OC1M: So sánh đầu ra 1 chế độ

Các bit này xác định hành vi của tín hiệu tham chiếu đầu ra OC1REF mà từ đó OC1 và OC1N được tạo ra. OC1REF

hoạt động ở mức cao trong khi mức hoạt động OC1 và OC1N phụ thuộc vào các bit CC1P và CC1NP.

000: Frozen - Việc so sánh giữa thanh ghi so sánh đầu ra TIMx_CCR1 và bộ đếm TIMx_CNT không ảnh hưởng đến

đầu ra. (Chế độ này được sử dụng để tạo cơ sở định thời).

001: Đặt kênh 1 ở mức hoạt động phù hợp. Tín hiệu OC1REF bị ép lên cao khi bộ đếm TIMx_CNT khớp với thanh ghi

chụp/so sánh 1 (TIMx_CCR1).

010: Đặt kênh 1 ở mức không hoạt động khi khớp. Tín hiệu OC1REF bị ép ở mức thấp khi bộ đếm TIMx_CNT

khớp với thanh ghi chụp/so sánh 1 (TIMx_CCR1).

011: Chuyển đổi - OC1REF chuyển đổi khi TIMx_CNT=TIMx_CCR1.


100: Mức độ không hoạt động cưỡng bức - OC1REF bị buộc ở mức thấp.

101: Mức độ hoạt động cưỡng bức - OC1REF bị buộc ở mức cao.

110: Chế độPWM 1 - Trong quá trình đếm ngược, kênh 1 hoạt động miễn là TIMx_CNT<TIMx_CCR1 không hoạt động.

Trong đếm ngược, kênh 1 không hoạt động (OC1REF='0') miễn là TIMx_CNT>TIMx_CCR1 còn hoạt động

(OC1REF='1').

111: Chế độPWM 2 - Trong quá trình đếm ngược, kênh 1 không hoạt động miễn là TIMx_CNT<TIMx_CCR1 khác vẫn hoạt

động. Trong quá trình đếm ngược, kênh 1 hoạt động miễn là TIMx_CNT>TIMx_CCR1 không hoạt động.

Lưu ý: 1: Các bit này không thể được sửa đổi miễn là LOCK cấp 3 đã được lập trình (các bit LOCK trong thanh

ghi TIMx_BDTR) và CC1S='00' (kênh được cấu hình ở đầu ra).

2: Ở chế độPWM 1 hoặc 2, mức OCREF chỉ thay đổi khi kết quả so sánh thay đổi hoặc khi chế độ so

sánh đầu ra chuyển từ chế độ “đóng băng” sang chế độ “PWM”.

Bit 3 OC1PE: Cho phép tải trước so sánh đầu ra 1

0: Đăng ký tải trước trên TIMx_CCR1 bị tắt. TIMx_CCR1 có thể được ghi bất cứ lúc nào, giá trị mới sẽ được

tính đến ngay lập tức.

1: Đăng ký tải trước trên TIMx_CCR1 được bật. Hoạt động đọc/ghi truy cập vào thanh ghi tải trước. Giá

trị tải trước TIMx_CCR1 được tải vào thanh ghi hoạt động tại mỗi sự kiện cập nhật.

Lưu ý: 1: Các bit này không thể được sửa đổi miễn là LOCK cấp 3 đã được lập trình (các bit LOCK trong thanh

ghi TIMx_BDTR) và CC1S='00' (kênh được cấu hình ở đầu ra).

2: Có thể sử dụng chế độ xung mà không cần xác nhận thanh ghi tải trước chỉ ở chế độ một xung (bit

OPM được đặt trong thanh ghi TIMx_CR1). Nếu không thì hành vi không được đảm bảo.

Bit 2 OC1FE: So sánh đầu ra 1 cho phép nhanh

Bit này được sử dụng để tăng tốc tác động của một sự kiện lên bộ kích hoạt ở đầu vào trên đầu ra CC.

0: CC1 hoạt động bình thường tùy thuộc vào giá trị bộ đếm và CCR1 ngay cả khi bộ kích hoạt BẬT. Độ trễ tối

thiểu để kích hoạt đầu ra CC1 khi xuất hiện cạnh trên đầu vào kích hoạt là 5 chu kỳ xung nhịp.

1: Cạnh hoạt động trên đầu vào kích hoạt hoạt động giống như đối sánh so sánh trên đầu ra CC1. Sau đó, OC được

đặt ở mức so sánh độc lập với kết quả so sánh. Độ trễ lấy mẫu đầu vào kích hoạt và kích hoạt đầu ra CC1 giảm

xuống còn 3 chu kỳ xung nhịp. OCFE chỉ hoạt động nếu kênh được cấu hình ở chế độPWM1 hoặcPWM2.

Bit 1:0 CC1S: Chụp/So sánh 1 lựa chọn

Trường bit này xác định hướng của kênh (đầu vào/đầu ra) cũng như đầu vào được sử dụng.

00: Kênh CC1 được cấu hình làm đầu ra

01: Kênh CC1 được cấu hình làm đầu vào, IC1 được ánh xạ trên TI1

10: Kênh CC1 được cấu hình làm đầu vào, IC1 được ánh xạ trên TI2

11: Kênh CC1 được cấu hình làm đầu vào, IC1 được ánh xạ trên TRC. Chế độ này chỉ hoạt động nếu đầu vào kích

hoạt bên trong được chọn thông qua bit TS (thanh ghi TIMx_SMCR)

Lưu ý: Các bit CC1S chỉ có thể ghi khi kênh TẮT (CC1E = '0' trong TIMx_CCER).

350/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

Chế độ chụp đầu vào

Bit 15:12 IC2F: Bộ lọc chụp đầu vào 2

Bit 11:10 IC2PSC[1:0]: Bộ chia tỷ lệ thu nạp đầu vào 2

Bit 9:8 CC2S: Lựa chọn Chụp/So sánh 2 Trường bit này

xác định hướng của kênh (đầu vào/đầu ra) cũng như đầu vào được sử dụng.
00: Kênh CC2 được cấu hình làm đầu ra 01: Kênh
CC2 được cấu hình làm đầu vào, IC2 được ánh xạ trên TI2 10: Kênh CC2
được cấu hình làm đầu vào, IC2 được ánh xạ trên TI1 11: Kênh CC2 được
ánh xạ làm đầu vào, IC2 được ánh xạ trên TRC . Chế độ này chỉ hoạt động nếu đầu vào kích hoạt bên trong được
chọn thông qua bit TS (thanh ghi TIMx_SMCR)

Lưu ý: Các bit CC2S chỉ có thể ghi khi kênh TẮT (CC2E = '0' trong TIMx_CCER).

Bit 7:4 IC1F[3:0]: Bộ lọc thu thập đầu vào 1

Trường bit này xác định tần số được sử dụng để lấy mẫu đầu vào TI1 và độ dài của bộ lọc kỹ thuật số được áp dụng cho
TI1. Bộ lọc kỹ thuật số được tạo từ một bộ đếm sự kiện trong đó cần có N sự kiện liên tiếp để xác thực quá trình
chuyển đổi ở đầu ra: 0000: Không có bộ

lọc, việc lấy mẫu được thực hiện tại fDTS

0001: fSAMPLING = fCK_INT , N=2


0010: fSAMPLING=fCK_INT, N =4 0011:
fSAMPLING=fCK_INT, N=8 0100:
fSAMPLING=fDTS/2, N=6 0101:
fSAMPLING=fDTS/2, N=8 0110:
fSAMPLING=fDTS/4, N=6 0111:
fSAMPLING=fDTS/ 4, N=8 1000:
fSAMPLING=fDTS/8, N=6 1001:
fSAMPLING=fDTS/8, N=8 1010:
fSAMPLING=fDTS/16, N=5 1011:
fSAMPLING=fDTS/16, N=6 1100 :
fSAMPLING=fDTS/16, N=8 1101:
fSAMPLING=fDTS/32, N=5 1110:
fSAMPLING=fDTS/32, N=6 1111:
fSAMPLING=fDTS/32, N=8

Bit 3:2 IC1PSC: Bộ đếm gộp 1 thu thập đầu vào

Trường bit này xác định tỷ lệ của bộ đếm gộp hoạt động trên đầu vào CC1 (IC1).
Bộ đếm gộp trước được đặt lại ngay khi CC1E='0' (thanh ghi TIMx_CCER). 00: không có

bộ đếm trước, việc chụp được thực hiện mỗi khi phát hiện thấy một cạnh trên đầu vào chụp 01: việc chụp

được thực hiện một lần sau mỗi 2 sự kiện 10: việc

chụp được thực hiện một lần trong mỗi 4 sự kiện

11: việc chụp được thực hiện một lần trong mỗi 8 sự kiện

Bit 1:0 CC1S: Lựa chọn Chụp/So sánh 1 Trường bit này

xác định hướng của kênh (đầu vào/đầu ra) cũng như đầu vào được sử dụng.
00: Kênh CC1 được cấu hình làm đầu ra 01: Kênh
CC1 được cấu hình làm đầu vào, IC1 được ánh xạ trên TI1 10: Kênh CC1
được cấu hình làm đầu vào, IC1 được ánh xạ trên TI2 11: Kênh CC1 được
cấu hình làm đầu vào, IC1 được ánh xạ trên TRC . Chế độ này chỉ hoạt động nếu đầu vào kích hoạt bên trong được
chọn thông qua bit TS (thanh ghi TIMx_SMCR)

Lưu ý: Các bit CC1S chỉ có thể ghi khi kênh TẮT (CC1E = '0' trong TIMx_CCER).

14.4.8 Thanh ghi chế độ chụp/so sánh TIM1 và TIM8 2 (TIMx_CCMR2)

Độ lệch địa chỉ: 0x1C

RM0008 Phiên bản 21 351/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

Giá trị đặt lại: 0x0000

Tham khảo mô tả đăng ký CCMR1 ở trên.


15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

OC4 OC4 OC4 OC3 OC3 OC3


OC4M[2:0] OC3M[2:0]
CN Thể dục FE CE. Thể dục FE
CC4S[1:0] CC3S[1:0]

IC4F[3:0] IC4PSC[1:0] IC3F[3:0] IC3PSC[1:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Chế độ so sánh đầu ra

Bit 15 OC4CE: Cho phép xóa so sánh đầu ra 4

Bit 14:12 OC4M: Đầu ra so sánh 4 chế độ

Bit 11 OC4PE: Cho phép tải trước so sánh đầu ra 4

Bit 10 OC4FE: Đầu ra so sánh 4 kích hoạt nhanh

Bit 9:8 CC4S: Chụp/So sánh 4 lựa chọn

Trường bit này xác định hướng của kênh (đầu vào/đầu ra) cũng như đầu vào được sử dụng.
00: Kênh CC4 được cấu hình làm đầu ra
01: Kênh CC4 được cấu hình làm đầu vào, IC4 được ánh xạ trên TI4
10: Kênh CC4 được cấu hình làm đầu vào, IC4 được ánh xạ trên TI3
11: Kênh CC4 được cấu hình làm đầu vào, IC4 được ánh xạ trên TRC. Chế độ này chỉ hoạt động nếu đầu vào
kích hoạt bên trong được chọn thông qua bit TS (thanh ghi TIMx_SMCR)

Lưu ý: Các bit CC4S chỉ có thể ghi khi kênh TẮT (CC4E = '0' trong TIMx_CCER).

Bit 7 OC3CE: Cho phép xóa so sánh đầu ra 3

Bit 6:4 OC3M: Chế độ so sánh đầu ra 3

Bit 3 OC3PE: Cho phép tải trước so sánh đầu ra 3

Bit 2 OC3FE: Đầu ra so sánh 3 kích hoạt nhanh

Bit 1:0 CC3S: Chụp/So sánh 3 lựa chọn

Trường bit này xác định hướng của kênh (đầu vào/đầu ra) cũng như đầu vào được sử dụng.
00: Kênh CC3 được cấu hình làm đầu ra
01: Kênh CC3 được cấu hình làm đầu vào, IC3 được ánh xạ trên TI3
10: Kênh CC3 được cấu hình làm đầu vào, IC3 được ánh xạ trên TI4
11: Kênh CC3 được cấu hình làm đầu vào, IC3 được ánh xạ trên TRC. Chế độ này chỉ hoạt động nếu đầu vào
kích hoạt bên trong được chọn thông qua bit TS (thanh ghi TIMx_SMCR)

Lưu ý: Các bit CC3S chỉ có thể ghi khi kênh TẮT (CC3E = '0' trong TIMx_CCER).

352/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

Chế độ chụp đầu vào

Bit 15:12 IC4F: Bộ lọc chụp đầu vào 4

Bit 11:10 IC4PSC: Bộ chia tỷ lệ thu thập đầu vào 4

Bit 9:8 CC4S: Chụp/So sánh 4 lựa chọn

Trường bit này xác định hướng của kênh (đầu vào/đầu ra) cũng như đầu vào được sử dụng.
00: Kênh CC4 được cấu hình làm đầu ra
01: Kênh CC4 được cấu hình làm đầu vào, IC4 được ánh xạ trên TI4
10: Kênh CC4 được cấu hình làm đầu vào, IC4 được ánh xạ trên TI3
11: Kênh CC4 được cấu hình làm đầu vào, IC4 được ánh xạ trên TRC. Chế độ này chỉ hoạt động nếu
đầu vào kích hoạt bên trong được chọn thông qua bit TS (thanh ghi TIMx_SMCR)

Lưu ý: Các bit CC4S chỉ có thể ghi khi kênh TẮT (CC4E = '0' trong TIMx_CCER).

Bit 7:4 IC3F: Bộ lọc chụp 3 đầu vào

Bit 3:2 IC3PSC: Bộ đếm gộp 3 thu thập đầu vào

Bits 1:0 CC3S: Chụp/so sánh 3 lựa chọn

Trường bit này xác định hướng của kênh (đầu vào/đầu ra) cũng như đầu vào được sử dụng.
00: Kênh CC3 được cấu hình làm đầu ra
01: Kênh CC3 được cấu hình làm đầu vào, IC3 được ánh xạ trên TI3
10: Kênh CC3 được cấu hình làm đầu vào, IC3 được ánh xạ trên TI4
11: Kênh CC3 được cấu hình làm đầu vào, IC3 được ánh xạ trên TRC. Chế độ này chỉ hoạt động nếu
đầu vào kích hoạt bên trong được chọn thông qua bit TS (thanh ghi TIMx_SMCR)

Lưu ý: Các bit CC3S chỉ có thể ghi khi kênh TẮT (CC3E = '0' trong TIMx_CCER).

14.4.9 Thanh ghi cho phép chụp/so sánh TIM1 và TIM8 (TIMx_CCER)
Độ lệch địa chỉ: 0x20

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CC4NP CC4P CC4E CC3NP CC3NE CC3P CC3E CC2NP CC2NE CC2P CC2E CC1NP CC1NE CC1P CC1E
Res.
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15 CC4NP: Chụp/So sánh 4 cực đầu ra bổ sung

tham khảo mô tả CC1NP

Bit 14 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 13 CC4P: Chụp/So sánh 4 cực đầu ra

tham khảo mô tả CC1P

Bit 12 CC4E: Cho phép chụp/so sánh 4 đầu ra

tham khảo mô tả CC1E

Bit 11 CC3NP: Chụp/So sánh 3 cực đầu ra bổ sung

tham khảo mô tả CC1NP

Bit 10 CC3NE: Cho phép chụp/so sánh 3 đầu ra bổ sung

tham khảo mô tả CC1NE

Bit 9 CC3P: Chụp/So sánh 3 cực đầu ra

tham khảo mô tả CC1P

RM0008 Phiên bản 21 353/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

Bit 8 CC3E: Cho phép chụp/so sánh 3 đầu ra

tham khảo mô tả CC1E

Bit 7 CC2NP: Chụp/So sánh 2 cực đầu ra bổ sung

tham khảo mô tả CC1NP

Bit 6 CC2NE: Cho phép chụp/so sánh 2 đầu ra bổ sung

tham khảo mô tả CC1NE

Bit 5 CC2P: Chụp/So sánh 2 cực đầu ra

tham khảo mô tả CC1P

Bit 4 CC2E: Cho phép chụp/so sánh 2 đầu ra

tham khảo mô tả CC1E

Bit 3 CC1NP: Chụp/So sánh 1 cực đầu ra bổ sung

0: OC1N hoạt động ở mức cao.


1: OC1N hoạt động ở mức thấp.

Lưu ý: Bit này không thể ghi được ngay khi LOCK cấp 2 hoặc 3 đã được lập trình (bit LOCK trong thanh ghi
TIMx_BDTR) và CC1S=”00” (kênh được cấu hình ở đầu ra).

Bit 2 CC1NE: Cho phép chụp/so sánh 1 đầu ra bổ sung

0: Tắt - OC1N không hoạt động. Mức OC1N khi đó là chức năng của các bit MOE, OSSI, OSSR, OIS1, OIS1N và CC1E.

1: Tín hiệu Bật - OC1N được xuất ra trên chân đầu ra tương ứng tùy thuộc vào các bit MOE, OSSI, OSSR,
OIS1, OIS1N và CC1E.

Bit 1 CC1P: Chụp/So sánh 1 cực đầu ra

Kênh CC1 được định cấu hình làm đầu ra:


0: OC1 hoạt động ở mức cao
1: OC1 hoạt động ở mức thấp

Kênh CC1 được định cấu hình làm đầu vào:


Bit này chọn xem IC1 hay IC1 được sử dụng cho hoạt động kích hoạt hoặc chụp.
0: không đảo ngược: việc chụp được thực hiện trên cạnh lên của IC1. Khi được sử dụng làm bộ kích hoạt bên ngoài, IC1
không bị đảo ngược.

1: đảo ngược: việc chụp được thực hiện trên cạnh rơi của IC1. Khi được sử dụng làm bộ kích hoạt bên ngoài, IC1 sẽ
bị đảo ngược.

Lưu ý: Bit này không thể ghi được ngay khi LOCK cấp 2 hoặc 3 được lập trình (bit LOCK
trong thanh ghi TIMx_BDTR).

Bit 0 CC1E: Cho phép chụp/so sánh 1 đầu ra

Kênh CC1 được định cấu hình làm đầu ra:


0: Tắt - OC1 không hoạt động. Mức OC1 khi đó là chức năng của các bit MOE, OSSI, OSSR, OIS1, OIS1N và
CC1NE.

1: Tín hiệu Bật - OC1 được xuất ra trên chân đầu ra tương ứng tùy thuộc vào các bit MOE, OSSI, OSSR,
OIS1, OIS1N và CC1NE.

Kênh CC1 được định cấu hình làm đầu vào:


Bit này xác định xem việc thu thập giá trị bộ đếm có thực sự được thực hiện vào thanh ghi thu thập/so
sánh đầu vào 1 (TIMx_CCR1) hay không.
0: Tắt tính năng chụp.
1: Đã bật tính năng chụp.

354/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

Bảng 83. Các bit điều khiển đầu ra cho các kênh OCx và OCxN bổ sung với
tính năng ngắt

Bit điều khiển Trạng thái đầu ra(1)

bit bit bit bit bit


Trạng thái đầu ra OCx Trạng thái đầu ra OCxN
MOE OSSI OSSR CCxE CCxNE

Đầu ra bị vô hiệu hóa (không được điều Đầu ra bị vô hiệu hóa (không được điều
00 0
khiển bởi bộ hẹn giờ), OCx=0, OCx_EN=0 khiển bởi bộ hẹn giờ), OCxN=0, OCxN_EN=0

00 1 Đầu ra bị vô hiệu hóa (không được điều OCxREF + Phân cực OCxN=OCxREF
khiển bởi bộ hẹn giờ), OCx=0, OCx_EN=0 xor CCxNP, OCxN_EN=1

OCxREF + Phân cực Đầu ra bị vô hiệu hóa (không được điều khiển bởi

01 0 OCx=OCxREF x hoặc CCxP, bộ hẹn giờ)

OCx_EN=1 OCxN=0, OCxN_EN=0


Bổ sung cho OCREF (không phải
OCREF + Phân cực + thời gian chết
01 1 OCREF) + Phân cực + thời gian chết
OCx_EN=1
OCxN_EN=1
1 X Đầu ra bị vô hiệu hóa (không được điều khiển Đầu ra bị vô hiệu hóa (không được điều khiển bởi

10 0 bởi bộ hẹn giờ) bộ hẹn giờ)

OCx=CCxP, OCx_EN=0 OCxN=CCxNP, OCxN_EN=0


Trạng thái tắt (đầu ra được bật ở trạng OCxREF + Phân cực
10 1 thái không hoạt động) OCxN=OCxREF x hoặc CCxNP,
OCx=CCxP, OCx_EN=1 OCxN_EN=1
OCxREF + Phân cực Trạng thái tắt (đầu ra được bật ở trạng
11 0 OCx=OCxREF x hoặc CCxP, thái không hoạt động)

OCx_EN=1 OCxN=CCxNP, OCxN_EN=1


Bổ sung cho OCREF (không phải
OCREF + Phân cực + thời gian chết
11 1 OCREF) + Phân cực + thời gian chết
OCx_EN=1
OCxN_EN=1
0 0 0
Đầu ra bị vô hiệu hóa (không được điều khiển bởi bộ hẹn giờ)

0 01 Không đồng bộ: OCx=CCxP, OCx_EN=0, OCxN=CCxNP, OCxN_EN=0

0 10
Sau đó, nếu đồng hồ hiện diện: OCx=OISx và OCxN=OISxN sau thời
0 11 gian chết, giả sử rằng OISx và OISxN không tương ứng với OCX và
OCxN cả ở trạng thái hoạt động.
0 1 00 X
1 0 1 Trạng thái tắt (đầu ra được bật ở trạng thái không hoạt động)

1 10 Không đồng bộ: OCx=CCxP, OCx_EN=1, OCxN=CCxNP,


OCxN_EN=1
Sau đó, nếu đồng hồ hiện diện: OCx=OISx và OCxN=OISxN sau thời
1 11 gian chết, giả sử rằng OISx và OISxN không tương ứng với OCX và
OCxN cả ở trạng thái hoạt động

1. Khi cả hai đầu ra của một kênh không được sử dụng (CCxE = CCxNE = 0), các bit OISx, OISxN, CCxP và CCxNP phải được giữ lại
đã xóa.

Ghi chú: Trạng thái của các chân I/O bên ngoài được kết nối với các kênh OCx và OCxN bổ sung phụ thuộc
vào trạng thái kênh OCx và OCxN cũng như các thanh ghi GPIO và AFIO.

RM0008 Phiên bản 21 355/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

14.4.10 Bộ đếm TIM1 và TIM8 (TIMx_CNT)


Độ lệch địa chỉ: 0x24

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CNT[15:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15:0 CNT[15:0]: Giá trị bộ đếm

Bộ đếm gộp trước 14.4.11 TIM1 và TIM8 (TIMx_PSC)


Độ lệch địa chỉ: 0x28

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

PSC[15:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15:0 PSC[15:0]: Giá trị bộ đếm trước

Tần số xung nhịp bộ đếm (CK_CNT) bằng fCK_PSC / (PSC[15:0] + 1).


PSC chứa giá trị được tải vào thanh ghi bộ đếm gộp hoạt động tại mỗi sự kiện cập nhật (bao gồm cả khi bộ
đếm bị xóa thông qua bit UG của thanh ghi TIMx_EGR hoặc thông qua bộ điều khiển kích hoạt khi được
định cấu hình ở “chế độ đặt lại”).

14.4.12 Thanh ghi tự động tải lại TIM1 và TIM8 (TIMx_ARR)


Độ lệch địa chỉ: 0x2C

Đặt lại giá trị: 0xFFFF

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

ARR[15:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15:0 ARR[15:0]: Giá trị tự động tải lại

ARR là giá trị được tải vào thanh ghi tự động tải lại thực tế.

Tham khảo Phần 14.3.1: Đơn vị cơ sở thời gian để biết thêm chi tiết về hành vi và cập nhật ARR.
Bộ đếm bị chặn trong khi giá trị tự động tải lại là null.

356/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

14.4.13 Thanh ghi bộ đếm lặp lại TIM1 và TIM8 (TIMx_RCR)

Độ lệch địa chỉ: 0x30

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

REP[7:0]
Kín đáo
rw rw rw rw rw rw rw rw

Bit 15:8 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 7:0 REP[7:0]: Giá trị bộ đếm lặp lại

Các bit này cho phép người dùng thiết lập tốc độ cập nhật của các thanh ghi so sánh (tức là chuyển định
kỳ từ thanh ghi tải trước sang thanh ghi hoạt động) khi thanh ghi tải trước được bật, cũng như tốc độ tạo
ngắt cập nhật, nếu ngắt này được bật.

Mỗi khi bộ đếm ngược liên quan đến REP_CNT đạt tới 0, một sự kiện cập nhật sẽ được tạo và nó bắt đầu lại
việc đếm từ giá trị REP. Vì REP_CNT chỉ được tải lại với giá trị REP tại sự kiện cập nhật lặp lại U_RC
nên mọi thao tác ghi vào thanh ghi TIMx_RCR sẽ không được tính đến cho đến sự kiện cập nhật lặp lại
tiếp theo.

Nó có nghĩa là ở chế độPWM (REP+1) tương ứng với:

– số lượng chu kỳ xung ở chế độ căn chỉnh theo cạnh

– số lượng nửa chu kỳ xung ở chế độ căn giữa.

14.4.14 Thanh ghi ghi/so sánh TIM1 và TIM8 1 (TIMx_CCR1)

Độ lệch địa chỉ: 0x34

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CCR1[15:0]

rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro

Bit 15:0 CCR1[15:0]: Chụp/So sánh 1 giá trị

Nếu kênh CC1 được cấu hình làm đầu ra:


CCR1 là giá trị được tải trong thanh ghi chụp/so sánh 1 thực tế (giá trị tải trước).

Nó được tải vĩnh viễn nếu tính năng tải trước không được chọn trong thanh ghi TIMx_CCMR1 (bit OC1PE).
Mặt khác, giá trị tải trước được sao chép trong thanh ghi chụp/so sánh 1 đang hoạt động khi xảy ra sự kiện
cập nhật.

Thanh ghi chụp/so sánh hoạt động chứa giá trị được so sánh với bộ đếm TIMx_CNT và được báo hiệu trên
đầu ra OC1.

Nếu kênh CC1 được cấu hình làm đầu vào:

CCR1 là giá trị bộ đếm được truyền bởi sự kiện chụp 1 đầu vào cuối cùng (IC1). Thanh ghi
TIMx_CCR1 ở chế độ chỉ đọc và không thể lập trình được.

RM0008 Phiên bản 21 357/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

14.4.15 Thanh ghi ghi/so sánh TIM1 và TIM8 2 (TIMx_CCR2)


Độ lệch địa chỉ: 0x38

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CCR2[15:0]

rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro

Bit 15:0 CCR2[15:0]: Chụp/So sánh 2 giá trị

Nếu kênh CC2 được cấu hình làm đầu ra:


CCR2 là giá trị được tải trong thanh ghi chụp/so sánh 2 thực tế (giá trị tải trước).

Nó được tải vĩnh viễn nếu tính năng tải trước không được chọn trong thanh ghi TIMx_CCMR2 (bit OC2PE).
Mặt khác, giá trị tải trước được sao chép trong thanh ghi chụp/so sánh 2 đang hoạt động khi xảy ra sự kiện
cập nhật.

Thanh ghi chụp/so sánh hoạt động chứa giá trị được so sánh với bộ đếm TIMx_CNT và được báo hiệu trên
đầu ra OC2.

Nếu kênh CC2 được cấu hình làm đầu vào:

CCR2 là giá trị bộ đếm được truyền bởi sự kiện chụp 2 đầu vào cuối cùng (IC2). Thanh ghi
TIMx_CCR2 ở chế độ chỉ đọc và không thể lập trình được.

14.4.16 Thanh ghi ghi/so sánh TIM1 và TIM8 3 (TIMx_CCR3)


Độ lệch địa chỉ: 0x3C

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CCR3[15:0]

rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro

Bit 15:0 CCR3[15:0]: Ghi/So sánh giá trị

Nếu kênh CC3 được cấu hình làm đầu ra:


CCR3 là giá trị được tải trong thanh ghi chụp/so sánh 3 thực tế (giá trị tải trước).

Nó được tải vĩnh viễn nếu tính năng tải trước không được chọn trong thanh ghi TIMx_CCMR3 (bit OC3PE).
Mặt khác, giá trị tải trước được sao chép trong thanh ghi chụp/so sánh 3 đang hoạt động khi xảy ra sự kiện
cập nhật.

Thanh ghi chụp/so sánh hoạt động chứa giá trị được so sánh với bộ đếm TIMx_CNT và được báo hiệu trên
đầu ra OC3.

Nếu kênh CC3 được cấu hình làm đầu vào:

CCR3 là giá trị bộ đếm được truyền bởi sự kiện chụp 3 đầu vào cuối cùng (IC3). Thanh ghi
TIMx_CCR3 ở chế độ chỉ đọc và không thể lập trình được.

358/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

14.4.17 Thanh ghi ghi/so sánh TIM1 và TIM8 4 (TIMx_CCR4)

Độ lệch địa chỉ: 0x40

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CCR4[15:0]

rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro

Bit 15:0 CCR4[15:0]: Ghi/So sánh giá trị

Nếu kênh CC4 được cấu hình làm đầu ra:

CCR4 là giá trị được tải trong thanh ghi chụp/so sánh 4 thực tế (giá trị tải trước).

Nó được tải vĩnh viễn nếu tính năng tải trước không được chọn trong thanh ghi TIMx_CCMR4 (bit OC4PE). Mặt

khác, giá trị tải trước được sao chép trong thanh ghi chụp/so sánh 4 đang hoạt động khi xảy ra sự kiện cập nhật.

Thanh ghi chụp/so sánh hoạt động chứa giá trị được so sánh với bộ đếm TIMx_CNT và được báo hiệu trên đầu

ra OC4.

Nếu kênh CC4 được cấu hình làm đầu vào:

CCR4 là giá trị bộ đếm được truyền bởi sự kiện chụp 4 đầu vào cuối cùng (IC4). Thanh ghi TIMx_CCR3 ở

chế độ chỉ đọc và không thể lập trình được.

14.4.18 Thanh ghi ngắt và thời gian chết TIM1 và TIM8 (TIMx_BDTR)

Độ lệch địa chỉ: 0x44

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

MOE AOE BKP BKE OSSR OSSI KHÓA[1:0] DTG[7:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Ghi chú: Vì các bit AOE, BKP, BKE, OSSI, OSSR và DTG[7:0] có thể bị khóa ghi tùy thuộc vào cấu hình LOCK, nên
có thể cần phải định cấu hình tất cả chúng trong lần truy cập ghi đầu tiên vào thanh ghi TIMx_BDTR.

Bit 15 MOE: Cho phép đầu ra chính

Bit này được xóa không đồng bộ bằng phần cứng ngay khi đầu vào ngắt được kích hoạt. Nó được thiết lập bằng phần

mềm hoặc tự động tùy thuộc vào bit AOE. Nó chỉ hoạt động trên các kênh được cấu hình ở đầu ra.

0: Đầu ra OC và OCN bị vô hiệu hóa hoặc buộc phải ở trạng thái không hoạt động.

1: Đầu ra OC và OCN được bật nếu các bit kích hoạt tương ứng của chúng được đặt (CCxE, CCxNE trong thanh ghi

TIMx_CCER).

Xem mô tả kích hoạt OC/OCN để biết thêm chi tiết (Phần 14.4.9: Thanh ghi cho phép chụp/so sánh TIM1

và TIM8 (TIMx_CCER)).

Bit 14 AOE: Cho phép đầu ra tự động

0: MOE chỉ có thể được cài đặt bằng phần mềm

1: MOE có thể được cài đặt bằng phần mềm hoặc tự động ở lần cập nhật tiếp theo (nếu đầu vào ngắt không được kích

hoạt)

Lưu ý: Bit này không thể được sửa đổi miễn là LOCK cấp 1 đã được lập trình (bit LOCK

trong thanh ghi TIMx_BDTR).

RM0008 Phiên bản 21 359/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

Bit 13 BKP: Phá cực

0: Đầu vào ngắt BRK đang hoạt động ở mức thấp

1: Đầu vào ngắt BRK đang hoạt động ở mức cao

Lưu ý: Bit này không thể được sửa đổi miễn là LOCK cấp 1 đã được lập trình (bit LOCK
trong thanh ghi TIMx_BDTR).

Lưu ý: Bất kỳ thao tác ghi nào vào bit này đều cần độ trễ 1 chu kỳ xung nhịp APB để có hiệu lực.

Bit 12 BKE: Cho phép ngắt

0: Tắt đầu vào (sự kiện lỗi đồng hồ BRK và CSS)


1; Đã bật đầu vào ngắt (sự kiện lỗi đồng hồ BRK và CSS)

Lưu ý: Bit này không thể sửa đổi khi LOCK cấp 1 đã được lập trình (bit LOCK trong thanh ghi TIMx_BDTR).

Lưu ý: Bất kỳ thao tác ghi nào vào bit này đều cần độ trễ 1 chu kỳ xung nhịp APB để có hiệu lực.

Bit 11 OSSR: Lựa chọn trạng thái tắt cho chế độ Run

Bit này được sử dụng khi MOE=1 trên các kênh có đầu ra bổ sung được cấu hình làm đầu ra. OSSR không
được triển khai nếu không có đầu ra bổ sung nào được triển khai trong bộ định thời.

Xem mô tả kích hoạt OC/OCN để biết thêm chi tiết (Phần 14.4.9: Thanh ghi cho phép chụp/so sánh
TIM1 và TIM8 (TIMx_CCER)).
0: Khi không hoạt động, đầu ra OC/OCN bị tắt (tín hiệu đầu ra kích hoạt OC/OCN=0).
1: Khi không hoạt động, các đầu ra OC/OCN được bật với mức không hoạt động ngay khi CCxE=1 hoặc CCxNE=1.
Sau đó, OC/OCN kích hoạt tín hiệu đầu ra=1

Lưu ý: Bit này không thể được sửa đổi ngay khi LOCK cấp 2 đã được lập trình (LOCK
bit trong thanh ghi TIMx_BDTR).

Bit 10 OSSI: Lựa chọn trạng thái tắt cho chế độ Chờ

Bit này được sử dụng khi MOE=0 trên các kênh được cấu hình làm đầu ra.
Xem mô tả kích hoạt OC/OCN để biết thêm chi tiết (Phần 14.4.9: Thanh ghi cho phép chụp/so sánh
TIM1 và TIM8 (TIMx_CCER)).
0: Khi không hoạt động, đầu ra OC/OCN bị tắt (tín hiệu đầu ra kích hoạt OC/OCN=0).
1: Khi không hoạt động, đầu ra OC/OCN bị ép buộc đầu tiên ở mức không hoạt động ngay khi CCxE=1 hoặc CCxNE=1.
Tín hiệu đầu ra cho phép OC/OCN=1)

Lưu ý: Bit này không thể được sửa đổi ngay khi LOCK cấp 2 đã được lập trình (LOCK
bit trong thanh ghi TIMx_BDTR).

Bit 9:8 LOCK[1:0]: Cấu hình khóa

Các bit này cung cấp khả năng bảo vệ ghi chống lại các lỗi phần mềm.
00: LOCK OFF - Không có bit nào được bảo vệ ghi.
01: LOCK Cấp 1 = Các bit DTG trong thanh ghi TIMx_BDTR, các bit OISx và OISxN trong thanh ghi TIMx_CR2
và các bit BKE/BKP/AOE trong thanh ghi TIMx_BDTR không thể ghi được nữa.
10: KHÓA Cấp 2 = LOCK Cấp 1 + Các bit phân cực CC (các bit CCxP/CCxNP trong thanh ghi TIMx_CCER, miễn
là kênh liên quan được cấu hình ở đầu ra thông qua các bit CCxS) cũng như các bit OSSR và OSSI không còn
có thể được ghi.
11: KHÓA Cấp 3 = LOCK Cấp 2 + Các bit điều khiển CC (bit OCxM và OCxPE trong thanh ghi
TIMx_CCMRx, miễn là kênh liên quan được định cấu hình ở đầu ra thông qua các bit CCxS) không thể ghi được
nữa.

Lưu ý: Các bit LOCK chỉ có thể được ghi một lần sau khi thiết lập lại. Khi thanh ghi TIMx_BDTR đã được ghi,
nội dung của chúng sẽ bị đóng băng cho đến lần đặt lại tiếp theo.

360/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

Bit 7:0 DTG[7:0]: Thiết lập bộ tạo thời gian chết

Trường bit này xác định khoảng thời gian chết được chèn giữa các đầu ra bổ sung. DT tương ứng với
khoảng thời gian này.

DTG[7:5]=0xx => DT=DTG[7:0]x tdtg với tdtg=tDTS.


DTG[7:5]=10x => DT=(64+DTG[5:0])xtdtg với Tdtg=2xtDTS.
DTG[7:5]=110 => DT=(32+DTG[4:0])xtdtg với Tdtg=8xtDTS.
DTG[7:5]=111 => DT=(32+DTG[4:0])xtdtg với Tdtg=16xtDTS.
Ví dụ nếu TDTS=125ns (8 MHz), các giá trị thời gian chết có thể là:
0 đến 15875 ns x 125 ns bước,
16 us tới 31750 ns x 250 ns bước,
32 us đến 63us 1 us bước,
64 us đến 126 us 2 bước us

Lưu ý: Không thể sửa đổi trường bit này miễn là mức LOCK 1, 2 hoặc 3 đã được lập trình (bit LOCK trong thanh
ghi TIMx_BDTR).

14.4.19 Thanh ghi điều khiển DMA TIM1 và TIM8 (TIMx_DCR)

Độ lệch địa chỉ: 0x48

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DBL[4:0] DBA[4:0]
Kín đáo Kín đáo
rw rw rw rw rw rw rw rw rw rw

Bit 15:13 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 12:8 DBL[4:0]: Độ dài cụm DMA

Vectơ 5 bit này xác định số lần truyền DMA (bộ hẹn giờ phát hiện quá trình truyền cụm khi thực hiện
truy cập đọc hoặc ghi vào địa chỉ thanh ghi TIMx_DMAR). địa chỉ TIMx_DMAR)

00000: 1 lần chuyển

00001: 2 lần chuyển

00010: 3 lần chuyển

...

10001: 18 lần chuyển nhượng

Bit 7:5 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 4:0 DBA[4:0]: địa chỉ cơ sở DMA

Vectơ 5 bit này xác định địa chỉ cơ sở cho việc truyền DMA (khi truy cập đọc/ghi được thực hiện thông qua
địa chỉ TIMx_DMAR). DBA được định nghĩa là phần bù bắt đầu từ địa chỉ của thanh ghi TIMx_CR1.

Ví dụ:
00000: TIMx_CR1,
00001: TIMx_CR2,
00010: TIMx_SMCR,
...

Ví dụ: Chúng ta hãy xem xét chuyển giao sau: DBL = 7 chuyển giao và DBA = TIMx_CR1. Trong trường hợp này
việc chuyển giao được thực hiện đến/từ 7 thanh ghi bắt đầu từ địa chỉ TIMx_CR1.

RM0008 Phiên bản 21 361/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

14.4.20 Địa chỉ DMA TIM1 và TIM8 để truyền đầy đủ (TIMx_DMAR)

Độ lệch địa chỉ: 0x4C

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

DMAB[31:16]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DMAB[15:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:0 DMAB[31:0]: Thanh ghi DMA để truy cập cụm

Hoạt động đọc hoặc ghi vào thanh ghi DMAR truy cập vào thanh ghi đặt tại địa chỉ

(Địa chỉ TIMx_CR1) + (chỉ số DBA + DMA) x 4 trong đó

địa chỉ TIMx_CR1 là địa chỉ của thanh ghi điều khiển 1, DBA là địa chỉ cơ sở DMA được định cấu hình
trong thanh ghi TIMx_DCR, chỉ số DMA được điều khiển tự động bằng cách truyền DMA và nằm trong khoảng
từ 0 sang DBL (DBL được định cấu hình trong TIMx_DCR).

Ví dụ về cách sử dụng tính năng cụm DMA

Trong ví dụ này, tính năng cụm DMA hẹn giờ được sử dụng để cập nhật nội dung của các thanh
ghi CCRx (x = 2, 3, 4) với DMA chuyển một nửa từ vào các thanh ghi CCRx.

Việc này được thực hiện theo các bước sau:

1. Cấu hình kênh DMA tương ứng như sau:

– Địa chỉ ngoại vi kênh DMA là địa chỉ thanh ghi DMAR

– Địa chỉ bộ nhớ kênh DMA là địa chỉ của bộ đệm trong RAM chứa
dữ liệu được DMA truyền vào các thanh ghi CCRx.

– Số lượng dữ liệu cần truyền = 3 (Xem ghi chú bên dưới).


– Chế độ tròn bị tắt.

2. Định cấu hình thanh ghi DCR bằng cách định cấu hình các trường bit DBA và DBL như sau:
DBL = 3 lần chuyển, DBA = 0xE.

3. Cho phép yêu cầu DMA cập nhật TIMx (đặt bit UDE trong thanh ghi DIER).
4. Kích hoạt TIMx

5. Kích hoạt kênh DMA

Ghi chú: Ví dụ này dành cho trường hợp mỗi thanh ghi CCRx được cập nhật một lần. Ví dụ: nếu mỗi thanh ghi
CCRx được cập nhật hai lần thì số lượng dữ liệu cần truyền sẽ là 6. Hãy lấy ví dụ về bộ đệm trong
RAM chứa data1, data2, data3, data4, data5 và data6. Dữ liệu được chuyển đến các thanh ghi CCRx
như sau: trong yêu cầu DMA cập nhật lần đầu, data1 được chuyển sang CCR2, data2 được chuyển
sang CCR3, data3 được chuyển sang CCR4 và trong yêu cầu DMA cập nhật lần thứ hai, data4 được
chuyển đến CCR2, data5 được chuyển đến CCR3 và dữ liệu6 được chuyển đến CCR4.

362/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8)

14.4.21 Bản đồ đăng ký TIM1 và TIM8

Các thanh ghi TIM1 và TIM8 được ánh xạ dưới dạng các thanh ghi có thể định địa chỉ 16 bit như được mô tả trong
bảng bên dưới:

Bảng 84. TIM1 và TIM8 đăng ký bản đồ và giá trị đặt lại

1
5
ố8
s

7
6

0
3
9

2
4
11
Bù lại

91

81

71

61

51

41

31

21

01
13

03

92

82

72

62

52

42

32

22

12

02
Đăng ký

CKD CMS
TIMx_CR1

RT
ỰI
CẾ

SRU

NEC
P

MPO

SIDU
0x00 Kín đáo [1:0] [1:0]

EPRA
Đặt lại giá trị 0 000000000

TIMx_CR2 MMS[2:0]

S1IT
4SIO

3SIO

2SIO

1SIO
0x04 Kín đáo

DCC

SUCC

CPCC
N3SIO

N2SIO

N1SIO

náíđ
K
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0

o
ETP
TIMx_SMCR S ETF[3:0] TS[2:0] SMS[2:0]

PTE

ECE

MSM
0x08 Kín đáo
[1:0]

náíđ
K
0 0 0 0 0 0 0 0 0 0 0 0 0 0

o
Đặt lại giá trị

TIMx_DIER

EIB

ÀVC

EIU
TẠ
EDT

EDU
0x0C Kín đáo

EI4CC

EI3CC

EI2CC

EI1CC
EIMOC
ED4CC

ED3CC

ED2CC

ED1CC
EDMOC
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

TIMx_SR

FIU
0x10 Kín đáo

FI4CC

FI3CC

FI2CC

FI1CC
FIMOC
FO4CC

FO3CC

FO2CC

FO1CC

náíđ
K
0000 00000000

o
Đặt lại giá trị

TIMx_EGR
0x14 Kín đáo

G4CC

G3CC

G2CC

G1CC
GMOC
Đặt lại giá trị 00000000

TIMx_CCMR1 CC1
OC2M CC2S OC1M
Chế độ so sánh S
Kín đáo [2:0] [1:0] [2:0]
EF2CO

EF1CO
EP2CO

EP1CO
EC2CO

EC1CO

đầu ra [1:0]

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


0x18
TIMx_CCMR1 IC2 IC1 CC1
CC2S
Chế độ chụp IC2F[3:0] PSC IC1F[3:0] PSC S
Kín đáo [1:0]
đầu vào [1:0] [1:0] [1:0]

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

TIMx_CCMR2 CC3
OC4M CC4S OC3M
Chế độ so sánh S
Kín đáo [2:0] [1:0] [2:0]
EF4CO

EF3CO
EP4CO

EP3CO
EC4CO

EC3CO

đầu ra [1:0]

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


0x1C
TIMx_CCMR2 IC4 IC3 CC3
CC4S
Chế độ chụp IC4F[3:0] PSC IC3F[3:0] PSC S
Kín đáo [1:0]
đầu vào [1:0] [1:0] [1:0]

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

TIMx_CCER
P4CC

E4CC

P3CC

E3CC

P2CC

E2CC

P1CC

E1CC

0x20 Kín đáo


PN4CC

PN3CC

EN3CC

PN2CC

EN2CC

PN1CC

EN1CC
náíđ
K

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
o

Đặt lại giá trị

TIMx_CNT CNT[15:0]
0x24 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

TIMx_PSC PSC[15:0]
0x28 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

RM0008 Phiên bản 21 363/1136

364
Machine Translated by Google

Bộ hẹn giờ điều khiển nâng cao (TIM1 và TIM8) RM0008

Bảng 84. TIM1 và TIM8 đăng ký bản đồ và giá trị đặt lại (tiếp theo)

Bù lại

1
5
ố8
s

7
6

0
3
9

2
4
Đăng ký

11
TIMx_ARR ARR[15:0]
0x2C Kín đáo

Đặt lại giá trị 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

TIMx_RCR REP[7:0]
0x30 Kín đáo

Đặt lại giá trị 00000000

TIMx_CCR1 CCR1[15:0]
0x34 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

TIMx_CCR2 CCR2[15:0]
0x38 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

TIMx_CCR3 CCR3[15:0]
0x3C Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

TIMx_CCR4 CCR4[15:0]
0x40 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

KHÓA
TIMx_BDTR DT[7:0]
[1:0]
PKB

EKB
0x44 Kín đáo
EOA
EOM

ISSO
Đặt lại giá trị
RSSO
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

TIMx_DCR DBL[4:0] DBA[4:0]


0x48 Kín đáo Kín đáo

Đặt lại giá trị 0000 0 00000

TIMx_Dmar DMAB[31:0]
0x4C

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Tham khảo Phần 3.3: Bản đồ bộ nhớ cho các địa chỉ biên của thanh ghi.

364/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

15 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

Các thiết bị mật độ thấp là bộ vi điều khiển STM32F101xx, STM32F102xx và STM32F103xx


trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

Các thiết bị có mật độ trung bình là bộ vi điều khiển STM32F101xx, STM32F102xx và STM32F103xx
trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 64 đến 128 Kbyte.

Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ nhớ Flash
nằm trong khoảng từ 256 đến 512 Kbyte.

Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ nhớ
Flash nằm trong khoảng từ 768 Kbyte đến 1 Mbyte.

Các thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

Phần này áp dụng cho toàn bộ họ STM32F10xxx, trừ khi có quy định khác.

15.1 Giới thiệu TIM2 đến TIM5

Bộ định thời đa năng bao gồm bộ đếm tự động tải lại 16 bit được điều khiển bởi bộ chia
tỷ lệ trước có thể lập trình.

Chúng có thể được sử dụng cho nhiều mục đích khác nhau, bao gồm đo độ dài xung của tín hiệu đầu vào
(chụp đầu vào) hoặc tạo ra dạng sóng đầu ra (so sánh đầu ra và xung điện).

Độ dài xung và chu kỳ dạng sóng có thể được điều chỉnh từ vài micro giây đến vài mili giây bằng cách
sử dụng bộ đếm gộp bộ đếm thời gian và bộ đếm gộp bộ điều khiển đồng hồ RCC.

Bộ tính giờ hoàn toàn độc lập và không chia sẻ bất kỳ tài nguyên nào. Chúng có thể được đồng bộ
hóa với nhau như mô tả trong Phần 15.3.15.

RM0008 Phiên bản 21 365/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

Các tính năng chính của 15.2 TIMx

Các tính năng hẹn giờ TIMx đa năng bao gồm:


• Bộ đếm tự động tải lại lên, xuống, lên/xuống 16 bit.
• Bộ đếm gộp trước có thể lập trình 16 bit được sử dụng để chia (cũng là “nhanh chóng”) tần số đồng

hồ bộ đếm cho bất kỳ hệ số nào trong khoảng từ 1 đến 65536.

• Lên đến 4 kênh độc lập cho:

– Chụp đầu vào

– So sánh đầu ra

– Tạo xung điện (Chế độ căn chỉnh cạnh và căn giữa)

– Đầu ra chế độ một xung

• Mạch đồng bộ để điều khiển bộ định thời với tín hiệu bên ngoài và để kết nối
một số bộ tính giờ.

• Tạo ngắt/DMA trong các sự kiện sau:

– Cập nhật: tràn/tràn bộ đếm, khởi tạo bộ đếm (bằng phần mềm hoặc
kích hoạt bên trong/bên ngoài)

– Sự kiện kích hoạt (bắt đầu đếm, dừng, khởi tạo hoặc đếm theo kích hoạt bên trong/bên ngoài)

– Chụp đầu vào

– So sánh đầu ra

• Hỗ trợ bộ mã hóa gia tăng (vuông góc) và mạch cảm biến Hall để định vị
mục đích

• Đầu vào kích hoạt cho đồng hồ bên ngoài hoặc quản lý dòng điện theo chu kỳ

366/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

Hình 100. Sơ đồ khối bộ định thời đa năng

Đồng hồ bên trong (CK_INT)


TIMxCLK từ RCC
Bộ điều
ETRF khiển kích hoạt

ETR TRGO
Lựa chọn phân cực & bộ dò ETRP
TIMx_ETR Bộ lọc đầu vào
cạnh & bộ đếm trước sang các bộ định

thời khác tới DAC/ADC


ITR0 TGI
ITR1 ITR
Chế độ
ITR2 TRC TRGI điều khiển Đặt lại, kích hoạt, tăng, đếm
ITR3
nô lệ

TI1F_ED

TI1FP1 Giao diện


TI2FP2 bộ mã hóa

bạn

Tự động tải lại đăng ký giao diện người dùng

Dừng, xóa hoặc lên/xuống


bạn

CK_PSC PSC Bộ chia tỷ +/- máy đếm CNT


lệ trước CK_CNT
CC1I CC1I
bạn

XOR TI1FP1
OC1REF OC1
TI1 Bộ lọc đầu IC1 IC1PS Kiểm
TI1FP2 Bộ đếm trước Chụp/So sánh 1 thanh ghi TIMx_CH1
soát đầu ra
vào & máy dò cạnh
TIMx_CH1 TRC
CC2I
CC2I
bạn

TI2FP1
TI2 Bộ lọc đầu IC2 IC2PS OC2REF Kiểm OC2
TIMx_CH2 TI2FP2 Bộ đếm trước Chụp/So sánh 2 thanh ghi TIMx_CH2
vào & máy dò cạnh soát đầu ra
TRC

CC3I
bạn
CC3I
TI3FP3
OC3REF OC3
TI3 Bộ lọc đầu IC3 IC3PS Kiểm
TI3FP4 Bộ đếm trước Chụp/So sánh 3 thanh ghi TIMx_CH3
TIMx_CH3 soát đầu ra
vào & máy dò cạnh
TRC
CC4I
CC4I
bạn

TI4FP3
TI4 Bộ lọc đầu IC4 IC4PS OC4REF đầu ra điều
TIMx_CH4 TI4FP4 Bộ đếm trước Chụp/So sánh 4 thanh ghi TIMx_CH4
vào & máy dò cạnh khiển OC4
TRC

ETRF

Ghi chú:

Tải trước các thanh ghi được


Đăng ký
chuyển sang các thanh ghi hoạt động

theo sự kiện U theo bit điều khiển

Sự kiện

Ngắt & đầu ra DMA

MS19673V1

RM0008 Phiên bản 21 367/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

15.3 Mô tả chức năng TIMx

15.3.1 Đơn vị cơ sở thời gian

Khối chính của bộ định thời lập trình được là bộ đếm 16 bit với thanh ghi tự động tải lại liên quan. Bộ
đếm có thể đếm lên, đếm xuống hoặc cả lên và xuống. Đồng hồ đếm có thể được chia bằng bộ đếm trước.

Bộ đếm, thanh ghi tự động tải lại và thanh ghi bộ đếm trước có thể được ghi hoặc đọc bằng phần mềm. Điều
này đúng ngay cả khi bộ đếm đang chạy.

Đơn vị cơ sở thời gian bao gồm:

• Thanh ghi bộ đếm (TIMx_CNT)

• Thanh ghi bộ đếm trước (TIMx_PSC):

• Thanh ghi tự động tải lại (TIMx_ARR)

Thanh ghi tự động tải lại được tải trước. Việc ghi vào hoặc đọc từ thanh ghi tự động tải lại sẽ truy
cập vào thanh ghi tải trước. Nội dung của thanh ghi tải trước được chuyển vĩnh viễn vào thanh ghi ẩn
hoặc tại mỗi sự kiện cập nhật (UEV), tùy thuộc vào bit cho phép tải trước tự động tải lại (ARPE) trong
thanh ghi TIMx_CR1. Sự kiện cập nhật được gửi khi bộ đếm đạt đến mức tràn (hoặc tràn xuống khi đếm ngược)
và nếu bit UDIS bằng 0 trong thanh ghi TIMx_CR1. Nó cũng có thể được tạo ra bởi phần mềm. Việc tạo sự kiện
cập nhật được mô tả chi tiết cho từng cấu hình.

Bộ đếm được bấm giờ bởi đầu ra bộ đếm gộp CK_CNT, chỉ được bật khi bit kích hoạt bộ đếm (CEN) trong
thanh ghi TIMx_CR1 được đặt (tham khảo thêm mô tả bộ điều khiển chế độ phụ để biết thêm chi tiết về cách
bật bộ đếm).

Lưu ý rằng tín hiệu kích hoạt bộ đếm thực tế CNT_EN được đặt 1 chu kỳ xung nhịp sau CEN.

Mô tả bộ đếm trước

Bộ đếm gộp trước có thể chia tần số xung nhịp của bộ đếm cho bất kỳ hệ số nào từ 1 đến 65536. Nó dựa trên
bộ đếm 16 bit được điều khiển thông qua thanh ghi 16 bit (trong thanh ghi TIMx_PSC).
Nó có thể được thay đổi nhanh chóng vì thanh ghi điều khiển này được lưu vào bộ đệm. Tỷ lệ bộ đếm gộp
trước mới được tính đến ở sự kiện cập nhật tiếp theo.

Hình 101 và Hình 102 đưa ra một số ví dụ về hành vi của bộ đếm khi tỷ lệ bộ đếm gộp trước được thay đổi
nhanh chóng:

368/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

Hình 101. Sơ đồ định thời của bộ đếm với bộ chia tỷ lệ trước thay đổi từ 1 thành 2

CK_PSC

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký F7 F8 F9 FC FA FB 00 01 02 03

Cập nhật sự kiện (UEV)

Thanh ghi điều khiển bộ đếm trước 0 1

Viết một giá trị mới vào TIMx_PSC

Bộ đệm tỷ lệ trước 0 1

Bộ đếm tỷ lệ trước 0 0 10 10101

MS35833V1

Hình 102. Sơ đồ định thời của bộ đếm với bộ chia tỷ lệ trước thay đổi từ 1 thành 4

CK_PSC

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký F7 F8 F9 FA FB FC 00 01

Cập nhật sự kiện (UEV)

Thanh ghi điều khiển bộ đếm trước 0 3

Viết một giá trị mới vào TIMx_PSC

Bộ đệm tỷ lệ trước 0 3

Bộ đếm tỷ lệ trước 0 0 1 23 0123

MS35834V1

15.3.2 Chế độ bộ đếm

Chế độ đếm ngược

Trong chế độ đếm ngược, bộ đếm đếm từ 0 đến giá trị tự động tải lại (nội dung của thanh ghi
TIMx_ARR), sau đó khởi động lại từ 0 và tạo ra sự kiện tràn bộ đếm.

Một sự kiện Cập nhật có thể được tạo ra ở mỗi lần tràn bộ đếm hoặc bằng cách đặt bit UG trong
thanh ghi TIMx_EGR (bằng phần mềm hoặc bằng cách sử dụng bộ điều khiển chế độ phụ).

Sự kiện UEV có thể bị vô hiệu hóa bằng phần mềm bằng cách đặt bit UDIS trong thanh ghi TIMx_CR1.
Điều này là để tránh cập nhật các thanh ghi ẩn trong khi ghi các giá trị mới vào các thanh
ghi tải trước. Sau đó, không có sự kiện cập nhật nào xảy ra cho đến khi bit UDIS được ghi thành
0. Tuy nhiên, bộ đếm khởi động lại từ 0, cũng như bộ đếm của bộ đếm trước (nhưng tốc độ đặt trước

RM0008 Phiên bản 21 369/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

không thay đổi). Ngoài ra, nếu bit URS (lựa chọn yêu cầu cập nhật) trong thanh ghi TIMx_CR1
được đặt, thì việc đặt bit UG sẽ tạo ra một sự kiện cập nhật UEV nhưng không đặt cờ UIF (do đó
không có yêu cầu ngắt hoặc DMA nào được gửi). Điều này là để tránh tạo ra cả gián đoạn cập nhật
và ghi dữ liệu khi xóa bộ đếm trong sự kiện ghi dữ liệu.

Khi một sự kiện cập nhật xảy ra, tất cả các thanh ghi sẽ được cập nhật và cờ cập nhật (bit UIF
trong thanh ghi TIMx_SR) được đặt (tùy thuộc vào bit URS):

• Bộ đệm của bộ đếm gộp trước được tải lại với giá trị tải trước (nội dung của TIMx_PSC
đăng ký)

• Thanh ghi bóng tự động tải lại được cập nhật với giá trị tải trước (TIMx_ARR)

Các hình sau đây hiển thị một số ví dụ về hoạt động của bộ đếm đối với các tần số xung nhịp
khác nhau khi TIMx_ARR=0x36.

Hình 103. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 1

CK_INT

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 31 32 33 34 35 36 00 01 02 03 04 05 06 07

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)


MS35836V1

Hình 104. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 2

CK_INT

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 0034 0035 0036 0000 0001 0002 0003

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)


MS35835V1

370/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

Hình 105. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 4

CK_INT

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 0035 0036 0000 0001

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)

MSv37301V1

Hình 106. Sơ đồ định thời của bộ đếm, xung nhịp bên trong chia cho N

CK_INT

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 1F 20 00

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)


MSv37302V1

RM0008 Phiên bản 21 371/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

Hình 107. Sơ đồ định thời của bộ đếm, Cập nhật sự kiện khi ARPE=0 (TIMx_ARR chưa được tải
trước)

CK_INT

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 31 32 33 34 35 36 00 01 02 03 04 05 06 07

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)

Tự động tải lại đăng ký FF 36

Viết một giá trị mới vào TIMx_ARR


MSv37303V1

Hình 108. Sơ đồ định thời của bộ đếm, Cập nhật sự kiện khi ARPE=1 (TIMx_ARR được tải
trước)

CK_PSC

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký F0 F1 F2 F3 F4 F5 00 01 02 03 04 05 06 07

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)

Tự động tải lại đăng ký tải trước F5 36

Tự động tải lại thanh ghi bóng F5 36

Viết một giá trị mới vào TIMx_ARR


MSv37304V1

Chế độ đếm ngược

Trong chế độ đếm ngược, bộ đếm đếm từ giá trị tự động tải lại (nội dung của thanh ghi
TIMx_ARR) xuống 0, sau đó khởi động lại từ giá trị tự động tải lại và tạo ra sự kiện tràn bộ
đếm.

Một sự kiện Cập nhật có thể được tạo ra ở mỗi luồng bộ đếm hoặc bằng cách đặt bit UG trong
Thanh ghi TIMx_EGR (bằng phần mềm hoặc bằng bộ điều khiển chế độ nô lệ)

Sự kiện cập nhật UEV có thể bị vô hiệu hóa bằng phần mềm bằng cách đặt bit UDIS trong thanh
ghi TIMx_CR1. Điều này là để tránh cập nhật các thanh ghi ẩn trong khi ghi các giá trị mới vào

372/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

tải trước các thanh ghi. Sau đó không có sự kiện cập nhật nào xảy ra cho đến khi bit UDIS được ghi vào 0.
Tuy nhiên, bộ đếm khởi động lại từ giá trị tự động tải lại hiện tại, trong khi bộ đếm của bộ đếm gộp lại
khởi động lại từ 0 (nhưng tốc độ cài đặt tỷ lệ không thay đổi).

Ngoài ra, nếu bit URS (lựa chọn yêu cầu cập nhật) trong thanh ghi TIMx_CR1 được đặt, thì việc đặt bit UG
sẽ tạo ra một sự kiện cập nhật UEV nhưng không đặt cờ UIF (do đó không có yêu cầu ngắt hoặc DMA nào được
gửi). Điều này là để tránh tạo ra cả gián đoạn cập nhật và ghi dữ liệu khi xóa bộ đếm trong sự kiện ghi
dữ liệu.

Khi một sự kiện cập nhật xảy ra, tất cả các thanh ghi sẽ được cập nhật và cờ cập nhật (bit UIF trong
thanh ghi TIMx_SR) được đặt (tùy thuộc vào bit URS):

• Bộ đệm của bộ đếm gộp trước được tải lại với giá trị tải trước (nội dung của TIMx_PSC
đăng ký).

• Thanh ghi hoạt động tự động tải lại được cập nhật với giá trị tải trước (nội dung của thanh
ghi TIMx_ARR). Lưu ý rằng việc tự động tải lại được cập nhật trước khi bộ đếm được tải
lại, do đó khoảng thời gian tiếp theo là khoảng thời gian dự kiến.

Các hình sau đây hiển thị một số ví dụ về hoạt động của bộ đếm đối với các tần số xung nhịp khác
nhau khi TIMx_ARR=0x36.

Hình 109. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 1

CK_INT

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 05 04 03 02 01 00 36 35 34 33 32 31 30 2F

Bộ đếm tràn (cnt_udf)

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)

MSv37305V1

RM0008 Phiên bản 21 373/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

Hình 110. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 2

CK_INT

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 0002 0001 0000 0036 0035 0034 0033

Bộ đếm tràn

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)

MSv37306V1

Hình 111. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 4

CK_INT

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 0001 0000 0036 0035

Bộ đếm tràn

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)


MS40511V1

Hình 112. Sơ đồ định thời của bộ đếm, xung nhịp bên trong chia cho N

CK_INT

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 20 1F 00 36

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)


MS37340V1

374/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

Hình 113. Sơ đồ thời gian của bộ đếm, Sự kiện cập nhật

CK_INT

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 05 04 03 02 01 00 36 35 34 33 32 31 30 2F

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)

Tự động tải lại đăng ký tải trước FF 36

Viết một giá trị mới vào TIMx_ARR


MS37341V1

Chế độ căn giữa (đếm lên/xuống)

Ở chế độ căn giữa, bộ đếm đếm từ 0 đến giá trị tự động tải lại (nội dung của thanh ghi TIMx_ARR) –
1, tạo ra sự kiện tràn bộ đếm, sau đó đếm từ giá trị tự động tải lại xuống 1 và tạo ra sự kiện
tràn bộ đếm. Sau đó nó bắt đầu đếm lại từ 0.

Chế độ căn giữa được kích hoạt khi các bit CMS trong thanh ghi TIMx_CR1 không bằng '00'. Cờ ngắt
so sánh đầu ra của các kênh được cấu hình ở đầu ra được đặt khi: bộ đếm đếm ngược (Chế độ căn
giữa 1, CMS = "01"), bộ đếm đếm lên (Chế độ căn giữa 2, CMS = "10") bộ đếm đếm lên xuống (Chế độ căn
giữa 3, CMS = "11").

Ở chế độ này, không thể ghi bit hướng (DIR từ thanh ghi TIMx_CR1). Nó được cập nhật bằng phần cứng
và đưa ra hướng hiện tại của bộ đếm.

Sự kiện cập nhật có thể được tạo tại mỗi lần tràn bộ đếm và tại mỗi lần tràn bộ đếm hoặc bằng cách
đặt bit UG trong thanh ghi TIMx_EGR (bằng phần mềm hoặc bằng cách sử dụng bộ điều khiển chế độ phụ)
cũng tạo ra một sự kiện cập nhật. Trong trường hợp này, bộ đếm khởi động lại việc đếm từ 0, cũng
như bộ đếm của bộ đếm gộp trước.

Sự kiện cập nhật UEV có thể bị vô hiệu hóa bằng phần mềm bằng cách đặt bit UDIS trong thanh ghi
TIMx_CR1. Điều này là để tránh cập nhật các thanh ghi ẩn trong khi ghi các giá trị mới vào các
thanh ghi tải trước. Sau đó không có sự kiện cập nhật nào xảy ra cho đến khi bit UDIS được ghi vào 0.
Tuy nhiên, bộ đếm vẫn tiếp tục đếm lên xuống dựa trên giá trị tự động tải lại hiện tại.

Ngoài ra, nếu bit URS (lựa chọn yêu cầu cập nhật) trong thanh ghi TIMx_CR1 được đặt, thì việc đặt bit
UG sẽ tạo ra một sự kiện cập nhật UEV nhưng không đặt cờ UIF (do đó không có yêu cầu ngắt hoặc DMA
nào được gửi). Điều này là để tránh tạo ra cả gián đoạn cập nhật và chụp khi xóa bộ đếm về sự kiện
chụp.

RM0008 Phiên bản 21 375/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

Khi một sự kiện cập nhật xảy ra, tất cả các thanh ghi đều được cập nhật và cờ cập nhật (bit UIF trong
Thanh ghi TIMx_SR) được đặt (tùy thuộc vào bit URS):

• Bộ đệm của bộ đếm gộp trước được tải lại với giá trị tải trước (nội dung của TIMx_PSC
đăng ký).

• Thanh ghi hoạt động tự động tải lại được cập nhật với giá trị tải trước (nội dung của
thanh ghi TIMx_ARR). Lưu ý rằng nếu nguồn cập nhật là tràn bộ đếm, thì quá trình tải lại tự
động sẽ được cập nhật trước khi bộ đếm được tải lại, sao cho khoảng thời gian tiếp theo là
khoảng thời gian dự kiến (bộ đếm được tải với giá trị mới).

Các hình sau đây hiển thị một số ví dụ về hoạt động của bộ đếm đối với các tần số xung nhịp khác
nhau.

Hình 114. Sơ đồ định thời bộ đếm, xung clock bên trong chia cho 1, TIMx_ARR=0x6

CK_INT

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 04 03 02 01 00 01 02 03 04 05 06 05 03 04

Bộ đếm tràn

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)


MS37342V1

1. Ở đây, chế độ căn giữa 1 được sử dụng, để biết thêm chi tiết, hãy tham khảo Mục 15.4.1: Thanh ghi điều khiển TIMx 1 (TIMx_CR1).

Hình 115. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 2

CK_INT

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 0003 0002 0001 0000 0001 0002 0003

Bộ đếm tràn

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)


MS37343V1

376/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

Hình 116. Sơ đồ định thời của bộ đếm, xung clock bên trong chia cho 4, TIMx_ARR=0x36

CK_INT

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 0034 0035 0036 0035

Tràn bộ đếm (cnt_ovf)

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)


MS37344V1

1. Chế độ căn giữa 2 hoặc 3 được sử dụng với UIF khi tràn.

Hình 117. Sơ đồ định thời của bộ đếm, xung nhịp bên trong chia cho N

CK_INT

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 20 1F 01 00

Bộ đếm tràn

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)


MS37345V1

RM0008 Phiên bản 21 377/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

Hình 118. Sơ đồ thời gian của bộ đếm, Sự kiện cập nhật với ARPE=1 (bộ đếm tràn)

CK_INT

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 06 05 04 03 02 01 00 01 02 03 04 05 06 07

Bộ đếm tràn

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)

Tự động tải lại đăng ký tải trước FD 36

Viết một giá trị mới vào TIMx_ARR

Tự động tải lại sổ đăng ký hoạt động FD 36

MS37360V1

Hình 119. Sơ đồ định thời bộ đếm, Sự kiện cập nhật với ARPE=1 (tràn bộ đếm)

CK_INT

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký F7 F8 F9 FA FB FC 36 35 34 33 32 31 30 2F

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)

Tự động tải lại đăng ký tải trước FD 36

Viết một giá trị mới vào TIMx_ARR

Tự động tải lại sổ đăng ký hoạt động FD 36

MS37361V1

378/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

15.3.3 Lựa chọn đồng hồ

Đồng hồ đếm có thể được cung cấp bởi các nguồn đồng hồ sau:
• Đồng hồ bên trong (CK_INT)
• Chế độ đồng hồ bên ngoài1: chân đầu vào bên ngoài (TIx)
• Chế độ đồng hồ bên ngoài2: đầu vào kích hoạt bên ngoài (ETR).
• Đầu vào kích hoạt bên trong (ITRx): sử dụng một bộ định thời làm bộ đếm gộp trước cho bộ định thời khác, ví

dụ: Có thể cấu hình Bộ hẹn giờ 1 để hoạt động như bộ định tỷ lệ trước cho Bộ định thời gian 2. Tham khảo Sử dụng

một bộ định thời làm bộ đếm gộp trước cho bộ định thời khác để biết thêm chi tiết.

Nguồn đồng hồ bên trong (CK_INT)

Nếu bộ điều khiển chế độ phụ bị tắt (SMS=000 trong thanh ghi TIMx_SMCR), thì các bit CEN,
DIR (trong thanh ghi TIMx_CR1) và các bit UG (trong thanh ghi TIMx_EGR) là các bit điều
khiển thực tế và chỉ có thể được thay đổi bằng phần mềm (ngoại trừ UG vẫn được xóa tự
động). Ngay sau khi bit CEN được ghi lên 1, bộ đếm gộp trước sẽ được đồng hồ bên trong
CK_INT bấm giờ.

Hình 120 cho thấy hoạt động của mạch điều khiển và bộ đếm ngược ở chế độ bình thường,
không có bộ đếm trước.

Hình 120. Mạch điều khiển ở chế độ bình thường, xung nhịp bên trong chia cho 1

Đồng hồ nội bộ

CEN=CNT_EN

UG

CNT_INIT

Đồng hồ đếm = CK_CNT = CK_PSC

quầy đăng ký 31 3 2 33 34 35 36 00 01 02 03 04 05 06 07

MS31085V2

Chế độ nguồn xung nhịp ngoài 1

Chế độ này được chọn khi SMS=111 trong thanh ghi TIMx_SMCR. Bộ đếm có thể đếm ở mỗi cạnh tăng
hoặc giảm trên đầu vào đã chọn.

RM0008 Phiên bản 21 379/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

Hình 121. Ví dụ kết nối đồng hồ bên ngoài TI2

TIMx_SMCR

TS[2:0]

TI2F hoặc
hoặc
TI1F hoặc Chế độ mã
ITRx hóa
0xx
TI1_ED
100 TRGI Chế độ đồng hồ
TI1FP1 CK_PSC
101 ngoài 1
TI2F_Tăng
TI2 Máy 0 TI2FP2 ETRF Chế độ đồng hồ
Lọc 110
dò cạnh 1 ETRF ngoài 2
111
TI2F_Rơi
CK_INT Chế độ đồng hồ

bên trong
ICF[3:0] CC2P (đồng hồ nội bộ)

TIMx_CCMR1 TIMx_CCER
ECE SMS[2:0]

TIMx_SMCR

MS31196V1

Ví dụ: để định cấu hình bộ đếm ngược để đếm phản hồi với cạnh tăng trên đầu vào TI2, hãy sử dụng quy
trình sau: 1. Định cấu hình kênh 2 để

phát hiện các cạnh tăng trên đầu vào TI2 bằng cách ghi CC2S= '01 vào thanh ghi TIMx_CCMR1.

2. Định cấu hình thời lượng bộ lọc đầu vào bằng cách ghi các bit IC2F[3:0] vào TIMx_CCMR1
đăng ký (nếu không cần bộ lọc, giữ IC2F=0000).

Ghi chú: Bộ chia tỷ lệ chụp trước không được sử dụng để kích hoạt nên không cần phải định cấu hình nó.

3. Chọn phân cực cạnh tăng bằng cách ghi CC2P=0 vào thanh ghi TIMx_CCER.

4. Định cấu hình bộ hẹn giờ ở chế độ đồng hồ bên ngoài 1 bằng cách viết SMS=111 trong TIMx_SMCR
đăng ký.

5. Chọn TI2 làm nguồn đầu vào bằng cách ghi TS=110 vào thanh ghi TIMx_SMCR.

6. Kích hoạt bộ đếm bằng cách ghi CEN=1 vào thanh ghi TIMx_CR1.

Khi cạnh tăng xảy ra trên TI2, bộ đếm sẽ đếm một lần và cờ TIF được đặt.

Độ trễ giữa cạnh tăng trên TI2 và xung nhịp thực tế của bộ đếm là do mạch tái đồng bộ hóa trên đầu vào
TI2.

380/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

Hình 122. Mạch điều khiển ở chế độ xung nhịp ngoài 1

TI2

CNT_EN

Đồng hồ đếm = CK_CNT = CK_PSC

quầy đăng ký 34 35 36

TIF

Viết TIF=0

MS31087V2

Chế độ nguồn xung nhịp ngoài 2

Chế độ này được chọn bằng cách ghi ECE=1 vào thanh ghi TIMx_SMCR.

Bộ đếm có thể đếm ở mỗi cạnh tăng hoặc giảm trên ETR đầu vào kích hoạt bên ngoài.

Hình 123 đưa ra cái nhìn tổng quan về khối đầu vào kích hoạt bên ngoài.

Hình 123. Khối đầu vào kích hoạt bên ngoài

TI2F hoặc
hoặc
TI1F hoặc Mã hoá
cách thức

TRGI Chế độ đồng hồ

ETR ngoài 1 CK_PSC


0
ETRP
Chân ETR
Dải phân cách
Lọc ETRF Chế độ đồng hồ

1 /1, /2, /4, /8 quầy giảm giá


ngoài 2

CK_INT
CK_INT Chế độ đồng hồ

ETP ETPS[1:0] ETF[3:0] bên trong


(đồng hồ nội bộ)
TIMx_SMCR TIMx_SMCR TIMx_SMCR

ECE SMS[2:0]
TIMx_SMCR

MS37365V1

Ví dụ: để định cấu hình bộ đếm ngược để đếm từng 2 cạnh lên trên ETR, hãy sử dụng quy trình sau:

1. Vì không cần bộ lọc trong ví dụ này, hãy viết ETF[3:0]=0000 vào sổ đăng ký TIMx_SMCR.

2. Đặt bộ đếm gộp trước bằng cách ghi ETPS[1:0]=01 vào thanh ghi TIMx_SMCR 3. Chọn

phát hiện cạnh tăng trên chân ETR bằng cách ghi ETP=0 vào TIMx_SMCR
đăng ký

4. Kích hoạt chế độ đồng hồ bên ngoài 2 bằng cách ghi ECE=1 vào thanh ghi TIMx_SMCR.

5. Kích hoạt bộ đếm bằng cách ghi CEN=1 vào thanh ghi TIMx_CR1.

Bộ đếm đếm một lần cho mỗi 2 cạnh tăng ETR.

RM0008 Phiên bản 21 381/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

Độ trễ giữa cạnh tăng trên ETR và đồng hồ thực tế của bộ đếm là do mạch tái đồng bộ hóa trên
tín hiệu ETRP.

Hình 124. Mạch điều khiển ở chế độ xung nhịp ngoài 2

CK_INT

CNT_EN

ETR

ETRP

ETRF

Đồng hồ đếm = CK_INT =CK_PSC

34 35 36
quầy đăng ký

MS37362V1

15.3.4 Ghi/so sánh các kênh


Mỗi kênh Chụp/So sánh (xem Hình 125) được xây dựng xung quanh một thanh ghi chụp/so sánh (bao
gồm cả thanh ghi bóng), giai đoạn đầu vào để chụp (với bộ lọc kỹ thuật số, ghép kênh và bộ
đếm trước) và giai đoạn đầu ra (với bộ so sánh và điều khiển đầu ra) .

Tầng đầu vào lấy mẫu đầu vào TIx tương ứng để tạo ra tín hiệu được lọc TIxF.
Sau đó, bộ dò cạnh với lựa chọn phân cực sẽ tạo ra tín hiệu (TIxFPx) có thể được bộ điều
khiển chế độ phụ sử dụng làm đầu vào kích hoạt hoặc làm lệnh chụp. Nó được định tỷ
lệ trước trước thanh ghi chụp (ICxPS).

Hình 125. Kênh thu thập/so sánh (ví dụ: giai đoạn đầu vào kênh 1)

TI1F_ED
Đến bộ điều khiển chế độ nô lệ

TI1 TI1F_Tăng
Bộ TI1F 0 TI1FP1
Máy
fDTS TI1F_Rơi 01
lọc ngược dò cạnh 1

TI2FP1 IC1 Bộ chia / IC1PS


10
1, /2, /4, /8

ICF[3:0] CC1P/CC1NP
TRC
11
TIMx_CCMR1 TIMx_CCER (từ bộ điều khiển

TI2F_Rising chế độ nô lệ)


0
(từ kênh 2)
CC1S[1:0] ICPS[1:0] CC1E
TI2F_Falling 1
(từ kênh 2) TIMx_CCMR1 TIMx_CCER

MS33115V1

382/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

Giai đoạn đầu ra tạo ra dạng sóng trung gian, sau đó được sử dụng để tham chiếu: OCxRef
(mức hoạt động cao). Sự phân cực hoạt động ở cuối chuỗi.

Hình 126. Mạch chính thu/so sánh kênh 1

Xe buýt APB

Giao diện ngoại vi MCU

số 8 số 8

pấht
S viết CCR1H

nb
ếi
ut
-6(
1
Đọc CCR1H

)
S viết_in_progress
đọc_in_progress viết CCR1L
Đọc CCR1L Chụp/so sánh đăng ký tải trước R
R
Chế độ CC1S[1]
so sánh_chuyển đầu ra
chụp_chuyển
CC1S[0]
Chế độ
CC1S[1] OC1PE
đầu vào OC1PE
CC1S[0] Chụp/so sánh thanh ghi bóng
UEV
TIMx_CCMR1
IC1PS Bộ so sánh (từ đơn vị cơ
Chiếm lấy
sở thời gian)
CC1E CNT>CCR1

Quầy tính tiền


CNT=CCR1
CC1G

TIMx_EGR

MS33144V1

Hình 127. Tầng đầu ra của kênh chụp/so sánh (kênh 1)

ETRF
Đến bộ điều khiển chế độ
chính

0
đầu ra OC1
Cho phép
1 Mạch

CC1P
TIMx_CNT > TIMx_CCR1
Chế độ đầu ra oc1ref
TIMx_CCER
TIMx_CNT = Bộ điều khiển TIMx_CCR1

CC1E

TIMx_CCER
OC1M[2:0]

TIMx_CCMR1 ai17187b

Khối thu thập/so sánh được tạo thành từ một thanh ghi tải trước và một thanh ghi bóng. Viết
và đọc luôn truy cập vào thanh ghi tải trước.

Trong chế độ chụp, việc chụp thực sự được thực hiện trong thanh ghi bóng, được sao chép vào
thanh ghi tải trước.

Trong chế độ so sánh, nội dung của thanh ghi tải trước được sao chép vào thanh ghi bóng
để so sánh với bộ đếm.

RM0008 Phiên bản 21 383/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

15.3.5 Chế độ chụp đầu vào

Trong chế độ thu thập đầu vào, các thanh ghi Chụp/So sánh (TIMx_CCRx) được sử dụng để chốt giá
trị của bộ đếm sau khi chuyển đổi được phát hiện bởi tín hiệu ICx tương ứng. Khi quá trình
chụp xảy ra, cờ CCXIF tương ứng (thanh ghi TIMx_SR) được đặt và một yêu cầu ngắt hoặc DMA có thể
được gửi nếu chúng được bật. Nếu việc chụp xảy ra trong khi cờ CCxIF đã ở mức cao thì cờ bắt quá
mức CCxOF (thanh ghi TIMx_SR) được đặt. CCxIF có thể được xóa bằng phần mềm bằng cách ghi nó về
0 hoặc bằng cách đọc dữ liệu đã ghi được lưu trong thanh ghi TIMx_CCRx. CCxOF bị xóa
khi ghi về 0.

Ví dụ sau đây cho thấy cách nắm bắt giá trị bộ đếm trong TIMx_CCR1 khi đầu vào TI1 tăng. Để thực
hiện việc này, hãy sử dụng quy trình sau:

• Chọn đầu vào hoạt động: TIMx_CCR1 phải được liên kết với đầu vào TI1, vì vậy hãy ghi các bit CC1S
thành 01 trong thanh ghi TIMx_CCMR1. Ngay khi CC1S khác 00, kênh được cấu hình ở đầu vào và
thanh ghi TIMx_CCR1 trở thành chỉ đọc.

• Lập trình khoảng thời gian lọc đầu vào cần thiết đối với tín hiệu được kết nối với
bộ đếm thời gian (bằng cách lập trình các bit ICxF trong thanh ghi TIMx_CCMRx nếu đầu vào là
một trong các đầu vào TIx). Hãy tưởng tượng rằng, khi chuyển đổi, tín hiệu đầu vào không ổn
định trong tối đa 5 chu kỳ xung nhịp bên trong. Chúng ta phải lập trình thời lượng lọc dài
hơn năm chu kỳ đồng hồ này. Chúng tôi có thể xác thực quá trình chuyển đổi trên TI1 khi phát
hiện được tám mẫu liên tiếp với cấp độ mới (được lấy mẫu ở tần số fDTS ). Sau đó ghi các bit
IC1F vào 0011 trong thanh ghi TIMx_CCMR1.

• Chọn cạnh của quá trình chuyển đổi tích cực trên kênh TI1 bằng cách ghi bit CC1P về 0 trong thanh
ghi TIMx_CCER (cạnh tăng trong trường hợp này).

• Lập trình bộ chia tỷ lệ đầu vào. Trong ví dụ của chúng tôi, chúng tôi muốn việc chụp được thực hiện ở
mỗi lần chuyển đổi hợp lệ, do đó bộ đếm gộp trước bị vô hiệu hóa (ghi các bit IC1PS thành
00 trong thanh ghi TIMx_CCMR1).

• Cho phép chụp từ bộ đếm vào thanh ghi chụp bằng cách đặt bit CC1E trong
Đăng ký TIMx_CCER.
• Nếu cần, hãy bật yêu cầu ngắt liên quan bằng cách đặt bit CC1IE trong thanh ghi
TIMx_DIER và/hoặc yêu cầu DMA bằng cách đặt bit CC1DE trong thanh ghi TIMx_DIER.

Khi quá trình chụp đầu vào xảy ra:

• Thanh ghi TIMx_CCR1 lấy giá trị của bộ đếm trong quá trình chuyển đổi tích cực.

• Cờ CC1IF được thiết lập (cờ ngắt). CC1OF cũng được đặt nếu có ít nhất hai lần chụp liên tiếp
xảy ra trong khi cờ chưa bị xóa.

• Một ngắt được tạo ra tùy thuộc vào bit CC1IE.

• Yêu cầu DMA được tạo ra tùy thuộc vào bit CC1DE.

Để xử lý việc thu thập quá mức, nên đọc dữ liệu trước cờ thu thập quá mức. Điều này nhằm
tránh bỏ sót tình trạng bắt quá mức có thể xảy ra sau khi đọc cờ và trước khi đọc dữ liệu.

Ghi chú: Yêu cầu ngắt IC và/hoặc DMA có thể được tạo bằng phần mềm bằng cách đặt bit CCxG
tương ứng trong thanh ghi TIMx_EGR.

384/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

15.3.6 Chế độ đầu vàoPWM

Chế độ này là một trường hợp cụ thể của chế độ chụp đầu vào. Quy trình giống nhau ngoại trừ:

• Hai tín hiệu ICx được ánh xạ trên cùng một đầu vào TIx.

• 2 tín hiệu ICx này hoạt động ở các cạnh có cực tính ngược nhau.

• Một trong hai tín hiệu TIxFP được chọn làm đầu vào kích hoạt và bộ điều khiển chế độ phụ
được cấu hình ở chế độ reset.

Ví dụ: người dùng có thể đo khoảng thời gian (trong thanh ghi TIMx_CCR1) và chu kỳ nhiệm vụ
(trong thanh ghi TIMx_CCR2) củaPWM được áp dụng trên TI1 bằng quy trình sau (tùy thuộc
vào tần số CK_INT và giá trị bộ đếm trước):

• Chọn đầu vào hoạt động cho TIMx_CCR1: ghi các bit CC1S thành 01 trong thanh ghi TIMx_CCMR1
(đã chọn TI1).

• Chọn cực hoạt động cho TI1FP1 (được sử dụng cho cả chụp trong TIMx_CCR1 và bộ đếm
xóa): ghi CC1P vào '0' (hoạt động ở cạnh lên).

• Chọn đầu vào hoạt động cho TIMx_CCR2: ghi các bit CC2S thành 10 trong thanh ghi TIMx_CCMR1
(đã chọn TI1).

• Chọn cực hoạt động cho TI1FP2 (dùng để chụp trong TIMx_CCR2): ghi CC2P
bit thành '1' (hoạt động ở cạnh xuống).

• Chọn đầu vào kích hoạt hợp lệ: ghi các bit TS thành 101 trong thanh ghi TIMx_SMCR
(đã chọn TI1FP1).

• Cấu hình bộ điều khiển chế độ nô lệ ở chế độ đặt lại: ghi các bit SMS thành 100 trong
thanh ghi TIMx_SMCR.

• Cho phép chụp: ghi các bit CC1E và CC2E vào '1 trong thanh ghi TIMx_CCER.

Hình 128. Định thời chế độ đầu vàoPWM

TI1

TIMx_CNT 0004 0000 0001 0002 0003 0004 0000

TIMx_CCR1 0004

TIMx_CCR2 0002

chụp IC1 chụp IC2 chụp IC1


xung se rộng Giai đoạn
chụp IC2 đo đạc đo đạc
lập lại truy cập
ai15413

1. Chế độ đầu vào RGB chỉ có thể được sử dụng với các tín hiệu TIMx_CH1/TIMx_CH2 do thực tế là chỉ có
TI1FP1 và TI2FP2 được kết nối với bộ điều khiển chế độ phụ.

RM0008 Phiên bản 21 385/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

15.3.7 Chế độ đầu ra cưỡng bức

Ở chế độ đầu ra (các bit CCxS = 00 trong thanh ghi TIMx_CCMRx), mỗi tín hiệu so sánh đầu ra (OCxREF và
sau đó là OCx) có thể được phần mềm buộc trực tiếp ở mức hoạt động hoặc không hoạt động, độc lập
với mọi so sánh giữa thanh ghi so sánh đầu ra và bộ đếm.

Để buộc tín hiệu so sánh đầu ra (ocxref/OCx) về mức hoạt động của nó, người dùng chỉ cần ghi 101 vào
các bit OCxM trong thanh ghi TIMx_CCMRx tương ứng. Do đó, ocxref bị ép ở mức cao (OCxREF luôn ở mức
hoạt động cao) và OCx nhận giá trị ngược lại với bit phân cực CCxP.

ví dụ: CCxP=0 (OCx hoạt động ở mức cao) => OCx bị ép lên mức cao.

Tín hiệu ocxref có thể bị ép xuống mức thấp bằng cách ghi các bit OCxM thành 100 trong thanh ghi
TIMx_CCMRx.

Dù sao, việc so sánh giữa thanh ghi bóng TIMx_CCRx và bộ đếm vẫn được thực hiện và cho phép đặt cờ. Yêu
cầu ngắt và DMA có thể được gửi tương ứng. Nó được mô tả trong phần sau.

15.3.8 Chế độ so sánh đầu ra

Chức năng này được sử dụng để điều khiển dạng sóng đầu ra hoặc cho biết khi một khoảng thời gian đã trôi
qua.

Khi tìm thấy sự trùng khớp giữa thanh ghi chụp/so sánh và bộ đếm, chức năng so sánh đầu ra: • Gán chân
đầu ra tương ứng cho

một giá trị lập trình được xác định bởi chế độ so sánh đầu ra (các bit OCxM trong thanh ghi TIMx_CCMRx)
và cực đầu ra (CCxP bit trong thanh ghi TIMx_CCER). Chân đầu ra có thể giữ mức của nó (OCXM=000),
được đặt hoạt động (OCxM=001), được đặt không hoạt động (OCxM=010) hoặc có thể chuyển đổi (OCxM=011)
khi khớp.

• Đặt cờ trong thanh ghi trạng thái ngắt (bit CCxIF trong thanh ghi TIMx_SR).

• Tạo ra một ngắt nếu mặt nạ ngắt tương ứng được đặt (bit CCXIE trong thanh ghi TIMx_DIER).

• Gửi yêu cầu DMA nếu bit kích hoạt tương ứng được đặt (bit CCxDE trong thanh ghi TIMx_DIER,
bit CCDS trong thanh ghi TIMx_CR2 để lựa chọn yêu cầu DMA).

Các thanh ghi TIMx_CCRx có thể được lập trình có hoặc không có các thanh ghi tải trước bằng cách sử
dụng bit OCxPE trong thanh ghi TIMx_CCMRx.

Trong chế độ so sánh đầu ra, sự kiện cập nhật UEV không ảnh hưởng đến đầu ra ocxref và OCx.
Độ phân giải thời gian là một số đếm của bộ đếm. Chế độ so sánh đầu ra cũng có thể được sử dụng để xuất
ra một xung đơn (ở chế độ Một xung).

Thủ tục:

1. Chọn đồng hồ bộ đếm (bên trong, bên ngoài, bộ đếm gộp trước).

2. Ghi dữ liệu mong muốn vào thanh ghi TIMx_ARR và TIMx_CCRx.

3. Đặt các bit CCxIE và/hoặc CCxDE nếu yêu cầu ngắt và/hoặc DMA được thực hiện
được tạo ra.

4. Chọn chế độ đầu ra. Ví dụ: người dùng phải viết OCxM=011, OCxPE=0, CCxP=0 và CCxE=1 để chuyển đổi
chốt đầu ra OCx khi CNT khớp với CCRx, tải trước CCRx không được sử dụng, OCx được bật và
hoạt động ở mức cao.

5. Kích hoạt bộ đếm bằng cách đặt bit CEN trong thanh ghi TIMx_CR1.

386/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

Thanh ghi TIMx_CCRx có thể được cập nhật bất kỳ lúc nào bằng phần mềm để điều khiển dạng sóng
đầu ra, miễn là thanh ghi tải trước không được bật (OCxPE=0, nếu không thì thanh ghi bóng
TIMx_CCRx chỉ được cập nhật ở sự kiện cập nhật tiếp theo UEV). Một ví dụ được đưa ra trong
Hình 129.

Hình 129. Chế độ so sánh đầu ra, bật OC1

Viết B201h vào sổ đăng ký CC1R

TIMx_CNT 0039 003A 003B B200 B201

TIMx_CCR1 003A B201

OC1REF = OC1

Đã phát hiện kết quả trùng khớp trên CCR1

Ngắt được tạo nếu được bật


MS37363V1

Chế độ 15.3.9PWM

Chế độ điều chế độ rộng xung cho phép tạo ra tín hiệu có tần số được xác định bởi giá trị của thanh
ghi TIMx_ARR và chu kỳ nhiệm vụ được xác định bởi giá trị của thanh ghi TIMx_CCRx.

Chế độPWM có thể được chọn độc lập trên mỗi kênh (mộtPWM cho mỗi đầu ra OCx) bằng cách ghi
110 (chế độPWM 1) hoặc '111 (chế độPWM 2) trong các bit OCxM trong thanh ghi TIMx_CCMRx.
Người dùng phải kích hoạt thanh ghi tải trước tương ứng bằng cách đặt bit OCxPE trong thanh ghi
TIMx_CCMRx và cuối cùng là thanh ghi tải trước tự động tải lại bằng cách đặt bit ARPE trong thanh
ghi TIMx_CR1.

Vì các thanh ghi tải trước chỉ được chuyển sang các thanh ghi ẩn khi xảy ra sự kiện cập nhật, trước
khi khởi động bộ đếm, người dùng phải khởi tạo tất cả các thanh ghi bằng cách đặt bit UG trong
thanh ghi TIMx_EGR.

Phân cực OCx được lập trình bằng phần mềm bằng cách sử dụng bit CCxP trong thanh ghi TIMx_CCER.
Nó có thể được lập trình ở mức hoạt động cao hoặc mức hoạt động thấp. Đầu ra OCx được kích hoạt
bởi bit CCxE trong thanh ghi TIMx_CCER. Tham khảo mô tả thanh ghi TIMx_CCERx để biết thêm chi tiết.

Trong chế độPWM (1 hoặc 2), TIMx_CNT và TIMx_CCRx luôn được so sánh để xác định xem TIMx_CCRx
TIMx_CNT hay TIMx_CNT TIMx_CCRx (tùy thuộc vào hướng của bộ đếm). Tuy nhiên, để tuân thủ ETRF
(OCREF có thể bị xóa bởi một sự kiện bên ngoài thông qua tín hiệu ETR cho đến chu kỳ xung điện tiếp
theo), tín hiệu OCREF chỉ được xác nhận:

• Khi kết quả so sánh thay đổi, hoặc

• Khi chế độ so sánh đầu ra (các bit OCxM trong thanh ghi TIMx_CCMRx) chuyển từ cấu hình “đóng
băng” (không so sánh, OCxM='000) sang một trong các chế độ PPP (OCxM='110 hoặc '111).

Điều này buộc phần mềm phải điều khiển xung điện xung quanh bộ đếm thời gian trong khi bộ đếm thời gian đang chạy.

RM0008 Phiên bản 21 387/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

Bộ hẹn giờ có thể tạo ra xung điều khiển ở chế độ căn chỉnh cạnh hoặc chế độ căn giữa
tùy thuộc vào các bit CMS trong thanh ghi TIMx_CR1.

Chế độ căn chỉnh theo cạnh của PLC

Cấu hình đếm ngược

Tính năng đếm ngược được kích hoạt khi bit DIR trong thanh ghi TIMx_CR1 ở mức thấp. Tham khảo Chế độ đếm
ngược.

Trong ví dụ sau, chúng tôi xem xét chế độPWM 1. Tín hiệuPWM tham chiếu OCxREF ở mức cao miễn là
TIMx_CNT <TIMx_CCRx nếu không nó sẽ ở mức thấp. Nếu giá trị so sánh trong TIMx_CCRx lớn
hơn giá trị tự động tải lại (trong TIMx_ARR) thì OCxREF được giữ ở '1.
Nếu giá trị so sánh là 0 thì OCxREF được giữ ở mức '0. Hình 130 cho thấy một số dạng sóng điều
chỉnh theo cạnh trong ví dụ trong đó TIMx_ARR=8.

Hình 130. Dạng sóng điều chỉnh cạnh (ARR=8)

quầy đăng ký 0 1 2 34 5 6 7 8 01

OCXREF
CCRx=4
CCxIF

OCXREF
CCRx=8
CCxIF

OCXREF '1'
CCRx>8
CCxIF

OCXREF '0'
CCRx=0
CCxIF

MS31093V1

Cấu hình đếm ngược

Đếm ngược được kích hoạt khi bit DIR trong thanh ghi TIMx_CR1 ở mức cao. Tham khảo Chế độ đếm
ngược.

Ở chế độPWM 1, tín hiệu tham chiếu ocxref ở mức thấp miễn là TIMx_CNT>TIMx_CCRx nếu không nó sẽ
ở mức cao. Nếu giá trị so sánh trong TIMx_CCRx lớn hơn giá trị tự động tải lại trong TIMx_ARR
thì ocxref được giữ ở '1. Không thể sử dụng 0%PWM trong chế độ này.

Chế độ căn giữa trung tâm

Chế độ căn giữa được kích hoạt khi các bit CMS trong thanh ghi TIMx_CR1 khác với '00 (tất cả
các cấu hình còn lại có cùng tác dụng đối với tín hiệu ocxref/OCx). Cờ so sánh được đặt khi bộ
đếm đếm lên, khi nó đếm ngược hoặc cả hai khi nó đếm

388/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

lên và xuống tùy thuộc vào cấu hình bit CMS. Bit hướng (DIR) trong thanh ghi TIMx_CR1 được
cập nhật bằng phần cứng và không được thay đổi bằng phần mềm. Tham khảo Chế độ căn giữa (đếm lên/
xuống).

Hình 131 cho thấy một số dạng sóng điều chỉnh trung tâm trong một ví dụ trong đó: •

TIMx_ARR=8, • Chế

độPWM là chế độPWM 1, • Cờ được đặt khi

bộ đếm đếm ngược tương ứng với chế độ căn giữa 1 được chọn cho CMS= 01 trong thanh ghi TIMx_CR1.

Hình 131. Dạng sóng điều chỉnh trung tâm (ARR=8)

Quầy đăng ký 0123456787654 32101

OCxREF
CCRx = 4

CCxIF CMS=01
CMS=10
CMS=11

OCxREF
CCRx = 7

CMS=10 hoặc 11
CCxIF

'1'
OCxREF
CCRx = 8

CCxIF CMS=01
CMS=10
CMS=11
'1'
OCxREF
CCRx > 8

CCxIF CMS=01
CMS=10
CMS=11
'0'
OCxREF
CCRx = 0

CCxIF CMS=01
CMS=10
CMS=11

ai14681b

Gợi ý sử dụng chế độ căn giữa: • Khi

bắt đầu ở chế độ căn giữa, cấu hình lên xuống hiện tại sẽ được sử dụng. Nó
có nghĩa là bộ đếm đếm lên hoặc đếm xuống tùy thuộc vào giá trị được ghi trong bit DIR

RM0008 Phiên bản 21 389/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

trong thanh ghi TIMx_CR1. Hơn nữa, phần mềm không được phép thay đổi các bit DIR và CMS
cùng một lúc.
• Không nên ghi vào bộ đếm trong khi chạy ở chế độ căn giữa vì nó có thể dẫn đến kết quả
không mong muốn. Đặc biệt:

– Hướng không được cập nhật nếu người dùng ghi một giá trị vào bộ đếm lớn hơn giá trị
tự động tải lại (TIMx_CNT>TIMx_ARR). Ví dụ: nếu bộ đếm đang đếm lên, nó sẽ tiếp tục
đếm lên.

– Hướng được cập nhật nếu người dùng ghi 0 hoặc ghi giá trị TIMx_ARR vào bộ đếm
nhưng không có UEV Sự kiện Cập nhật nào được tạo.

• Cách an toàn nhất để sử dụng chế độ căn giữa là tạo bản cập nhật bằng phần mềm
(thiết lập bit UG trong thanh ghi TIMx_EGR) ngay trước khi khởi động bộ đếm và không
ghi bộ đếm trong khi nó đang chạy.

15.3.10 Chế độ một xung

Chế độ một xung (OPM) là trường hợp cụ thể của các chế độ trước đó. Nó cho phép bộ đếm được
khởi động để đáp ứng với kích thích và tạo ra xung có độ dài có thể lập trình sau độ trễ
được lập trình.

Việc khởi động bộ đếm có thể được điều khiển thông qua bộ điều khiển chế độ phụ. Việc tạo
dạng sóng có thể được thực hiện ở chế độ so sánh đầu ra hoặc chế độPWM. Chọn chế độ Một xung
bằng cách đặt bit OPM trong thanh ghi TIMx_CR1. Điều này làm cho bộ đếm tự động dừng ở sự
kiện cập nhật tiếp theo UEV.

Một xung chỉ có thể được tạo chính xác nếu giá trị so sánh khác với giá trị ban đầu của bộ
đếm. Trước khi bắt đầu (khi bộ hẹn giờ đang chờ kích hoạt), cấu hình phải là:

• Khi đếm ngược: CNT<CCRx ARR (cụ thể là 0<CCRx),


• Khi đếm ngược: CNT>CCRx.

Hình 132. Ví dụ về chế độ một xung

TI2

OC1REF

OC1

TIM1_ARR

TIM1_CCR1
yề
h
n ầi
n ut
í Q

0
t t t
TRÌ HOÃN XUNG

MS31099V1

Ví dụ: người dùng có thể muốn tạo xung dương trên OC1 với độ dài tPULSE
và sau độ trễ tDELAY ngay khi phát hiện thấy cạnh dương trên chân đầu vào TI2.

390/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

Hãy sử dụng TI2FP2 làm trình kích hoạt 1:

• Ánh xạ TI2FP2 lên TI2 bằng cách viết CC2S=01 vào thanh ghi TIMx_CCMR1.

• TI2FP2 phải phát hiện cạnh lên, ghi CC2P=0 vào thanh ghi TIMx_CCER.

• Cấu hình TI2FP2 làm trigger cho bộ điều khiển chế độ nô lệ (TRGI) bằng cách ghi TS=110 vào thanh
ghi TIMx_SMCR.

• TI2FP2 được sử dụng để khởi động bộ đếm bằng cách viết SMS tới '110 trong thanh ghi TIMx_SMCR
(chế độ kích hoạt).

Dạng sóng OPM được xác định bằng cách ghi các thanh ghi so sánh (có tính đến tần số xung nhịp và
bộ đếm trước bộ đếm).

• tDELAY được xác định bởi giá trị được ghi trong thanh ghi TIMx_CCR1.

• tPULSE được xác định bởi sự khác biệt giữa giá trị tự động tải lại và giá trị so sánh (TIMx_ARR -
TIMx_CCR + 1).

• Giả sử người dùng muốn xây dựng dạng sóng có sự chuyển đổi từ '0 sang '1 khi
so sánh xảy ra và chuyển đổi từ '1 sang '0 khi bộ đếm đạt đến giá trị tự động tải lại. Để
thực hiện việc này, hãy bật chế độPWM 2 bằng cách ghi OC1M=111 vào thanh ghi TIMx_CCMR1.
Người dùng có thể tùy chọn kích hoạt các thanh ghi tải trước bằng cách ghi OC1PE=1 vào thanh
ghi TIMx_CCMR1 và ARPE vào thanh ghi TIMx_CR1. Trong trường hợp này, ghi giá trị so sánh vào
thanh ghi TIMx_CCR1, giá trị tự động tải lại vào thanh ghi TIMx_ARR, tạo bản cập nhật bằng cách
đặt bit UG và chờ sự kiện kích hoạt bên ngoài trên TI2. CC1P được ghi vào '0 trong ví dụ
này.

Trong ví dụ của chúng tôi, các bit DIR và CMS trong thanh ghi TIMx_CR1 phải ở mức thấp.

Người dùng chỉ muốn một xung (Chế độ đơn), vì vậy hãy ghi '1 vào bit OPM trong thanh ghi
TIMx_CR1 để dừng bộ đếm ở sự kiện cập nhật tiếp theo (khi bộ đếm chuyển từ giá trị tự động tải lại
về 0). Khi bit OPM trong thanh ghi TIMx_CR1 được đặt thành '0', thì chế độ Lặp lại được chọn.

Trường hợp cụ thể: Kích hoạt nhanh OCx:

Ở chế độ Một xung, tính năng phát hiện cạnh trên đầu vào TIx sẽ đặt bit CEN để bật bộ đếm. Sau
đó, việc so sánh giữa bộ đếm và giá trị so sánh sẽ làm cho đầu ra chuyển đổi. Nhưng cần có một
số chu kỳ xung nhịp cho các hoạt động này và nó giới hạn độ trễ tối thiểu tDELAY phút mà chúng ta
có thể nhận được.

Để xuất ra dạng sóng có độ trễ tối thiểu, người dùng có thể đặt bit OCxFE trong thanh ghi
TIMx_CCMRx. Sau đó, OCxRef (và OCx) bị buộc phải phản ứng với kích thích mà không tính đến sự so
sánh. Cấp độ mới của nó giống như khi một trận đấu so sánh đã xảy ra. OCxFE chỉ hoạt động nếu kênh
được cấu hình ở chế độPWM1 hoặcPWM2.

15.3.11 Xóa tín hiệu OCxREF khi có sự kiện bên ngoài


Tín hiệu OCxREF cho một kênh nhất định có thể được điều khiển ở mức Thấp bằng cách áp dụng mức Cao
cho đầu vào ETRF (bit kích hoạt OCxCE của thanh ghi TIMx_CCMRx tương ứng được đặt thành '1'). Tín
hiệu OCxREF vẫn ở mức Thấp cho đến khi xảy ra sự kiện cập nhật tiếp theo, UEV.

Chức năng này chỉ có thể được sử dụng ở chế độ so sánh đầu ra và chế độ xung, và không hoạt động ở
chế độ bắt buộc.

Ví dụ: tín hiệu ETR có thể được kết nối với đầu ra của bộ so sánh được sử dụng để xử lý dòng điện.
Trong trường hợp này, ETR phải được cấu hình như sau:

RM0008 Phiên bản 21 391/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

1. Phải tắt bộ đếm gộp kích hoạt bên ngoài: các bit ETPS[1:0] trong thanh ghi TIMx_SMCR bị xóa
về 00.

2. Chế độ đồng hồ bên ngoài 2 phải bị tắt: bit ECE trong thanh ghi TIM1_SMCR là
bị xóa về 0.

3. Phân cực kích hoạt bên ngoài (ETP) và bộ lọc kích hoạt bên ngoài (ETF) có thể được
cấu hình theo nhu cầu của ứng dụng.

Hình 133 cho thấy hành vi của tín hiệu OCxREF khi đầu vào ETRF trở nên cao, đối với cả hai giá
trị của bit kích hoạt OCxCE. Trong ví dụ này, bộ định thời TIMx được lập trình ở chế độPWM.

Hình 133. Xóa TIMx OCxREF

(CCRx)

Bộ đếm (CNT)

ETRF

OCxREF (OCxCE = '0')

OCxREF (OCxCE = '1')

ETFF trở nên cao ERF vẫn cao


MS37368V1

15.3.12 Chế độ giao diện bộ mã hóa

Để chọn chế độ Giao diện bộ mã hóa, hãy ghi SMS='001 vào thanh ghi TIMx_SMCR nếu bộ đếm chỉ đếm
trên các cạnh TI2, SMS=010 nếu nó chỉ đếm trên các cạnh TI1 và SMS=011 nếu nó đếm trên cả hai cạnh
TI1 và TI2.

Chọn cực TI1 và TI2 bằng cách lập trình các bit CC1P và CC2P trong thanh ghi TIMx_CCER. Khi cần,
hãy lập trình bộ lọc đầu vào.

Hai đầu vào TI1 và TI2 được sử dụng để giao tiếp với bộ mã hóa gia tăng. Tham khảo Bảng
85. Bộ đếm được bấm giờ theo từng chuyển đổi hợp lệ trên TI1FP1 hoặc TI2FP2 (TI1 và TI2 sau khi
chọn bộ lọc đầu vào và phân cực, TI1FP1=TI1 nếu không được lọc và không bị đảo ngược,
TI2FP2=TI2 nếu không được lọc và không bị đảo ngược) giả sử rằng nó được bật (bit CEN
trong thanh ghi TIMx_CR1 được ghi vào '1). Trình tự chuyển đổi của hai đầu vào được đánh giá và
tạo ra các xung đếm cũng như tín hiệu hướng. Tùy thuộc vào trình tự bộ đếm đếm lên hoặc xuống,
bit DIR trong thanh ghi TIMx_CR1 được sửa đổi bằng phần cứng cho phù hợp. Bit DIR được tính ở
mỗi lần chuyển đổi trên bất kỳ đầu vào nào (TI1 hoặc TI2), bất kể bộ đếm chỉ đếm trên TI1, chỉ
TI2 hoặc cả TI1 và TI2.

Chế độ giao diện bộ mã hóa hoạt động đơn giản như một đồng hồ bên ngoài với chức năng chọn
hướng. Điều này có nghĩa là bộ đếm chỉ đếm liên tục trong khoảng từ 0 đến giá trị tự động tải lại
trong thanh ghi TIMx_ARR (0 đến ARR hoặc ARR xuống 0 tùy theo hướng). Vì vậy người dùng phải
cấu hình TIMx_ARR trước khi bắt đầu. Theo cách tương tự, các tính năng chụp, so sánh,
đặt trước, kích hoạt đầu ra vẫn tiếp tục hoạt động như bình thường.

392/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

Ở chế độ này, bộ đếm được sửa đổi tự động theo tốc độ và hướng của bộ mã hóa gia tăng và nội
dung của nó, do đó luôn thể hiện vị trí của bộ mã hóa. Hướng đếm tương ứng với hướng
quay của cảm biến được kết nối.
Bảng tóm tắt các kết hợp có thể xảy ra, giả sử TI1 và TI2 không chuyển đổi cùng lúc.

Bảng 85. Hướng đếm so với tín hiệu bộ mã hóa

Mức tín hiệu ngược tín hiệu TI1FP1 tín hiệu TI2FP2
Cạnh hoạt động lại (TI1FP1 cho
TI2, TI2FP2 cho TI1) Trỗi dậy Rơi Trỗi dậy Rơi

Cao Xuống Không đếm Không đếm


Đếm tiếp
Hướng lên

chỉ TI1 Thấp Xuống Không đếm Không đếm


Hướng lên

Cao Không đếm Không đếm Xuống


Đếm tiếp
Hướng lên

chỉ TI2 Thấp Không đếm Không đếm Xuống Hướng lên

Cao Xuống Xuống


Đếm tiếp
Hướng lên Hướng lên

TI1 và TI2
Thấp Hướng lên
Xuống Xuống Hướng lên

Bộ mã hóa gia tăng bên ngoài có thể được kết nối trực tiếp với MCU mà không cần logic giao
diện bên ngoài. Tuy nhiên, bộ so sánh thường được sử dụng để chuyển đổi đầu ra vi sai
của bộ mã hóa thành tín hiệu số. Điều này làm tăng đáng kể khả năng chống ồn. Đầu ra
bộ mã hóa thứ ba chỉ ra vị trí số 0 cơ học, có thể được kết nối với đầu vào ngắt bên
ngoài và kích hoạt thiết lập lại bộ đếm.

Hình 134 đưa ra một ví dụ về hoạt động của bộ đếm, hiển thị việc tạo tín hiệu đếm và điều
khiển hướng. Nó cũng cho thấy cách bù jitter đầu vào khi cả hai cạnh được chọn. Điều
này có thể xảy ra nếu cảm biến được đặt gần một trong các điểm chuyển mạch. Đối với ví dụ
này, chúng tôi giả định rằng cấu hình như sau:

• CC1S= '01' (thanh ghi TIMx_CCMR1, TI1FP1 được ánh xạ trên TI1)

• CC2S= '01' (thanh ghi TIMx_CCMR2, TI2FP2 được ánh xạ trên TI2)

• CC1P= '0', CC1NP = '0', IC1F ='0000' (thanh ghi TIMx_CCER, TI1FP1 không đảo ngược,
TI1FP1=TI1)

• CC2P= '0', CC2NP = '0', IC2F ='0000' (thanh ghi TIMx_CCER, TI2FP2 không đảo ngược,
TI2FP2=TI2)

• SMS= '011' (thanh ghi TIMx_SMCR, cả hai đầu vào đều hoạt động ở cả tăng và giảm
cạnh)

• CEN = 1 (thanh ghi TIMx_CR1, Bộ đếm được bật)

RM0008 Phiên bản 21 393/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

Hình 134. Ví dụ về hoạt động của bộ đếm trong chế độ giao diện bộ mã hóa

phía trước sự bồn chồn


phía sau sự bồn chồn
phía trước

TI1

TI2

Quầy tính tiền

hướng lên
xuống hướng lên

MS33107V1

Hình 135 đưa ra một ví dụ về hoạt động của bộ đếm khi đảo cực TI1FP1 (cấu hình tương tự như
trên ngoại trừ CC1P=1).

Hình 135. Ví dụ về chế độ giao diện bộ mã hóa với cực TI1FP1 bị đảo ngược

phía trước sự bồn chồn


phía sau sự bồn chồn
phía trước

TI1

TI2

Quầy tính tiền

xuống hướng lên


xuống

MS33108V1

Bộ hẹn giờ khi được định cấu hình ở chế độ Giao diện bộ mã hóa sẽ cung cấp thông tin về vị trí
hiện tại của cảm biến. Người dùng có thể lấy thông tin động (tốc độ, khả năng tăng
tốc, giảm tốc) bằng cách đo khoảng thời gian giữa hai sự kiện bộ mã hóa bằng cách sử dụng bộ
hẹn giờ thứ hai được định cấu hình ở chế độ chụp. Đầu ra của bộ mã hóa cho biết điểm 0 cơ học có
thể được sử dụng cho mục đích này. Tùy thuộc vào thời gian giữa hai sự kiện, bộ đếm cũng có thể
được đọc vào thời gian thông thường. Người dùng có thể thực hiện việc này bằng cách chốt giá
trị bộ đếm vào thanh ghi thu thập đầu vào thứ ba nếu có (khi đó tín hiệu thu phải theo chu
kỳ và có thể được tạo bởi bộ đếm thời gian khác). khi khả dụng, bạn cũng có thể đọc giá trị của
nó thông qua yêu cầu DMA do đồng hồ Thời gian thực tạo ra.

394/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

15.3.13 Chức năng XOR đầu vào hẹn giờ

Bit TI1S trong thanh ghi TIM1_CR2, cho phép bộ lọc đầu vào của kênh 1 được kết nối với đầu ra của
cổng XOR, kết hợp ba chân đầu vào TIMx_CH1 với TIMx_CH3.

Đầu ra XOR có thể được sử dụng với tất cả các chức năng đầu vào hẹn giờ như kích hoạt hoặc
chụp đầu vào.

Một ví dụ về tính năng này được sử dụng để giao tiếp với cảm biến Hall được đưa ra trong Phần 14.3.18.

15.3.14 Bộ hẹn giờ và đồng bộ hóa kích hoạt bên ngoài

Bộ hẹn giờ TIMx có thể được đồng bộ hóa với bộ kích hoạt bên ngoài ở một số chế độ: Chế độ đặt
lại, chế độ Kiểm soát và chế độ Kích hoạt.

Chế độ nô lệ: Chế độ đặt lại

Bộ đếm và bộ đếm gộp trước của nó có thể được khởi tạo lại để phản hồi một sự kiện trên đầu vào kích hoạt.
Hơn nữa, nếu bit URS từ thanh ghi TIMx_CR1 ở mức thấp thì một sự kiện cập nhật UEV sẽ được
tạo ra. Sau đó tất cả các thanh ghi được tải trước (TIMx_ARR, TIMx_CCRx) đều được cập nhật.

Trong ví dụ sau, bộ đếm ngược bị xóa để phản hồi cạnh tăng trên đầu vào TI1:

• Cấu hình kênh 1 để phát hiện các cạnh lên trên TI1. Định cấu hình thời lượng bộ lọc đầu vào (trong
ví dụ này, chúng tôi không cần bất kỳ bộ lọc nào, vì vậy chúng tôi giữ IC1F=0000). Bộ
chia tỷ lệ chụp trước không được sử dụng để kích hoạt nên người dùng không cần phải định
cấu hình nó. Các bit CC1S chỉ chọn nguồn chụp đầu vào, CC1S = 01 trong thanh ghi
TIMx_CCMR1. Viết CC1P=0 vào thanh ghi TIMx_CCER để xác thực cực tính (và chỉ phát hiện các
cạnh lên).

• Cấu hình bộ đếm thời gian ở chế độ reset bằng cách viết SMS=100 vào thanh ghi TIMx_SMCR. Chọn TI1
làm nguồn đầu vào bằng cách ghi TS=101 vào thanh ghi TIMx_SMCR.
• Bắt đầu bộ đếm bằng cách ghi CEN=1 vào thanh ghi TIMx_CR1.

Bộ đếm bắt đầu đếm theo đồng hồ bên trong, sau đó hoạt động bình thường cho đến cạnh tăng TI1.
Khi TI1 tăng, bộ đếm sẽ bị xóa và khởi động lại từ 0. Trong khi đó, cờ kích hoạt được đặt (bit
TIF trong thanh ghi TIMx_SR) và yêu cầu ngắt hoặc yêu cầu DMA có thể được gửi nếu được bật
(tùy thuộc vào TIE và Các bit TDE trong thanh ghi TIMx_DIER).

Hình 136 cho thấy hành vi này khi thanh ghi tự động tải lại TIMx_ARR=0x36. Độ trễ giữa cạnh tăng trên
TI1 và thời điểm reset thực tế của bộ đếm là do mạch tái đồng bộ hóa trên đầu vào TI1.

Hình 136. Mạch điều khiển ở chế độ reset

TI1

UG

Đồng hồ đếm = CK_CNT = CK_PSC

quầy đăng ký 30 31 32 33 34 35 36 00 01 02 03 00 01 02 03

TIF

MS37384V1

RM0008 Phiên bản 21 395/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

Chế độ nô lệ: Chế độ kiểm soát

Bộ đếm có thể được kích hoạt tùy thuộc vào mức đầu vào được chọn.

Trong ví dụ sau, bộ đếm ngược chỉ đếm khi đầu vào TI1 ở mức thấp:

• Cấu hình kênh 1 để phát hiện mức thấp trên TI1. Định cấu hình thời lượng bộ lọc đầu vào (trong
ví dụ này, chúng tôi không cần bất kỳ bộ lọc nào, vì vậy chúng tôi giữ IC1F=0000). Bộ
chia tỷ lệ chụp trước không được sử dụng để kích hoạt nên người dùng không cần phải
định cấu hình nó. Các bit CC1S chỉ chọn nguồn chụp đầu vào, CC1S=01 trong thanh ghi TIMx_CCMR1.
Viết CC1P=1 vào thanh ghi TIMx_CCER để xác nhận cực tính (và chỉ phát hiện mức thấp).

• Định cấu hình bộ hẹn giờ ở chế độ kiểm soát bằng cách viết SMS=101 vào thanh ghi TIMx_SMCR. Chọn
TI1 làm nguồn đầu vào bằng cách ghi TS=101 vào thanh ghi TIMx_SMCR.

• Kích hoạt bộ đếm bằng cách ghi CEN=1 vào thanh ghi TIMx_CR1 (ở chế độ kiểm soát, bộ đếm không
khởi động nếu CEN=0, bất kể mức đầu vào kích hoạt là gì).

Bộ đếm bắt đầu đếm trên đồng hồ bên trong miễn là TI1 ở mức thấp và dừng ngay khi TI1 ở mức cao. Cờ
TIF trong thanh ghi TIMx_SR được đặt cả khi bộ đếm bắt đầu hoặc dừng.

Độ trễ giữa cạnh tăng trên TI1 và điểm dừng thực tế của bộ đếm là do mạch tái đồng bộ hóa trên
đầu vào TI1.

Hình 137. Mạch điều khiển ở chế độ cổng

TI1

CNT_EN

Đồng hồ đếm = CK_CNT = CK_PSC

quầy đăng ký 30 31 32 33 34 35 36 37 38

TIF

Viết TIF=0
MS40512V1

Chế độ nô lệ: Chế độ kích hoạt

Bộ đếm có thể bắt đầu phản hồi một sự kiện trên đầu vào đã chọn.

Trong ví dụ sau, bộ đếm ngược bắt đầu phản hồi cạnh tăng trên đầu vào TI2:

• Cấu hình kênh 2 để phát hiện các cạnh lên trên TI2. Định cấu hình thời lượng bộ lọc đầu vào
(trong ví dụ này, chúng tôi không cần bất kỳ bộ lọc nào, vì vậy chúng tôi giữ
IC2F=0000). Bộ chia tỷ lệ chụp trước không được sử dụng để kích hoạt nên người dùng không
cần phải định cấu hình nó. Các bit CC2S chỉ chọn nguồn chụp đầu vào, CC2S=01 trong thanh ghi
TIMx_CCMR1. Viết CC2P=1 vào thanh ghi TIMx_CCER để xác nhận cực tính (và chỉ phát hiện mức thấp).

• Định cấu hình bộ hẹn giờ ở chế độ kích hoạt bằng cách viết SMS=110 vào thanh ghi TIMx_SMCR. Chọn
TI2 làm nguồn đầu vào bằng cách ghi TS=110 vào thanh ghi TIMx_SMCR.

Khi cạnh tăng xảy ra trên TI2, bộ đếm bắt đầu đếm trên đồng hồ bên trong và cờ TIF được đặt.

396/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

Độ trễ giữa cạnh tăng trên TI2 và thời điểm bắt đầu thực tế của bộ đếm là do mạch tái đồng bộ hóa trên
đầu vào TI2.

Hình 138. Mạch điều khiển ở chế độ trigger

TI2

CNT_EN

Đồng hồ đếm = CK_CNT = CK_PSC

quầy đăng ký 34 35 36 37 38

TIF
MS37386V1

Chế độ nô lệ: Chế độ đồng hồ ngoài 2 + chế độ kích hoạt

Chế độ đồng hồ bên ngoài 2 có thể được sử dụng cùng với chế độ phụ khác (ngoại trừ chế độ đồng hồ bên
ngoài 1 và chế độ bộ mã hóa). Trong trường hợp này, tín hiệu ETR được sử dụng làm đầu vào đồng hồ
bên ngoài và đầu vào khác có thể được chọn làm đầu vào kích hoạt khi hoạt động ở chế độ đặt lại,
chế độ kiểm soát hoặc chế độ kích hoạt. Không nên chọn ETR làm TRGI thông qua các bit TS của thanh ghi
TIMx_SMCR.

Trong ví dụ sau, bộ đếm ngược được tăng lên ở mỗi cạnh tăng của tín hiệu ETR ngay khi cạnh tăng
của TI1 xảy ra:

1. Cấu hình mạch đầu vào kích hoạt bên ngoài bằng cách lập trình thanh ghi TIMx_SMCR như
sau:

– ETF = 0000: không có bộ lọc

– ETPS = 00: bộ đếm gộp trước bị vô hiệu hóa

– ETP = 0: phát hiện các cạnh tăng trên ETR và ECE=1 để kích hoạt đồng hồ bên ngoài
chế độ 2.

2. Định cấu hình kênh 1 như sau để phát hiện các cạnh lên trên TI:

– IC1F = 0000: không có bộ lọc.

– Bộ chia tỷ lệ chụp trước không được sử dụng để kích hoạt và không cần phải có
được cấu hình.

– CC1S = 01 trong thanh ghi TIMx_CCMR1 để chỉ chọn nguồn chụp đầu vào

– CC1P = 0 trong thanh ghi TIMx_CCER để xác nhận cực tính (và phát hiện cạnh lên
chỉ một).

3. Định cấu hình bộ hẹn giờ ở chế độ kích hoạt bằng cách viết SMS=110 vào thanh ghi TIMx_SMCR. Chọn TI1
làm nguồn đầu vào bằng cách ghi TS=101 vào thanh ghi TIMx_SMCR.

Cạnh tăng trên TI1 cho phép bộ đếm và đặt cờ TIF. Bộ đếm sau đó đếm trên các cạnh tăng ETR.

Độ trễ giữa cạnh lên của tín hiệu ETR và thiết lập lại thực tế của bộ đếm là do mạch tái đồng bộ hóa
trên đầu vào ETRP.

RM0008 Phiên bản 21 397/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

Hình 139. Mạch điều khiển ở chế độ xung nhịp ngoài 2 + chế độ trigger

TI1

CEN/CNT_EN

ETR

Đồng hồ đếm = CK_CNT = CK_PSC

quầy đăng ký 34 35 36

TIF

MS33110V1

15.3.15 Đồng bộ hóa bộ hẹn giờ

Các bộ định thời TIMx được liên kết nội bộ với nhau để đồng bộ hóa hoặc tạo chuỗi. Khi một Bộ hẹn
giờ được cấu hình ở chế độ Chính, nó có thể đặt lại, khởi động, dừng hoặc bấm giờ bộ đếm của Bộ
hẹn giờ khác được cấu hình ở chế độ Phụ.

Hình 140 trình bày tổng quan về lựa chọn kích hoạt và các khối chọn chế độ chính.

Ghi chú: Đồng hồ của bộ định thời phụ phải được bật trước khi nhận các sự kiện từ bộ định thời chính và không
được thay đổi nhanh chóng trong khi nhận được kích hoạt từ bộ định thời chính.

Sử dụng một bộ đếm thời gian làm bộ đếm gộp trước cho bộ đếm thời gian khác

Hình 140. Ví dụ về bộ đếm thời gian Master/Slave

TIM1 TIM2
Cái đồng hồ

MMS TS SMS

UEV
Kiểm Kiểm
TRGO1 ITR0 CK_PSC
soát soát

Bộ đếm trước Quầy tính tiền chế độ chính chế độ nô lệ


Bộ đếm tỷ lệ trước

Lựa chọn kích


hoạt đầu vào

MS37387V1

398/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

Ví dụ: người dùng có thể định cấu hình Bộ định thời 1 để hoạt động như bộ đếm gộp trước cho Bộ định thời 2

(xem Hình 140). Để làm điều này:

• Cấu hình Bộ định thời 1 ở chế độ chính để nó phát ra tín hiệu kích hoạt định kỳ trên mỗi sự kiện cập
nhật UEV. Nếu bạn viết MMS=010 vào thanh ghi TIM1_CR2, cạnh tăng sẽ xuất ra trên TRGO1 mỗi khi
tạo sự kiện cập nhật.

• Để kết nối đầu ra TRGO1 của Bộ định thời 1 với Bộ định thời 2, Bộ định thời 2 phải được cấu hình ở
chế độ phụ bằng cách sử dụng ITR0 làm bộ kích hoạt bên trong. Bạn chọn điều này thông qua các
bit TS trong thanh ghi TIM2_SMCR (viết TS=000).

• Sau đó, bạn đặt bộ điều khiển chế độ phụ ở chế độ đồng hồ bên ngoài 1 (ghi SMS=111 vào thanh ghi
TIM2_SMCR). Điều này làm cho Bộ định thời 2 được ấn định xung nhịp bởi cạnh lên của tín hiệu
kích hoạt Bộ định thời 1 định kỳ (tương ứng với tình trạng tràn bộ đếm của Bộ định thời 1).
• Cuối cùng, cả hai bộ định thời phải được bật bằng cách đặt các bit CEN tương ứng của chúng (thanh

ghi TIMx_CR1).

Ghi chú: Nếu OCx được chọn trên Bộ định thời 1 làm đầu ra kích hoạt (MMS=1xx), cạnh lên của nó được sử dụng để tạo xung nhịp
cho bộ đếm của Bộ định thời 2.

Sử dụng một bộ hẹn giờ để bật bộ hẹn giờ khác

Trong ví dụ này, chúng tôi điều khiển việc kích hoạt Bộ định thời 2 với đầu ra so sánh 1 của Bộ định thời 1.

Tham khảo Hình 140 để biết các kết nối. Bộ định thời 2 chỉ đếm trên đồng hồ bên trong được chia khi OC1REF
của Bộ định thời 1 ở mức cao. Cả hai tần số xung nhịp của bộ đếm đều được chia cho 3 bởi bộ đếm

gộp trước so với CK_INT (fCK_CNT = fCK_INT/3).

• Cấu hình chế độ chính của Bộ định thời gian 1 để gửi tín hiệu Tham chiếu so sánh đầu ra 1 (OC1REF)
của nó làm đầu ra kích hoạt (MMS=100 trong thanh ghi TIM1_CR2).

• Cấu hình dạng sóng OC1REF của Bộ định thời 1 (thanh ghi TIM1_CCMR1).

• Cấu hình Bộ định thời 2 để nhận kích hoạt đầu vào từ Bộ định thời 1 (TS=000 trong TIM2_SMCR
đăng ký).

• Cấu hình bộ định thời 2 ở chế độ kiểm soát (SMS=101 trong thanh ghi TIM2_SMCR).

• Kích hoạt Bộ định thời 2 bằng cách ghi '1 vào bit CEN (thanh ghi TIM2_CR1).
• Bắt đầu Bộ định thời 1 bằng cách ghi '1 vào bit CEN (thanh ghi TIM1_CR1).

Ghi chú: Đồng hồ bộ đếm 2 không được đồng bộ với bộ đếm 1, chế độ này chỉ ảnh hưởng đến tín hiệu kích hoạt bộ
đếm Time 2.

Hình 141. Bộ đếm thời gian 2 với OC1REF của bộ định thời 1

CK_INT

TIMER1-OC1REF

TIMER1-CNT FC FD FE FF 00 01

TIMER2-CNT 3045 3046 3047 3048

TIMER2-TIF

Viết TIF = 0
MS37388V1

Trong ví dụ ở Hình 141, bộ đếm và bộ đếm gộp của bộ đếm thời gian 2 không được khởi tạo trước khi khởi
động. Vì vậy, họ bắt đầu đếm từ giá trị hiện tại của họ. Có thể bắt đầu từ một giá trị nhất định bằng
cách đặt lại cả hai bộ hẹn giờ trước khi bắt đầu Bộ hẹn giờ 1. Sau đó, bạn có thể ghi bất kỳ giá trị nào

RM0008 Phiên bản 21 399/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

bạn muốn trong bộ đếm thời gian. Bộ định thời có thể dễ dàng được đặt lại bằng phần mềm bằng cách sử dụng
bit UG trong thanh ghi TIMx_EGR.

Trong ví dụ tiếp theo, chúng tôi đồng bộ hóa Bộ định thời 1 và Bộ định thời 2. Bộ định thời 1 là bộ định thời chính

và bắt đầu từ 0. Bộ định thời 2 là bộ định thời phụ và bắt đầu từ 0xE7. Tỷ lệ bộ đếm gộp trước là như nhau cho

cả hai bộ tính giờ. Bộ định thời 2 dừng khi Bộ định thời 1 bị vô hiệu hóa bằng cách ghi '0 vào bit CEN trong thanh

ghi TIM1_CR1:

• Cấu hình chế độ chính của Bộ định thời gian 1 để gửi tín hiệu Tham chiếu so sánh đầu ra 1
(OC1REF) của nó làm đầu ra kích hoạt (MMS=100 trong thanh ghi TIM1_CR2).

• Cấu hình dạng sóng OC1REF của Bộ định thời 1 (thanh ghi TIM1_CCMR1).

• Cấu hình Bộ định thời 2 để nhận kích hoạt đầu vào từ Bộ định thời 1 (TS=000 trong TIM2_SMCR
đăng ký).

• Cấu hình bộ định thời 2 ở chế độ kiểm soát (SMS=101 trong thanh ghi TIM2_SMCR).

• Đặt lại bộ định thời 1 bằng cách ghi '1 vào bit UG (thanh ghi TIM1_EGR).

• Đặt lại bộ định thời 2 bằng cách ghi '1 vào bit UG (thanh ghi TIM2_EGR).
• Khởi tạo Bộ định thời 2 thành 0xE7 bằng cách ghi '0xE7' vào bộ đếm bộ định thời 2 (TIM2_CNTL).

• Kích hoạt Bộ định thời 2 bằng cách ghi '1 vào bit CEN (thanh ghi TIM2_CR1).
• Bắt đầu Bộ định thời 1 bằng cách ghi '1 vào bit CEN (thanh ghi TIM1_CR1).

• Dừng bộ định thời 1 bằng cách ghi '0 vào bit CEN (thanh ghi TIM1_CR1).

Hình 142. Gating hẹn giờ 2 với Bật bộ hẹn giờ 1

CK_INT

TIMER1-CEN=CNT_EN

TIMER1-CNT_INIT

TIMER1-CNT 75 00 01 02

TIMER2-CNT AB 00 E7 E8 E9

TIMER2-CNT_INIT

TIMER2-ghi CNT

TIMER2-TIF

Viết TIF = 0
MS37389V1

400/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

Sử dụng một bộ hẹn giờ để bắt đầu một bộ hẹn giờ khác

Trong ví dụ này, chúng tôi thiết lập kích hoạt Bộ hẹn giờ 2 với sự kiện cập nhật của Bộ hẹn giờ 1.
Tham khảo Hình 140 để biết các kết nối. Bộ định thời 2 bắt đầu đếm từ giá trị hiện tại của nó (có thể
khác 0) trên đồng hồ bên trong được chia ngay khi sự kiện cập nhật được tạo ra bởi Bộ định thời 1.
Khi Bộ định thời 2 nhận được tín hiệu kích hoạt, bit CEN của nó sẽ tự động được đặt và bộ đếm đếm cho
đến khi chúng ta ghi '0 vào bit CEN trong thanh ghi TIM2_CR1. Cả hai tần số xung nhịp của bộ đếm

đều được chia cho 3 bởi bộ đếm gộp trước so với CK_INT (fCK_CNT = fCK_INT/3).

• Định cấu hình chế độ chính của Bộ định thời gian 1 để gửi Sự kiện cập nhật (UEV) của nó dưới dạng đầu

ra kích hoạt (MMS=010 trong thanh ghi TIM1_CR2).

• Cấu hình khoảng thời gian của bộ định thời 1 (các thanh ghi TIM1_ARR).

• Cấu hình Bộ định thời 2 để nhận kích hoạt đầu vào từ Bộ định thời 1 (TS=000 trong TIM2_SMCR
đăng ký).

• Cấu hình Bộ định thời 2 ở chế độ kích hoạt (SMS=110 trong thanh ghi TIM2_SMCR).
• Bắt đầu Bộ định thời 1 bằng cách ghi '1 vào bit CEN (thanh ghi TIM1_CR1).

Hình 143. Kích hoạt bộ định thời 2 với bản cập nhật của bộ định thời 1

CK_INT

TIMER1-UEV

TIMER1-CNT FD FE FF 00 01 02

TIMER2-CNT 45 46 47 48

TIMER2-CEN=CNT_EN

TIMER2-TIF

Viết TIF = 0
MS37390V1

Như trong ví dụ trước, người dùng có thể khởi tạo cả hai bộ đếm trước khi bắt đầu đếm.
Hình 144 hiển thị hành vi có cùng cấu hình như trong Hình 143 nhưng ở chế độ kích hoạt thay vì chế độ
kiểm soát (SMS=110 trong thanh ghi TIM2_SMCR).

RM0008 Phiên bản 21 401/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

Hình 144. Kích hoạt bộ hẹn giờ 2 với Bật bộ hẹn giờ 1

CK_INT

TIMER1-CEN=CNT_EN

TIMER1-CNT_INIT

TIMER1-CNT 75 00 01 02

TIMER2-CNT đĩa CD 00 E7 E8 E9 EA

TIMER2-CNT_INIT

TIMER2-ghi CNT

TIMER2-TIF

Viết TIF = 0
MS37391V1

Khởi động đồng bộ 2 bộ hẹn giờ để đáp ứng với bộ kích hoạt bên ngoài

Trong ví dụ này, chúng tôi đặt bật Bộ định thời 1 khi đầu vào TI1 của nó tăng và bật Bộ định
thời 2 khi bật Bộ định thời 1. Tham khảo Hình 140 để biết các kết nối. Để đảm bảo các bộ đếm
được căn chỉnh, Bộ định thời 1 phải được cấu hình ở chế độ Master/Slave (phụ đối với TI1, chủ đối
với Bộ định thời 2):

• Cấu hình chế độ chính của Bộ định thời gian 1 để gửi đầu ra Kích hoạt của nó (MMS=001 trong
thanh ghi TIM1_CR2).

• Cấu hình chế độ phụ của Bộ định thời 1 để nhận kích hoạt đầu vào từ TI1 (TS=100 trong
thanh ghi TIM1_SMCR).

• Cấu hình Bộ định thời 1 ở chế độ kích hoạt (SMS=110 trong thanh ghi TIM1_SMCR).

• Cấu hình bộ định thời 1 ở chế độ Master/Slave bằng cách ghi MSM=1 (thanh ghi TIM1_SMCR).

• Cấu hình Bộ định thời 2 để nhận kích hoạt đầu vào từ Bộ định thời 1 (TS=000 trong TIM2_SMCR
đăng ký).

• Cấu hình bộ định thời 2 ở chế độ kích hoạt (SMS=110 trong thanh ghi TIM2_SMCR).

Khi cạnh tăng xảy ra trên TI1 (Bộ định thời 1), cả hai bộ đếm bắt đầu đếm đồng bộ trên đồng hồ bên
trong và cả hai cờ TIF đều được đặt.

Ghi chú: Trong ví dụ này, cả hai bộ định thời đều được khởi tạo trước khi bắt đầu (bằng cách đặt các
bit UG tương ứng của chúng). Cả hai bộ đếm đều bắt đầu từ 0, nhưng bạn có thể dễ dàng chèn
phần bù giữa chúng bằng cách ghi bất kỳ thanh ghi bộ đếm nào (TIMx_CNT). Bạn có thể thấy rằng chế
độ chính/phụ chèn độ trễ giữa CNT_EN và CK_PSC trên bộ định thời 1.

402/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

Hình 145. Kích hoạt bộ định thời 1 và 2 với đầu vào TI1 của bộ định thời 1

CK_INT

TIMER1-TI1

TIMER1-CEN=CNT_EN

TIMER1-CK_PSC

TIMER1-CNT 00 01 02 03 04 05 06 07 08 09

TIMER1-TIF

TIMER2-CEN=CNT_EN

TIMER2-CK_PSC

TIMER2-CNT 00 01 02 03 04 05 06 07 08 09

TIMER2-TIF
MS37392V1

15.3.16 Chế độ gỡ lỗi

Khi bộ vi điều khiển chuyển sang chế độ gỡ lỗi ( lõi Cortex®-M3 - đã dừng), bộ đếm TIMx tiếp
tục hoạt động bình thường hoặc dừng, tùy thuộc vào bit cấu hình DBG_TIMx_STOP trong mô-đun
DBGMCU. Để biết thêm chi tiết, hãy tham khảo Phần 31.16.2: Hỗ trợ gỡ lỗi cho bộ hẹn
giờ, cơ quan giám sát, bxCAN và I2C.

RM0008 Phiên bản 21 403/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

15.4 thanh ghi TIMx


Tham khảo Phần 2.2 để biết danh sách các từ viết tắt được sử dụng trong mô tả thanh ghi.

Các thanh ghi ngoại vi 32 bit phải được ghi bằng từ (32 bit). Tất cả các thanh ghi ngoại vi khác
phải được viết bằng nửa từ (16 bit) hoặc từ (32 bit). Việc truy cập đọc có thể được thực hiện theo
byte (8 bit), nửa từ (16 bit) hoặc từ (32 bit).

15.4.1 Thanh ghi điều khiển TIMx 1 (TIMx_CR1)

Độ lệch địa chỉ: 0x00

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CKD[1:0] ARPE CMS DIR OPM URS UDIS CEN


Kín đáo
rw rw rw rw rw rw rw rw rw rw

Bit 15:10 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 9:8 CKD: Phân chia đồng hồ

Trường bit này biểu thị tỷ lệ phân chia giữa tần số đồng hồ hẹn giờ (CK_INT) và đồng hồ lấy mẫu được
sử dụng bởi các bộ lọc kỹ thuật số (ETR, TIx),

00: tDTS = tCK_INT


01: tDTS = 2 × tCK_INT
10: tDTS = 4 × tCK_INT
11: Dự trữ

Bit 7 ARPE: Cho phép tải trước tự động tải lại

0: Thanh ghi TIMx_ARR không được đệm


1: Thanh ghi TIMx_ARR được lưu vào bộ đệm

Bits 6:5 CMS: Lựa chọn chế độ căn giữa

00: Chế độ căn lề. Bộ đếm đếm lên hoặc xuống tùy thuộc vào bit hướng (DIR).

01: Chế độ căn giữa 1. Bộ đếm đếm lên xuống luân phiên. Cờ ngắt so sánh đầu ra của các kênh được cấu hình
ở đầu ra (CCxS=00 trong thanh ghi TIMx_CCMRx) chỉ được đặt khi bộ đếm đang đếm ngược.

10: Chế độ căn giữa 2. Bộ đếm đếm lên xuống luân phiên. Cờ ngắt so sánh đầu ra của các kênh được cấu hình
ở đầu ra (CCxS=00 trong thanh ghi TIMx_CCMRx) chỉ được đặt khi bộ đếm đang đếm lên.

11: Chế độ căn giữa 3. Bộ đếm đếm lên xuống luân phiên. Cờ ngắt so sánh đầu ra của các kênh được cấu hình
ở đầu ra (CCxS=00 trong thanh ghi TIMx_CCMRx) được đặt cả khi bộ đếm đang đếm lên hoặc xuống.

Lưu ý: Không được phép chuyển từ chế độ căn lề sang chế độ căn giữa khi bộ đếm đang được bật (CEN=1)

Bit 4 TRỰC TIẾP: Hướng

0: Bộ đếm được sử dụng làm bộ đếm ngược


1: Bộ đếm được sử dụng làm bộ đếm ngược

Lưu ý: Bit này chỉ được đọc khi bộ hẹn giờ được cấu hình ở chế độ Căn giữa hoặc Bộ mã hóa
cách thức.

Bit 3 OPM: Chế độ một xung

0: Bộ đếm không dừng ở sự kiện cập nhật


1: Bộ đếm dừng đếm ở sự kiện cập nhật tiếp theo (xóa bit CEN)

404/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

Bit 2 URS: Cập nhật nguồn yêu cầu

Bit này được thiết lập và xóa bằng phần mềm để chọn nguồn sự kiện UEV.

0: Bất kỳ sự kiện nào sau đây đều tạo ra ngắt cập nhật hoặc yêu cầu DMA nếu được bật.
Những sự kiện này có thể là:

– Bộ đếm tràn/tràn

– Thiết lập bit UG

– Cập nhật thế hệ thông qua bộ điều khiển chế độ phụ

1: Chỉ tràn/tràn bộ đếm mới tạo ra ngắt cập nhật hoặc yêu cầu DMA nếu được bật.

Bit 1 UDIS: Vô hiệu hóa cập nhật

Bit này được thiết lập và xóa bằng phần mềm để bật/tắt việc tạo sự kiện UEV.

0: Đã bật UEV. Sự kiện Cập nhật (UEV) được tạo bởi một trong các sự kiện sau:

– Bộ đếm tràn/tràn

– Thiết lập bit UG

– Cập nhật thế hệ thông qua bộ điều khiển chế độ phụ

Các thanh ghi đệm sau đó được tải với các giá trị tải trước của chúng.

1: UEV bị vô hiệu hóa. Sự kiện Cập nhật không được tạo, các thanh ghi ẩn giữ nguyên giá trị của chúng (ARR,

PSC, CCRx). Tuy nhiên, bộ đếm và bộ đếm gộp trước được khởi tạo lại nếu bit UG được đặt hoặc nếu nhận được
thiết lập lại phần cứng từ bộ điều khiển chế độ phụ.

Bit 0 CEN: Cho phép bộ đếm

0: Bộ đếm bị vô hiệu hóa

1: Đã bật bộ đếm

Lưu ý: Đồng hồ bên ngoài, chế độ kiểm soát và chế độ bộ mã hóa chỉ có thể hoạt động nếu bit CEN đã được cài đặt

trước đó bằng phần mềm. Tuy nhiên, chế độ kích hoạt có thể tự động đặt bit CEN bằng phần cứng.

CEN được xóa tự động ở chế độ một xung khi xảy ra sự kiện cập nhật.

RM0008 Phiên bản 21 405/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

15.4.2 Thanh ghi điều khiển TIMx 2 (TIMx_CR2)

Độ lệch địa chỉ: 0x04

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

TI1S MMS[2:0] CCD


Kín đáo Kín đáo
rw rw rw rw rw

Bit 15:8 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 7 TI1S: Lựa chọn TI1

0: Chân TIMx_CH1 được kết nối với đầu vào TI1


1: Các chân TIMx_CH1, CH2 và CH3 được kết nối với đầu vào TI1 (kết hợp XOR)
Xem thêm Phần 14.3.18: Giao tiếp với cảm biến Hall

Bit 6:4 MMS[2:0]: Lựa chọn chế độ chính

Các bit này cho phép chọn thông tin sẽ được gửi ở chế độ chính tới bộ định thời phụ để đồng bộ hóa

(TRGO). Sự kết hợp như sau:


000: Đặt lại - bit UG từ thanh ghi TIMx_EGR được sử dụng làm đầu ra kích hoạt (TRGO). Nếu thiết lập lại
được tạo bởi đầu vào kích hoạt (bộ điều khiển chế độ phụ được định cấu hình ở chế độ đặt lại) thì tín hiệu
trên TRGO bị trễ so với thiết lập lại thực tế.

001: Kích hoạt - tín hiệu kích hoạt bộ đếm, CNT_EN, được sử dụng làm đầu ra kích hoạt (TRGO). Sẽ rất hữu
ích khi bắt đầu nhiều bộ hẹn giờ cùng lúc hoặc để điều khiển một cửa sổ trong đó bộ hẹn giờ phụ được bật.

Tín hiệu Kích hoạt bộ đếm được tạo bằng logic OR giữa bit điều khiển CEN và đầu vào kích hoạt khi được
định cấu hình ở chế độ kiểm soát.

Khi tín hiệu Kích hoạt bộ đếm được điều khiển bởi đầu vào kích hoạt, sẽ có độ trễ trên TRGO, ngoại trừ nếu
chế độ chính/phụ được chọn (xem mô tả bit MSM trong thanh ghi TIMx_SMCR).

010: Cập nhật - Sự kiện cập nhật được chọn làm đầu ra kích hoạt (TRGO). Ví dụ, bộ đếm thời gian chính có
thể được sử dụng làm bộ đếm gộp trước cho bộ đếm thời gian phụ.
011: Xung so sánh - Đầu ra kích hoạt gửi một xung dương khi cờ CC1IF được đặt (ngay cả khi nó đã ở mức
cao), ngay khi xảy ra việc chụp hoặc so sánh.
(TRGO)
100: So sánh - Tín hiệu OC1REF được sử dụng làm đầu ra kích hoạt (TRGO)
101: So sánh - Tín hiệu OC2REF được sử dụng làm đầu ra kích hoạt (TRGO)
110: So sánh - Tín hiệu OC3REF được sử dụng làm đầu ra trigger (TRGO)
111: So sánh - Tín hiệu OC4REF được sử dụng làm đầu ra trigger (TRGO)

Lưu ý: Đồng hồ của bộ định thời phụ và ADC phải được bật trước khi nhận các sự kiện từ bộ định thời chính
và không được thay đổi nhanh chóng trong khi nhận được kích hoạt từ bộ định thời chính.

Bit 3 CCDS: Chụp/so sánh lựa chọn DMA

0: Yêu cầu DMA CCx được gửi khi xảy ra sự kiện CCx
1: Yêu cầu CCx DMA được gửi khi xảy ra sự kiện cập nhật

Bit 2:0 Dự trữ, phải được giữ ở giá trị đặt lại.

406/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

15.4.3 Thanh ghi điều khiển chế độ nô lệ TIMx (TIMx_SMCR)

Độ lệch địa chỉ: 0x08

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

ETP ECE ETPS[1:0] ETF[3:0] MSM TS[2:0] SMS[2:0]


Res.
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15 ETP: Phân cực kích hoạt bên ngoài

Bit này chọn xem ETR hay ETR được sử dụng cho hoạt động kích hoạt
0: ETR không đảo ngược, hoạt động ở mức cao hoặc cạnh tăng
1: ETR bị đảo ngược, hoạt động ở mức thấp hoặc cạnh giảm

Bit 14 ECE: Kích hoạt đồng hồ bên ngoài

Bit này cho phép chế độ đồng hồ bên ngoài 2.

0: Chế độ đồng hồ ngoài 2 bị tắt

1: Đã bật chế độ đồng hồ bên ngoài 2. Bộ đếm được điều khiển bởi bất kỳ cạnh hoạt động nào trên tín
hiệu ETRF.

1: Việc đặt bit ECE có tác dụng tương tự như chọn chế độ xung nhịp bên ngoài 1 với TRGI được kết nối
với ETRF (SMS=111 và TS=111).
2: Có thể sử dụng đồng thời chế độ đồng hồ bên ngoài 2 với các chế độ phụ sau: chế độ reset,
chế độ kiểm soát và chế độ kích hoạt. Tuy nhiên, TRGI không được kết nối với ETRF trong
trường hợp này (bit TS không được là 111).
3: Nếu chế độ đồng hồ bên ngoài 1 và chế độ đồng hồ bên ngoài 2 được bật cùng lúc, đầu vào đồng hồ bên

ngoài là ERF.

Bits 13:12 ETPS: Bộ chia tỷ lệ kích hoạt bên ngoài

Tần số ETRP của tín hiệu kích hoạt bên ngoài tối đa phải bằng 1/4 tần số CK_INT. Bộ đếm
gộp trước có thể được kích hoạt để giảm tần số ETRP. Nó rất hữu ích khi nhập đồng hồ bên ngoài
nhanh.
00: Bộ chia tỷ lệ trước TẮT

01: Tần số ETRP chia cho 2


10: tần số ETRP chia cho 4
11: Tần số ETRP chia cho 8

Bits 11:8 ETF[3:0]: Bộ lọc kích hoạt bên ngoài

Trường bit này sau đó xác định tần số được sử dụng để lấy mẫu tín hiệu ETRP và độ dài của bộ lọc
kỹ thuật số được áp dụng cho ETRP. Bộ lọc kỹ thuật số được tạo từ một bộ đếm sự kiện
trong đó cần có N sự kiện liên tiếp để xác thực quá trình chuyển đổi ở đầu ra:

0000: Không có bộ lọc, việc lấy mẫu được thực hiện tại fDTS

0001: fSAMPLING=fCK_INT, N=2


0010: fSAMPLING=fCK_INT, N=4
0011: fSAMPLING=fCK_INT, N=8²
0100: fSAMPLING=fDTS/2, N=6
0101: fSAMPLING=fDTS/2, N=8
0110: fSAMPLING=fDTS/4, N=6²
0111: fSAMPLING=fDTS/4, N=8

1000: fSAMPLING=fDTS/8, N=6


1001: fSAMPLING=fDTS/8, N=8
1010: fSAMPLING=fDTS/16, N=5
1011: fSAMPLING=fDTS/16, N=6
1100: fSAMPLING=fDTS/16, N=8
1101: fSAMPLING=fDTS/32, N=5
1110: fSAMPLING=fDTS/32, N=6
1111: fSAMPLING=fDTS/32, N=8

RM0008 Phiên bản 21 407/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

Bit 7 MSM: Chế độ Master/Slave

0: Không có hành động

1: Tác động của một sự kiện lên đầu vào kích hoạt (TRGI) bị trì hoãn để cho phép đồng bộ hóa
hoàn hảo giữa bộ hẹn giờ hiện tại và bộ đếm thời gian phụ của nó (thông qua TRGO). Sẽ rất hữu ích nếu
chúng ta muốn đồng bộ hóa nhiều bộ tính giờ trên một sự kiện bên ngoài.

Bit 6:4 TS: Lựa chọn kích hoạt

Trường bit này chọn đầu vào kích hoạt được sử dụng để đồng bộ hóa bộ đếm.
000: Kích hoạt nội bộ 0 (ITR0).
001: Kích hoạt nội bộ 1 (ITR1).
010: Kích hoạt nội bộ 2 (ITR2).
011: Kích hoạt nội bộ 3 (ITR3).
100: Máy dò cạnh TI1 (TI1F_ED)
101: Đầu vào hẹn giờ được lọc 1 (TI1FP1)
110: Đầu vào hẹn giờ được lọc 2 (TI2FP2)
111: Đầu vào kích hoạt bên ngoài (ETRF)

Xem Bảng 86: Kết nối kích hoạt nội bộ TIMx để biết thêm chi tiết về ý nghĩa ITRx cho mỗi Bộ hẹn giờ.

Lưu ý: Các bit này chỉ được thay đổi khi chúng không được sử dụng (ví dụ khi SMS=000) thành
tránh phát hiện cạnh sai ở quá trình chuyển đổi.

Bit 3 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 2:0 SMS: Lựa chọn chế độ phụ

Khi tín hiệu bên ngoài được chọn, cạnh hoạt động của tín hiệu kích hoạt (TRGI) được liên kết với cực
được chọn trên đầu vào bên ngoài (xem mô tả thanh ghi Điều khiển đầu vào và mô tả thanh ghi Điều khiển.

000: Chế độ phụ bị tắt - nếu CEN = '1 thì bộ đếm gộp trước được đồng hồ bên trong bấm giờ trực tiếp.

001: Chế độ mã hóa 1 - Bộ đếm đếm lên/xuống trên cạnh TI2FP1 tùy thuộc vào mức TI1FP2.

010: Chế độ mã hóa 2 - Bộ đếm đếm lên/xuống trên cạnh TI1FP2 tùy thuộc vào mức TI2FP1.

011: Chế độ bộ mã hóa 3 - Bộ đếm đếm lên/xuống trên cả hai cạnh TI1FP1 và TI2FP2 tùy thuộc vào mức
của đầu vào khác.
100: Chế độ đặt lại - Cạnh nâng của đầu vào kích hoạt đã chọn (TRGI) sẽ khởi tạo lại bộ đếm và tạo bản cập
nhật của các thanh ghi.

101: Chế độ kiểm soát - Đồng hồ bộ đếm được bật khi đầu vào kích hoạt (TRGI) ở mức cao. Bộ đếm dừng (nhưng
không được đặt lại) ngay khi bộ kích hoạt ở mức thấp. Cả việc bắt đầu và dừng của bộ đếm đều được điều
khiển.

110: Chế độ kích hoạt - Bộ đếm bắt đầu ở cạnh tăng của TRGI kích hoạt (nhưng nó không được đặt lại).
Chỉ có sự khởi đầu của bộ đếm được kiểm soát.
111: Chế độ đồng hồ bên ngoài 1 - Các cạnh nhô lên của bộ kích hoạt đã chọn (TRGI) đồng hồ cho bộ đếm.

Lưu ý: Không được sử dụng chế độ kiểm soát nếu TI1F_ED được chọn làm đầu vào kích hoạt (TS=100).
Thật vậy, TI1F_ED xuất ra 1 xung cho mỗi lần chuyển tiếp trên TI1F, trong khi chế độ kiểm soát sẽ kiểm
tra mức tín hiệu kích hoạt.

Đồng hồ của bộ định thời phụ phải được bật trước khi nhận các sự kiện từ bộ định thời chính và không
được thay đổi nhanh chóng trong khi nhận được kích hoạt từ bộ định thời chính.

408/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

Bảng 86. Kết nối kích hoạt bên trong TIMx(1)

TIM nô lệ ITR0 (TS = 000) ITR1 (TS = 001) ITR2 (TS = 010) ITR3 (TS = 011)

TIM2 TIM1 TIM8 TIM3 TIM4

TIM3 TIM1 TIM2 TIM5 TIM4

TIM4 TIM1 TIM2 TIM3 TIM8

TIM5 TIM2 TIM3 TIM4 TIM8

1. Khi sản phẩm không có bộ hẹn giờ thì bộ kích hoạt ITRx tương ứng sẽ không có sẵn.

15.4.4 TIMx DMA/Thanh ghi cho phép ngắt (TIMx_DIER)


Độ lệch địa chỉ: 0x0C

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

TDE CC4DE CC3DE CC2DE CC1DE UDE CÀ VẠT CC4IE CC3IE CC2IE CC1IE UIE
Res. độ phân giải Res. độ phân giải

rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 14 TDE: Kích hoạt yêu cầu DMA kích hoạt

0: Yêu cầu DMA kích hoạt bị vô hiệu hóa.

1: Đã bật yêu cầu DMA kích hoạt.

Bit 13 Dành riêng, luôn đọc là 0

Bit 12 CC4DE: Cho phép chụp/so sánh 4 yêu cầu DMA

0: Yêu cầu DMA CC4 bị vô hiệu hóa.


1: Đã bật yêu cầu DMA CC4.

Bit 11 CC3DE: Cho phép chụp/so sánh 3 yêu cầu DMA

0: Yêu cầu DMA CC3 bị vô hiệu hóa.


1: Đã bật yêu cầu DMA CC3.

Bit 10 CC2DE: Cho phép chụp/so sánh 2 yêu cầu DMA

0: Yêu cầu DMA CC2 bị vô hiệu hóa.


1: Đã bật yêu cầu DMA CC2.

Bit 9 CC1DE: Cho phép chụp/so sánh 1 yêu cầu DMA

0: Yêu cầu DMA CC1 bị vô hiệu hóa.


1: Đã bật yêu cầu CC1 DMA.

Bit 8 UDE: Cho phép yêu cầu cập nhật DMA

0: Yêu cầu cập nhật DMA bị vô hiệu hóa.


1: Đã bật yêu cầu cập nhật DMA.

Bit 7 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 6 TIE: Cho phép ngắt kích hoạt

0: Ngắt kích hoạt bị vô hiệu hóa.


1: Kích hoạt ngắt kích hoạt.

Bit 5 Dự trữ, phải được giữ ở giá trị đặt lại.

RM0008 Phiên bản 21 409/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

Bit 4 CC4IE: Cho phép chụp/so sánh 4 ngắt

0: Ngắt CC4 bị vô hiệu hóa.


1: Cho phép ngắt CC4.

Bit 3 CC3IE: Cho phép chụp/so sánh 3 ngắt

0: Ngắt CC3 bị vô hiệu hóa.


1: Cho phép ngắt CC3.

Bit 2 CC2IE: Cho phép chụp/so sánh 2 ngắt

0: Ngắt CC2 bị vô hiệu hóa.


1: Cho phép ngắt CC2.

Bit 1 CC1IE: Cho phép chụp/so sánh 1 ngắt

0: Ngắt CC1 bị vô hiệu hóa.


1: Cho phép ngắt CC1.

Bit 0 UIE: Cho phép ngắt cập nhật

0: Ngắt cập nhật bị vô hiệu hóa.


1: Cho phép ngắt cập nhật.

15.4.5 Thanh ghi trạng thái TIMx (TIMx_SR)

Độ lệch địa chỉ: 0x10

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CC4OF CC3OF CC2OF CC1OF TIF CC4IF CC3IF CC2IF CC1IF UIF
Kín đáo Kín đáo độ phân giải

rc_w0 rc_w0 rc_w0 rc_w0 rc_w0 rc_w0 rc_w0 rc_w0 rc_w0 rc_w0

Bit 15:13 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 12 CC4OF: Chụp/So sánh 4 cờ bắt vượt mức

tham khảo mô tả CC1OF

Bit 11 CC3OF: Chụp/So sánh 3 cờ bắt vượt mức

tham khảo mô tả CC1OF

Bit 10 CC2OF: Chụp/so sánh 2 cờ bắt vượt mức

tham khảo mô tả CC1OF

Bit 9 CC1OF: Chụp/So sánh 1 cờ bắt vượt mức

Cờ này chỉ được đặt bằng phần cứng khi kênh tương ứng được định cấu hình ở chế độ chụp đầu vào.
Nó được xóa bằng phần mềm bằng cách ghi nó vào '0'.
0: Không phát hiện thấy tình trạng chụp quá mức.

1: Giá trị bộ đếm đã được ghi lại trong thanh ghi TIMx_CCR1 trong khi cờ CC1IF đã được đặt

Bit 8:7 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 6 TIF: Cờ ngắt kích hoạt

Cờ này được đặt bằng phần cứng khi có sự kiện kích hoạt (cạnh hoạt động được phát hiện trên đầu vào TRGI khi bộ

điều khiển chế độ phụ được bật ở tất cả các chế độ ngoại trừ chế độ kiểm soát, cả hai cạnh trong trường hợp

chế độ kiểm soát được chọn). Nó được xóa bằng phần mềm.

0: Không có sự kiện kích hoạt nào xảy ra.

1: Đang chờ kích hoạt ngắt.

Bit 5 Dự trữ, phải được giữ ở giá trị đặt lại.

410/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

Bit 4 CC4IF: Cờ bắt/so sánh 4 ngắt

tham khảo mô tả CC1IF

Bit 3 CC3IF: Cờ bắt/so sánh 3 ngắt

tham khảo mô tả CC1IF

Bit 2 CC2IF: Cờ bắt/so sánh 2 ngắt

tham khảo mô tả CC1IF

Bit 1 CC1IF: Chụp/so sánh 1 cờ ngắt

Nếu kênh CC1 được cấu hình làm đầu ra:


Cờ này được đặt bằng phần cứng khi bộ đếm khớp với giá trị so sánh, với một số ngoại lệ ở
chế độ căn giữa (tham khảo các bit CMS trong mô tả thanh ghi TIMx_CR1). Nó được xóa bằng
phần mềm.
0: Không khớp.

1: Nội dung của bộ đếm TIMx_CNT trùng khớp với nội dung của thanh ghi TIMx_CCR1.

Nếu kênh CC1 được cấu hình làm đầu vào:


Bit này được thiết lập bởi phần cứng khi chụp. Nó được xóa bằng phần mềm hoặc bằng cách
đọc thanh ghi TIMx_CCR1.
0: Không xảy ra quá trình thu thập đầu vào.

1: Giá trị bộ đếm đã được ghi lại trong thanh ghi TIMx_CCR1 (Một cạnh đã được phát hiện trên IC1
khớp với cực đã chọn).

Bit 0 UIF: Cờ ngắt cập nhật

– Bit này được thiết lập bởi phần cứng trong sự kiện cập nhật. Nó được xóa bằng phần mềm.

0: Không có cập nhật nào xảy ra.

1: Cập nhật ngắt đang chờ xử lý. Bit này được thiết lập bởi phần cứng khi các thanh ghi được cập nhật:

– Khi tràn hoặc tràn và nếu UDIS=0 trong thanh ghi TIMx_CR1.

– Khi CNT được khởi tạo lại bằng phần mềm sử dụng bit UG trong thanh ghi TIMx_EGR, nếu URS=0 và
UDIS=0 trong thanh ghi TIMx_CR1.

– Khi CNT được khởi tạo lại bởi một sự kiện kích hoạt (tham khảo mô tả thanh ghi điều khiển đồng bộ),
nếu URS=0 và UDIS=0 trong thanh ghi TIMx_CR1.

RM0008 Phiên bản 21 411/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

15.4.6 Thanh ghi tạo sự kiện TIMx (TIMx_EGR)


Độ lệch địa chỉ: 0x14

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

TG CC4G CC3G CC2G CC1G UG


Kín đáo Res.
w wwwww

Bit 15:7 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 6 TG: Tạo kích hoạt

Bit này được thiết lập bởi phần mềm để tạo ra một sự kiện, nó sẽ tự động bị xóa bằng phần cứng.

0: Không có hành động

1: Cờ TIF được đặt trong thanh ghi TIMx_SR. Sự gián đoạn liên quan hoặc chuyển DMA có thể xảy ra nếu
được bật.

Bit 5 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 4 CC4G: Chụp/so sánh thế hệ thứ 4

tham khảo mô tả CC1G

Bit 3 CC3G: Chụp/so sánh thế hệ thứ 3

tham khảo mô tả CC1G

Bit 2 CC2G: Chụp/so sánh thế hệ thứ 2

tham khảo mô tả CC1G

Bit 1 CC1G: Chụp/so sánh 1 thế hệ

Bit này được thiết lập bởi phần mềm để tạo ra một sự kiện, nó sẽ tự động bị xóa bằng phần cứng.

0: Không có hành động

1: Sự kiện thu thập/so sánh được tạo trên kênh 1:


Nếu kênh CC1 được cấu hình làm đầu ra:
Cờ CC1IF được đặt, ngắt tương ứng hoặc yêu cầu DMA sẽ được gửi nếu được bật.
Nếu kênh CC1 được cấu hình làm đầu vào:
Giá trị hiện tại của bộ đếm được ghi vào thanh ghi TIMx_CCR1. Cờ CC1IF được đặt, yêu cầu ngắt hoặc DMA
tương ứng sẽ được gửi nếu được bật. Cờ CC1OF được đặt nếu cờ CC1IF đã ở mức cao.

Bit 0 UG: Tạo bản cập nhật

Bit này có thể được thiết lập bằng phần mềm, nó sẽ tự động bị xóa bằng phần cứng.
0: Không có hành động

1: Khởi tạo lại bộ đếm và tạo bản cập nhật của các thanh ghi. Lưu ý rằng bộ đếm bộ đếm gộp trước cũng bị
xóa (dù sao thì tỷ lệ của bộ đếm gộp trước cũng không bị ảnh hưởng). Bộ đếm sẽ bị xóa nếu chế độ căn giữa
được chọn hoặc nếu DIR=0 (đếm ngược), nếu không, bộ đếm sẽ nhận giá trị tự động tải lại (TIMx_ARR) nếu
DIR=1 (đếm ngược).

412/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

15.4.7 Thanh ghi chế độ chụp/so sánh TIMx 1 (TIMx_CCMR1)

Độ lệch địa chỉ: 0x18

Giá trị đặt lại: 0x0000

Các kênh có thể được sử dụng ở đầu vào (chế độ chụp) hoặc ở đầu ra (chế độ so sánh). Hướng
của kênh được xác định bằng cách định cấu hình các bit CCxS tương ứng. Tất cả các bit khác của
thanh ghi này có chức năng khác ở chế độ đầu vào và đầu ra. Đối với một bit nhất định, OCxx mô tả
chức năng của nó khi kênh được cấu hình ở đầu ra, ICxx mô tả chức năng của nó khi kênh được cấu
hình ở đầu vào. Hãy cẩn thận rằng cùng một bit có thể có ý nghĩa khác nhau cho giai đoạn đầu vào
và giai đoạn đầu ra.

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

OC2CE OC2M[2:0] OC2PE OC2FE OC1CE OC1M[2:0] OC1PE OC1FE


CC2S[1:0] CC1S[1:0]
IC2F[3:0] IC2PSC[1:0] IC1F[3:0] IC1PSC[1:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Chế độ so sánh đầu ra

Bit 15 OC2CE: Cho phép xóa so sánh đầu ra 2

Bit 14:12 OC2M[2:0]: Chế độ so sánh đầu ra 2

Bit 11 OC2PE: Cho phép tải trước so sánh đầu ra 2

Bit 10 OC2FE: Cho phép so sánh đầu ra 2 nhanh

Bit 9:8 CC2S[1:0]: Chụp/So sánh 2 lựa chọn

Trường bit này xác định hướng của kênh (đầu vào/đầu ra) cũng như đầu vào được sử dụng.
00: Kênh CC2 được cấu hình làm đầu ra
01: Kênh CC2 được cấu hình làm đầu vào, IC2 được ánh xạ trên TI2
10: Kênh CC2 được cấu hình làm đầu vào, IC2 được ánh xạ trên TI1
11: Kênh CC2 được cấu hình làm đầu vào, IC2 được ánh xạ trên TRC. Chế độ này chỉ hoạt động nếu đầu vào
kích hoạt bên trong được chọn thông qua bit TS (thanh ghi TIMx_SMCR)

Lưu ý: Các bit CC2S chỉ có thể ghi khi kênh TẮT (CC2E = 0 trong TIMx_CCER).

Bit 7 OC1CE: Cho phép xóa so sánh đầu ra 1

OC1CE: So sánh đầu ra 1 Xóa Kích hoạt

0: OC1Ref không bị ảnh hưởng bởi đầu vào ETRF


1: OC1Ref bị xóa ngay khi phát hiện mức Cao trên đầu vào ETRF

RM0008 Phiên bản 21 413/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

Bit 6:4 OC1M: So sánh đầu ra 1 chế độ

Các bit này xác định hành vi của tín hiệu tham chiếu đầu ra OC1REF mà từ đó OC1 và OC1N được tạo ra. OC1REF

hoạt động ở mức cao trong khi mức hoạt động OC1 và OC1N phụ thuộc vào các bit CC1P và CC1NP.

000: Frozen - Việc so sánh giữa thanh ghi so sánh đầu ra TIMx_CCR1 và bộ đếm TIMx_CNT không ảnh hưởng đến

đầu ra. (Chế độ này được sử dụng để tạo cơ sở định thời).

001: Đặt kênh 1 ở mức hoạt động phù hợp. Tín hiệu OC1REF bị ép lên cao khi bộ đếm TIMx_CNT khớp với thanh ghi

chụp/so sánh 1 (TIMx_CCR1).

010: Đặt kênh 1 ở mức không hoạt động khi khớp. Tín hiệu OC1REF bị ép ở mức thấp khi bộ đếm TIMx_CNT

khớp với thanh ghi chụp/so sánh 1 (TIMx_CCR1).

011: Chuyển đổi - OC1REF chuyển đổi khi TIMx_CNT=TIMx_CCR1.


100: Mức độ không hoạt động cưỡng bức - OC1REF bị buộc ở mức thấp.

101: Mức độ hoạt động cưỡng bức - OC1REF bị buộc ở mức cao.

110: Chế độPWM 1 - Trong quá trình đếm ngược, kênh 1 hoạt động miễn là TIMx_CNT<TIMx_CCR1 không hoạt động.

Trong đếm ngược, kênh 1 không hoạt động (OC1REF='0) miễn là TIMx_CNT>TIMx_CCR1 còn hoạt động

(OC1REF=1).

111: Chế độPWM 2 - Trong quá trình đếm ngược, kênh 1 không hoạt động miễn là TIMx_CNT<TIMx_CCR1 khác vẫn hoạt

động. Trong quá trình đếm ngược, kênh 1 hoạt động miễn là TIMx_CNT>TIMx_CCR1 không hoạt động.

Lưu ý: Ở chế độPWM 1 hoặc 2, mức OCREF chỉ thay đổi khi kết quả của

so sánh thay đổi hoặc khi chế độ so sánh đầu ra chuyển từ chế độ “đóng băng” sang chế độ “PWM”.

Bit 3 OC1PE: Cho phép tải trước so sánh đầu ra 1

0: Đăng ký tải trước trên TIMx_CCR1 bị tắt. TIMx_CCR1 có thể được ghi bất cứ lúc nào, giá trị mới sẽ được

tính đến ngay lập tức.

1: Đăng ký tải trước trên TIMx_CCR1 được bật. Hoạt động đọc/ghi truy cập vào thanh ghi tải trước. Giá

trị tải trước TIMx_CCR1 được tải vào thanh ghi hoạt động tại mỗi sự kiện cập nhật.

Lưu ý: 1: Các bit này không thể được sửa đổi miễn là LOCK cấp 3 đã được lập trình (bit LOCK trong thanh ghi

TIMx_BDTR) và CC1S=00 (kênh được cấu hình ở đầu ra).

2: Có thể sử dụng chế độ xung mà không cần xác nhận thanh ghi tải trước chỉ ở chế độ một xung (bit

OPM được đặt trong thanh ghi TIMx_CR1). Nếu không thì hành vi không được đảm bảo.

Bit 2 OC1FE: So sánh đầu ra 1 cho phép nhanh

Bit này được sử dụng để tăng tốc tác động của một sự kiện lên bộ kích hoạt ở đầu vào trên đầu ra CC.

0: CC1 hoạt động bình thường tùy thuộc vào giá trị bộ đếm và CCR1 ngay cả khi bộ kích hoạt BẬT. Độ trễ tối

thiểu để kích hoạt đầu ra CC1 khi xuất hiện cạnh trên đầu vào kích hoạt là 5 chu kỳ xung nhịp.

1: Cạnh hoạt động trên đầu vào kích hoạt hoạt động giống như đối sánh so sánh trên đầu ra CC1. Sau đó, OC

được đặt ở mức so sánh độc lập với kết quả so sánh. Độ trễ lấy mẫu đầu vào kích hoạt và kích hoạt đầu ra CC1

giảm xuống còn 3 chu kỳ xung nhịp. OCFE chỉ hoạt động nếu kênh được cấu hình ở chế độPWM1 hoặcPWM2.

Bit 1:0 CC1S: Chụp/So sánh 1 lựa chọn

Trường bit này xác định hướng của kênh (đầu vào/đầu ra) cũng như đầu vào được sử dụng.

00: Kênh CC1 được cấu hình làm đầu ra.

01: Kênh CC1 được cấu hình làm đầu vào, IC1 được ánh xạ trên TI1.

10: Kênh CC1 được cấu hình làm đầu vào, IC1 được ánh xạ trên TI2.

11: Kênh CC1 được cấu hình làm đầu vào, IC1 được ánh xạ trên TRC. Chế độ này chỉ hoạt động nếu đầu vào kích

hoạt bên trong được chọn thông qua bit TS (thanh ghi TIMx_SMCR)

Lưu ý: Các bit CC1S chỉ có thể ghi khi kênh TẮT (CC1E = 0 trong TIMx_CCER).

414/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

Chế độ chụp đầu vào

Bit 15:12 IC2F: Bộ lọc chụp đầu vào 2

Bit 11:10 IC2PSC[1:0]: Bộ chia tỷ lệ thu nạp đầu vào 2

Bit 9:8 CC2S: Chụp/so sánh 2 lựa chọn Trường bit này

xác định hướng của kênh (đầu vào/đầu ra) cũng như đầu vào được sử dụng.
00: Kênh CC2 được cấu hình làm đầu ra.
01: Kênh CC2 được cấu hình làm đầu vào, IC2 được ánh xạ trên TI2.
10: Kênh CC2 được cấu hình làm đầu vào, IC2 được ánh xạ trên TI1.
11: Kênh CC2 được cấu hình làm đầu vào, IC2 được ánh xạ trên TRC. Chế độ này chỉ hoạt động nếu đầu vào kích
hoạt bên trong được chọn thông qua bit TS (thanh ghi TIMx_SMCR)

Lưu ý: Các bit CC2S chỉ có thể ghi khi kênh TẮT (CC2E = 0 trong TIMx_CCER).

Bit 7:4 IC1F: Bộ lọc thu thập đầu vào 1

Trường bit này xác định tần số được sử dụng để lấy mẫu đầu vào TI1 và độ dài của bộ lọc kỹ thuật số được
áp dụng cho TI1. Bộ lọc kỹ thuật số được tạo từ một bộ đếm sự kiện trong đó cần có N sự kiện liên tiếp để
xác thực quá trình chuyển đổi ở đầu ra: 0000: Không có

bộ lọc, việc lấy mẫu được thực hiện tại fDTS

0001: fSAMPLING = fCK_INT , N=2


0010: fSAMPLING=fCK_INT, N =4 0011:
fSAMPLING=fCK_INT, N=8 0100:
fSAMPLING=fDTS/2, N=6 0101:
fSAMPLING=fDTS/2, N=8 0110:
fSAMPLING=fDTS/4, N=6 0111:
fSAMPLING=fDTS/ 4, N=8 1000:

fSAMPLING=fDTS/8, N=6 1001:

fSAMPLING=fDTS/8, N=8 1010:

fSAMPLING=fDTS/16, N=5 1011:

fSAMPLING=fDTS/16, N=6 1100 :

fSAMPLING=fDTS/16, N=8 1101:

fSAMPLING=fDTS/32, N=5 1110:

fSAMPLING=fDTS/32, N=6 1111:

fSAMPLING=fDTS/32, N=8

Bit 3:2 IC1PSC: Bộ đếm gộp 1 thu thập đầu vào

Trường bit này xác định tỷ lệ của bộ đếm gộp hoạt động trên đầu vào CC1 (IC1).
Bộ đếm gộp trước được đặt lại ngay khi CC1E=0 (thanh ghi TIMx_CCER). 00: không có

bộ đếm trước, việc chụp được thực hiện mỗi khi phát hiện thấy một cạnh trên đầu vào chụp 01: việc chụp

được thực hiện một lần sau mỗi 2 sự kiện 10: việc

chụp được thực hiện một lần trong mỗi 4 sự kiện

11: việc chụp được thực hiện một lần trong mỗi 8 sự kiện

Bit 1:0 CC1S: Lựa chọn Chụp/So sánh 1 Trường bit này

xác định hướng của kênh (đầu vào/đầu ra) cũng như đầu vào được sử dụng.
00: Kênh CC1 được cấu hình làm đầu ra 01: Kênh
CC1 được cấu hình làm đầu vào, IC1 được ánh xạ trên TI1 10: Kênh CC1
được cấu hình làm đầu vào, IC1 được ánh xạ trên TI2 11: Kênh CC1 được
cấu hình làm đầu vào, IC1 được ánh xạ trên TRC . Chế độ này chỉ hoạt động nếu đầu vào kích hoạt bên trong
được chọn thông qua bit TS (thanh ghi TIMx_SMCR)

Lưu ý: Các bit CC1S chỉ có thể ghi khi kênh TẮT (CC1E = 0 trong TIMx_CCER).

RM0008 Phiên bản 21 415/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

15.4.8 Thanh ghi chế độ chụp/so sánh TIMx 2 (TIMx_CCMR2)

Độ lệch địa chỉ: 0x1C

Giá trị đặt lại: 0x0000

Tham khảo mô tả đăng ký CCMR1 ở trên.


15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

OC4CE OC4M[2:0] OC4PE OC4FE OC3CE OC3M[2:0] OC3PE OC3FE


CC4S[1:0] CC3S[1:0]
IC4F[3:0] IC4PSC[1:0] IC3F[3:0] IC3PSC[1:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Chế độ so sánh đầu ra

Bit 15 OC4CE: Cho phép xóa so sánh đầu ra 4

Bit 14:12 OC4M: Đầu ra so sánh 4 chế độ

Bit 11 OC4PE: Cho phép tải trước so sánh đầu ra 4

Bit 10 OC4FE: Đầu ra so sánh 4 kích hoạt nhanh

Bit 9:8 CC4S: Chụp/So sánh 4 lựa chọn

Trường bit này xác định hướng của kênh (đầu vào/đầu ra) cũng như đầu vào được sử dụng.
00: Kênh CC4 được cấu hình làm đầu ra
01: Kênh CC4 được cấu hình làm đầu vào, IC4 được ánh xạ trên TI4
10: Kênh CC4 được cấu hình làm đầu vào, IC4 được ánh xạ trên TI3
11: Kênh CC4 được cấu hình làm đầu vào, IC4 được ánh xạ trên TRC. Chế độ này chỉ hoạt động nếu đầu vào kích
hoạt bên trong được chọn thông qua bit TS (thanh ghi TIMx_SMCR)

Lưu ý: Các bit CC4S chỉ có thể ghi khi kênh TẮT (CC4E = 0 trong TIMx_CCER).

Bit 7 OC3CE: Cho phép xóa so sánh đầu ra 3

Bit 6:4 OC3M: Chế độ so sánh đầu ra 3

Bit 3 OC3PE: Cho phép tải trước so sánh đầu ra 3

Bit 2 OC3FE: Đầu ra so sánh 3 kích hoạt nhanh

Bit 1:0 CC3S: Chụp/So sánh 3 lựa chọn

Trường bit này xác định hướng của kênh (đầu vào/đầu ra) cũng như đầu vào được sử dụng.
00: Kênh CC3 được cấu hình làm đầu ra
01: Kênh CC3 được cấu hình làm đầu vào, IC3 được ánh xạ trên TI3
10: Kênh CC3 được cấu hình làm đầu vào, IC3 được ánh xạ trên TI4
11: Kênh CC3 được cấu hình làm đầu vào, IC3 được ánh xạ trên TRC. Chế độ này chỉ hoạt động nếu đầu vào kích
hoạt bên trong được chọn thông qua bit TS (thanh ghi TIMx_SMCR)

Lưu ý: Các bit CC3S chỉ có thể ghi khi kênh TẮT (CC3E = 0 trong TIMx_CCER).

416/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

Chế độ chụp đầu vào

Bit 15:12 IC4F: Bộ lọc chụp đầu vào 4

Bit 11:10 IC4PSC: Bộ chia tỷ lệ thu thập đầu vào 4

Bit 9:8 CC4S: Chụp/So sánh 4 lựa chọn

Trường bit này xác định hướng của kênh (đầu vào/đầu ra) cũng như đầu vào được sử dụng.
00: Kênh CC4 được cấu hình làm đầu ra
01: Kênh CC4 được cấu hình làm đầu vào, IC4 được ánh xạ trên TI4
10: Kênh CC4 được cấu hình làm đầu vào, IC4 được ánh xạ trên TI3
11: Kênh CC4 được cấu hình làm đầu vào, IC4 được ánh xạ trên TRC. Chế độ này chỉ hoạt động nếu
đầu vào kích hoạt bên trong được chọn thông qua bit TS (thanh ghi TIMx_SMCR)

Lưu ý: Các bit CC4S chỉ có thể ghi khi kênh TẮT (CC4E = 0 trong TIMx_CCER).

Bit 7:4 IC3F: Bộ lọc chụp 3 đầu vào

Bit 3:2 IC3PSC: Bộ đếm gộp 3 thu thập đầu vào

Bit 1:0 CC3S: Chụp/So sánh 3 lựa chọn

Trường bit này xác định hướng của kênh (đầu vào/đầu ra) cũng như đầu vào được sử dụng.
00: Kênh CC3 được cấu hình làm đầu ra
01: Kênh CC3 được cấu hình làm đầu vào, IC3 được ánh xạ trên TI3
10: Kênh CC3 được cấu hình làm đầu vào, IC3 được ánh xạ trên TI4
11: Kênh CC3 được cấu hình làm đầu vào, IC3 được ánh xạ trên TRC. Chế độ này chỉ hoạt động nếu
đầu vào kích hoạt bên trong được chọn thông qua bit TS (thanh ghi TIMx_SMCR)

Lưu ý: Các bit CC3S chỉ có thể ghi khi kênh TẮT (CC3E = 0 trong TIMx_CCER).

15.4.9 Đăng ký cho phép chụp/so sánh TIMx (TIMx_CCER)


Độ lệch địa chỉ: 0x20

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CC4P CC4E CC3P CC3E CC2P CC2E CC1P CC1E


Kín đáo Kín đáo Kín đáo Kín đáo
rw rw rw rw rw rw rw rw

Bit 15:14 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 13 CC4P: Chụp/So sánh 4 cực đầu ra

tham khảo mô tả CC1P

Bit 12 CC4E: Cho phép chụp/so sánh 4 đầu ra

tham khảo mô tả CC1E

Bit 11:10 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 9 CC3P: Chụp/So sánh 3 cực đầu ra

tham khảo mô tả CC1P

Bit 8 CC3E: Cho phép chụp/so sánh 3 đầu ra

tham khảo mô tả CC1E

Bit 7:6 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 5 CC2P: Chụp/So sánh 2 cực đầu ra

tham khảo mô tả CC1P

RM0008 Phiên bản 21 417/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

Bit 4 CC2E: Cho phép chụp/so sánh 2 đầu ra

tham khảo mô tả CC1E

Bit 3:2 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 1 CC1P: Chụp/So sánh 1 cực đầu ra

Kênh CC1 được định cấu hình làm đầu ra:

0: OC1 hoạt động ở mức cao.


1: OC1 hoạt động ở mức thấp.

Kênh CC1 được định cấu hình làm đầu vào:

Bit này chọn xem IC1 hay IC1 được sử dụng cho hoạt động kích hoạt hoặc chụp.

0: không đảo ngược: việc chụp được thực hiện trên cạnh lên của IC1. Khi được sử dụng làm bộ kích hoạt bên ngoài, IC1
không bị đảo ngược.

1: đảo ngược: việc chụp được thực hiện trên cạnh rơi của IC1. Khi được sử dụng làm bộ kích hoạt bên ngoài, IC1 sẽ
bị đảo ngược.

Bit 0 CC1E: Cho phép chụp/so sánh 1 đầu ra

Kênh CC1 được định cấu hình làm đầu ra:


0: Tắt - OC1 không hoạt động.

1: Tín hiệu Bật - OC1 được xuất ra trên chân đầu ra tương ứng.

Kênh CC1 được định cấu hình làm đầu vào:

Bit này xác định xem việc thu thập giá trị bộ đếm có thực sự được thực hiện vào thanh ghi thu thập/so sánh

đầu vào 1 (TIMx_CCR1) hay không.

0: Tắt tính năng chụp.

1: Đã bật tính năng chụp.

Bảng 87. Bit điều khiển đầu ra cho các kênh OCx tiêu chuẩn
Trạng thái đầu ra OCx bit CCxE

0 Đầu ra bị vô hiệu hóa (OCx=0, OCx_EN=0)

1 OCx=OCxREF + Phân cực, OCx_EN=1

Ghi chú: Trạng thái của các chân IO bên ngoài được kết nối với các kênh OCx tiêu chuẩn phụ thuộc vào
trạng thái kênh OCx và các thanh ghi GPIO và AFIO.

Bộ đếm TIMx 15.4.10 (TIMx_CNT)

Độ lệch địa chỉ: 0x24

Giá trị đặt lại: 0x0000 0000


15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CNT[15:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15:0 CNT[15:0]: Giá trị bộ đếm

Bộ đếm gộp trước 15.4.11 TIMx (TIMx_PSC)

Độ lệch địa chỉ: 0x28

418/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

PSC[15:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15:0 PSC[15:0]: Giá trị bộ đếm trước

Tần số xung nhịp của bộ đếm CK_CNT bằng fCK_PSC / (PSC[15:0] + 1).
PSC chứa giá trị được tải vào thanh ghi bộ đếm gộp hoạt động tại mỗi sự kiện cập nhật (bao gồm cả khi bộ
đếm bị xóa thông qua bit UG của thanh ghi TIMx_EGR hoặc thông qua bộ điều khiển kích hoạt khi được
định cấu hình ở “chế độ đặt lại”).

15.4.12 Thanh ghi tự động tải lại TIMx (TIMx_ARR)


Độ lệch địa chỉ: 0x2C

Đặt lại giá trị: 0xFFFF

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

ARR[15:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15:0 ARR[15:0]: Giá trị bộ chia tỷ lệ trước


ARR là giá trị được tải vào thanh ghi tự động tải lại thực tế.

Tham khảo Phần 15.3.1: Đơn vị cơ sở thời gian để biết thêm chi tiết về hành vi và cập nhật ARR.

Bộ đếm bị chặn trong khi giá trị tự động tải lại là null.

15.4.13 Thanh ghi ghi/so sánh TIMx 1 (TIMx_CCR1)


Độ lệch địa chỉ: 0x34

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CCR1[15:0]

rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro

Bit 15:0 CCR1[15:0]: Chụp/So sánh 1 giá trị

Nếu kênh CC1 được cấu hình làm đầu ra:


CCR1 là giá trị được tải trong thanh ghi chụp/so sánh 1 thực tế (giá trị tải trước).

Nó được tải vĩnh viễn nếu tính năng tải trước không được chọn trong thanh ghi TIMx_CCMR1 (bit OC1PE).
Mặt khác, giá trị tải trước được sao chép trong thanh ghi chụp/so sánh 1 đang hoạt động khi xảy ra sự kiện
cập nhật.

Thanh ghi chụp/so sánh hoạt động chứa giá trị được so sánh với bộ đếm TIMx_CNT và được báo hiệu trên
đầu ra OC1.

Nếu kênh CC1 được định cấu hình làm đầu vào:
CCR1 là giá trị bộ đếm được truyền bởi sự kiện chụp 1 đầu vào cuối cùng (IC1). Thanh ghi
TIMx_CCR1 ở chế độ chỉ đọc và không thể lập trình được.

RM0008 Phiên bản 21 419/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

15.4.14 Thanh ghi ghi/so sánh TIMx 2 (TIMx_CCR2)


Độ lệch địa chỉ: 0x38

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CCR2[15:0]

rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro

Bit 15:0 CCR2[15:0]: Chụp/So sánh 2 giá trị

Nếu kênh CC2 được cấu hình làm đầu ra:


CCR2 là giá trị được tải trong thanh ghi chụp/so sánh 2 thực tế (giá trị tải trước).

Nó được tải vĩnh viễn nếu tính năng tải trước không được chọn trong thanh ghi TIMx_CCMR2 (bit OC2PE).
Mặt khác, giá trị tải trước được sao chép trong thanh ghi chụp/so sánh 2 đang hoạt động khi xảy ra sự kiện
cập nhật.

Thanh ghi chụp/so sánh hoạt động chứa giá trị được so sánh với bộ đếm TIMx_CNT và được báo hiệu trên
đầu ra OC2.
Nếu kênh CC2 được cấu hình làm đầu vào:
CCR2 là giá trị bộ đếm được truyền bởi sự kiện chụp 2 đầu vào cuối cùng (IC2). Thanh ghi
TIMx_CCR2 ở chế độ chỉ đọc và không thể lập trình được.

15.4.15 Thanh ghi ghi/so sánh TIMx 3 (TIMx_CCR3)


Độ lệch địa chỉ: 0x3C

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CCR3[15:0]

rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro

Bit 15:0 CCR3[15:0]: Ghi/So sánh giá trị

Nếu kênh CC3 được cấu hình làm đầu ra:


CCR3 là giá trị được tải trong thanh ghi chụp/so sánh 3 thực tế (giá trị tải trước).

Nó được tải vĩnh viễn nếu tính năng tải trước không được chọn trong thanh ghi TIMx_CCMR3 (bit OC3PE).
Mặt khác, giá trị tải trước được sao chép trong thanh ghi chụp/so sánh 3 đang hoạt động khi xảy ra sự kiện
cập nhật.

Thanh ghi chụp/so sánh hoạt động chứa giá trị được so sánh với bộ đếm TIMx_CNT và được báo hiệu trên
đầu ra OC3.
Nếu kênh CC3 được cấu hình làm đầu vào:
CCR3 là giá trị bộ đếm được truyền bởi sự kiện chụp 3 đầu vào cuối cùng (IC3). Thanh ghi
TIMx_CCR3 ở chế độ chỉ đọc và không thể lập trình được.

15.4.16 Thanh ghi ghi/so sánh TIMx 4 (TIMx_CCR4)


Độ lệch địa chỉ: 0x40

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CCR4[15:0]

rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro

420/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

Bit 15:0 CCR4[15:0]: Ghi/So sánh giá trị

1. nếu kênh CC4 được cấu hình làm đầu ra (bit CC4S):
CCR4 là giá trị được tải trong thanh ghi chụp/so sánh 4 thực tế (giá trị tải trước).
Nó được tải vĩnh viễn nếu tính năng tải trước không được chọn trong thanh ghi TIMx_CCMR4 (bit
OC4PE). Mặt khác, giá trị tải trước được sao chép trong thanh ghi chụp/so sánh 4 đang hoạt động khi
xảy ra sự kiện cập nhật.
Thanh ghi chụp/so sánh hoạt động chứa giá trị được so sánh với bộ đếm TIMx_CNT và được báo hiệu trên
đầu ra OC4.
2. nếu kênh CC4 được cấu hình làm đầu vào (các bit CC4S trong thanh ghi TIMx_CCMR4):
CCR4 là giá trị bộ đếm được truyền bởi sự kiện chụp 4 đầu vào cuối cùng (IC4). Thanh ghi
TIMx_CCR4 ở chế độ chỉ đọc và không thể lập trình được.

15.4.17 Thanh ghi điều khiển TIMx DMA (TIMx_DCR)

Độ lệch địa chỉ: 0x48

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DBL[4:0] DBA[4:0]
Kín đáo Kín đáo
rw rw rw rw rw rw rw rw rw rw

Bit 15:13 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 12:8 DBL[4:0]: Độ dài cụm DMA

Vectơ 5 bit này xác định số lần truyền DMA (bộ hẹn giờ nhận ra quá trình truyền cụm khi truy cập đọc hoặc
ghi được thực hiện tới địa chỉ TIMx_DMAR).
00000: 1 lần chuyển khoản,

00001: 2 lần chuyển,


00010: 3 lần chuyển nhượng,

...

10001: 18 lần chuyển nhượng.

Bit 7:5 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 4:0 DBA[4:0]: địa chỉ cơ sở DMA

Vectơ 5 bit này xác định địa chỉ cơ sở cho việc truyền DMA (khi việc truy cập đọc/ghi được thực hiện
thông qua địa chỉ TIMx_DMAR). DBA được định nghĩa là phần bù bắt đầu từ địa chỉ của thanh ghi
TIMx_CR1.
Ví dụ:
00000: TIMx_CR1,
00001: TIMx_CR2,
00010: TIMx_SMCR,
...

Ví dụ: Chúng ta hãy xem xét việc chuyển giao sau: DBL = 7 lần chuyển giao & DBA = TIMx_CR1. Trong trường hợp
này việc chuyển giao được thực hiện đến/từ 7 thanh ghi bắt đầu từ địa chỉ TIMx_CR1.

15.4.18 Địa chỉ TIMx DMA để truyền đầy đủ (TIMx_DMAR)

Độ lệch địa chỉ: 0x4C

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DMAB[15:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

RM0008 Phiên bản 21 421/1136

424
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM2 đến TIM5) RM0008

Bit 15:0 DMAB[15:0]: Thanh ghi DMA để truy cập hàng loạt

Hoạt động đọc hoặc ghi vào thanh ghi DMAR truy cập vào thanh ghi đặt tại địa chỉ

(Địa chỉ TIMx_CR1) + (chỉ số DBA + DMA) x 4 trong đó

địa chỉ TIMx_CR1 là địa chỉ của thanh ghi điều khiển 1, DBA là địa chỉ cơ sở DMA được định cấu hình
trong thanh ghi TIMx_DCR, chỉ số DMA được điều khiển tự động bằng cách truyền DMA và nằm trong khoảng
từ 0 sang DBL (DBL được định cấu hình trong TIMx_DCR).

Ví dụ về cách sử dụng tính năng cụm DMA

Trong ví dụ này, tính năng cụm DMA hẹn giờ được sử dụng để cập nhật nội dung của các thanh
ghi CCRx (x = 2, 3, 4) với DMA chuyển một nửa từ vào các thanh ghi CCRx.

Việc này được thực hiện theo các bước sau:

1. Cấu hình kênh DMA tương ứng như sau:

– Địa chỉ ngoại vi kênh DMA là địa chỉ thanh ghi DMAR

– Địa chỉ bộ nhớ kênh DMA là địa chỉ của bộ đệm trong RAM chứa
dữ liệu được DMA truyền vào các thanh ghi CCRx.

– Số lượng dữ liệu cần truyền = 3 (Xem ghi chú bên dưới).


– Chế độ tròn bị tắt.

2. Định cấu hình thanh ghi DCR bằng cách định cấu hình các trường bit DBA và DBL như sau:
DBL = 3 lần chuyển, DBA = 0xE.

3. Cho phép yêu cầu DMA cập nhật TIMx (đặt bit UDE trong thanh ghi DIER).
4. Kích hoạt TIMx

5. Kích hoạt kênh DMA

Ghi chú: Ví dụ này dành cho trường hợp mỗi thanh ghi CCRx được cập nhật một lần. Ví dụ: nếu mỗi thanh ghi
CCRx được cập nhật hai lần thì số lượng dữ liệu cần truyền sẽ là 6. Hãy lấy ví dụ về bộ đệm trong
RAM chứa data1, data2, data3, data4, data5 và data6. Dữ liệu được chuyển đến các thanh ghi CCRx
như sau: trong yêu cầu DMA cập nhật lần đầu, data1 được chuyển sang CCR2, data2 được chuyển
sang CCR3, data3 được chuyển sang CCR4 và trong yêu cầu DMA cập nhật lần thứ hai, data4 được
chuyển đến CCR2, data5 được chuyển đến CCR3 và dữ liệu6 được chuyển đến CCR4.

422/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM2 đến TIM5)

15.4.19 Bản đồ đăng ký TIMx

Các thanh ghi TIMx được ánh xạ như mô tả trong bảng dưới đây:

Bảng 88. Bản đồ đăng ký TIMx và giá trị đặt lại

Đăng ký bù đắp

1
5
ố8
s

7
6

0
3
9

2
91
81
71
61
51
41
31
21

01
03
92
82
72
62
52
42
32
22
12
02
CKD CMS
TIMx_CR1
0x00 Kín đáo [1:0] [1:0]

RT
ỰI
CẾ

SRU

NEC
P

MPO

SIDU
EPRA
Đặt lại giá trị 0000000000

MMS
TIMx_CR2
0x04 Kín đáo [2:0]

S1IT

DCC
Đặt lại giá trị 00000

íđ

o K
ETPS
TIMx_SMCR ETF[3:0] TS[2:0] SMS[2:0]
0x08 Kín đáo [1:0]

PTE

ECE

MSM
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0


o íđ
K
TIMx_DIER
0x0C Kín đáo

ÀVC

EIU
TẠ
EDT

EDU

EI4CC

EI3CC

EI2CC

EI1CC
ED4CC

ED3CC

ED2CC

ED1CC
EDMOC

0 0 0 0 0 0 0 0 0 0 0 0 0

íđ
K

íđ
K
Đặt lại giá trị


o

o
TIMx_SR
0x10 Kín đáo

FIT

FIU
FI4CC

FI3CC

FI2CC

FI1CC
FO4CC

FO3CC

FO2CC

FO1CC

Đặt lại giá trị 0000 0 00000


íđ
K

íđ
K


o

o
TIMx_EGR
0x14 Kín đáo GT

GU
G4CC

G3CC

G2CC

G1CC
Đặt lại giá trị 0 00000 ná
o íđ
K

TIMx_CCMR1
Chế độ OC2M CC2S OC1M CC1S
so sánh Kín đáo [2:0] [1:0] [2:0] [1:0]
đầu ra
EF2CO

EF1CO
EP2CO

EP1CO
EC2CO

EC1CO

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


0x18

TIMx_CCMR1 IC2
CC2S
IC1
CC1S
Chế độ chụp IC2F[3:0] PSC IC1F[3:0] PSC
Kín đáo [1:0] [1:0]
đầu vào [1:0] [1:0]

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

TIMx_CCMR2
Chế độ OC4M CC4S OC3M CC3S
so sánh Kín đáo [2:0] [1:0] [2:0] [1:0]
đầu ra
EF4CO

EF3CO
EP4CO

EP3CO
EC4CO

EC3CO

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


0x1C
TIMx_CCMR2 IC4
CC4S
IC3
CC3S
Chế độ chụp IC4F[3:0] PSC IC3F[3:0] PSC
Kín đáo [1:0] [1:0]
đầu vào [1:0] [1:0]

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

TIMx_CCER
0x20 Kín đáo
P4CC

E4CC

P3CC

E3CC

P2CC

E2CC

P1CC

E1CC

Đặt lại giá trị 0 0 0 0 0 0 0 0


íđ
K

íđ
K

íđ
K

íđ
K


o

RM0008 Phiên bản 21 423/1136


424
Machine Translated by Google

RM0008
Bộ hẹn giờ đa năng (TIM2 đến TIM5)

Bảng 88. Sơ đồ thanh ghi TIMx và giá trị đặt lại (tiếp theo)

Đăng ký bù đắp

ố8
s
11
91
81
71
61
51
41
31
21

01
13
03
92
82
72
62
52
42
32
22
12
02
TIMx_CNT CNT[15:0]

0x24 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

TIMx_PSC PSC[15:0]

0x28 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

TIMx_ARR ARR[15:0]

0x2C Kín đáo

Đặt lại giá trị 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

0x30 Kín đáo

TIMx_CCR1 CCR1[15:0]

0x34 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

TIMx_CCR2 CCR2[15:0]

0x38 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

TIMx_CCR3 CCR3[15:0]

0x3C Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

TIMx_CCR4 CCR4[15:0]

0x40 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0x44 Kín đáo

TIMx_DCR DBL[4:0] DBA[4:0]

0x48 Kín đáo

Đặt lại giá trị 00000 00000


íđ

o K

TIMx_Dmar DMAB[15:0]

0x4C Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Tham khảo Phần 3.3: Bản đồ bộ nhớ cho các địa chỉ biên của thanh ghi.

424/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM9 đến TIM14)

16 Bộ hẹn giờ đa năng (TIM9 đến TIM14)

Các thiết bị mật độ thấp là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

Các thiết bị có mật độ trung bình là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 64 đến 128 Kbyte.

Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ
nhớ Flash nằm trong khoảng từ 256 đến 512 Kbyte.

Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ


bộ nhớ Flash nằm trong khoảng từ 768 Kbyte đến 1 Mbyte.

Các thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

Phần này chỉ áp dụng cho các thiết bị có mật độ XL.

16.1 Giới thiệu TIM9 đến TIM14

Bộ định thời đa năng TIM9 đến TIM14 bao gồm bộ đếm tự động tải lại 16 bit được điều khiển bởi bộ chia
tỷ lệ trước có thể lập trình.

Chúng có thể được sử dụng cho nhiều mục đích khác nhau, bao gồm đo độ dài xung của tín hiệu
đầu vào (bắt đầu vào) hoặc tạo dạng sóng đầu ra (so sánh đầu ra,PWM).

Độ dài xung và chu kỳ dạng sóng có thể được điều chỉnh từ vài micro giây đến vài mili giây
bằng cách sử dụng bộ đếm gộp bộ đếm thời gian và bộ đếm gộp bộ điều khiển đồng hồ RCC.

Bộ định thời TIM9 đến TIM14 hoàn toàn độc lập và không chia sẻ bất kỳ tài nguyên nào.
Chúng có thể được đồng bộ hóa với nhau như mô tả trong Phần 16.3.12.

RM0008 Phiên bản 21 425/1136

468
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM9 đến TIM14) RM0008

Các tính năng chính của 16.2 TIM9 đến TIM14

16.2.1 Các tính năng chính của TIM9/TIM12

Các tính năng của bộ định thời đa năng TIM9 đến TIM14 bao gồm: Bộ đếm tăng
• tốc tự động tải lại 16 bit Bộ
• đếm gộp lập trình 16 bit được sử dụng để chia tần số xung nhịp của bộ đếm cho bất kỳ hệ số nào
trong khoảng từ 1 đến 65536 (có thể thay đổi “nhanh chóng”)

• Tối đa 2 kênh độc lập cho:

– Chụp đầu vào

– So sánh đầu ra

- Tạo xung điện (chế độ căn chỉnh theo cạnh)

– Đầu ra chế độ một xung

• Mạch đồng bộ để điều khiển bộ định thời bằng tín hiệu bên ngoài và kết nối nhiều bộ định
thời với nhau
• Tạo ngắt trên các sự kiện sau:

– Cập nhật: tràn bộ đếm, khởi tạo bộ đếm (bằng phần mềm hoặc trigger bên trong)

– Sự kiện kích hoạt (bắt đầu, dừng bộ đếm, khởi tạo hoặc đếm theo kích hoạt bên trong)

– Chụp đầu vào

– So sánh đầu ra

Hình 146. Sơ đồ khối bộ định thời đa năng (TIM9 và TIM12)

Đồng hồ bên trong (CK_INT)

Bộ điều
khiển kích hoạt

ITR0 TGI
ITR1 ITR Chế độ

ITR2 điều khiển Đặt lại, kích hoạt, tăng, đếm


TRC TRGI
ITR3 nô lệ

TI1F_ED TI1FP1

TI2FP2

bạn

Tự động tải lại đăng ký giao diện người dùng

Dừng lại rõ ràng


bạn

CK_PSC PSC Bộ chia tỷ +/- máy đếm CNT


lệ trước CK_CNT
CC1I CC1I
bạn

TI1FP1 OC1
OC1REF
TI1 Bộ lọc đầu IC1 IC1PS
TI1FP2 Bộ đếm trước Chụp/So sánh 1 thanh ghi Kiểm TIMx_CH1
TIMx_CH1 soát đầu ra
vào & máy dò cạnh
TRC
CC2I
CC2I
bạn

TI2FP1
TI2 IC2 OC2
Bộ lọc đầu IC2PS OC2REF đầu ra
TIMx_CH2 TI2FP2 Bộ đếm trước Chụp/So sánh 2 thanh ghi TIMx_CH2
vào & máy dò cạnh điều khiển
TRC

Ghi chú:

Tải trước các thanh ghi được


Đăng ký
chuyển sang các thanh ghi hoạt động

theo sự kiện U theo bit điều khiển

Sự kiện

ai17190b
Ngắt

426/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM9 đến TIM14)

16.2.2 Các tính năng chính của TIM10/TIM11 và TIM13/TIM14

Các tính năng của bộ hẹn giờ đa năng TIM10/TIM11 và TIM13/TIM14 bao gồm:
• Bộ đếm ngược tự động tải lại 16-bit

• Bộ đếm gộp trước có thể lập trình 16 bit được sử dụng để chia tần số xung nhịp của bộ đếm cho bất kỳ hệ

số nào trong khoảng từ 1 đến 65536 (có thể thay đổi “nhanh chóng”)

• Kênh độc lập cho:

– Chụp đầu vào

– So sánh đầu ra

- Tạo xung điện (chế độ căn chỉnh theo cạnh)

– Đầu ra chế độ một xung


• Tạo ngắt trên các sự kiện sau:

– Cập nhật: tràn bộ đếm, khởi tạo bộ đếm (bằng phần mềm)

– Chụp đầu vào

– So sánh đầu ra

Hình 147. Sơ đồ khối bộ định thời đa năng (TIM10/11/13/14)

Đồng hồ bên trong (CK_INT)


Cho phép
Cò súng quầy tính tiền
Bộ điều khiển

Đăng ký tự động tải lại


bạn
giao diện người dùng

Dừng lại rõ ràng


bạn

CK_PSC Bộ CK_CNT CNT


+/-
đếm trước PSC quầy tính tiền

CC1I CC1I
TI1 TI1FP1 IC1 bạn

Bộ lọc đầu vào & IC1PS OC1REF đầu ra OC1


Bộ đếm trước Chụp/So sánh 1 thanh ghi
TIMx_CH1 máy dò cạnh điều khiển
TIMx_CH1

Ghi chú:

Đã chuyển các thanh ghi tải trước


Đăng ký
đến các thanh ghi hoạt động trên sự
kiện U theo bit điều khiển

sự kiện

đầu ra ngắt & DMA

MS19801V1

RM0008 Phiên bản 21 427/1136

468
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM9 đến TIM14) RM0008

16.3 Mô tả chức năng TIM9 đến TIM14

16.3.1 Đơn vị cơ sở thời gian

Khối chính của bộ định thời là bộ đếm 16 bit có liên quan đến thanh ghi tự động tải lại. Các quầy đếm
lên.

Đồng hồ đếm có thể được chia bằng bộ đếm trước.

Bộ đếm, thanh ghi tự động tải lại và thanh ghi bộ đếm trước có thể được ghi hoặc đọc bằng phần mềm. Điều
này đúng ngay cả khi bộ đếm đang chạy.

Đơn vị cơ sở thời gian bao gồm:

• Thanh ghi bộ đếm (TIMx_CNT)

• Thanh ghi bộ chia tỷ lệ trước (TIMx_PSC)

• Thanh ghi tự động tải lại (TIMx_ARR)

Thanh ghi tự động tải lại được tải trước. Việc ghi vào hoặc đọc từ thanh ghi tự động tải lại sẽ truy
cập vào thanh ghi tải trước. Nội dung của thanh ghi tải trước được chuyển vĩnh viễn vào thanh ghi ẩn
hoặc tại mỗi sự kiện cập nhật (UEV), tùy thuộc vào bit cho phép tải trước tự động tải lại (ARPE) trong
thanh ghi TIMx_CR1. Sự kiện cập nhật được gửi khi bộ đếm đạt đến mức tràn và nếu bit UDIS bằng 0 trong thanh
ghi TIMx_CR1. Nó cũng có thể được tạo ra bởi phần mềm. Việc tạo sự kiện cập nhật được mô tả chi tiết cho
từng cấu hình.

Bộ đếm được bấm giờ bởi đầu ra bộ đếm gộp CK_CNT, chỉ được bật khi bit kích hoạt bộ đếm (CEN) trong
thanh ghi TIMx_CR1 được đặt (tham khảo thêm mô tả bộ điều khiển chế độ phụ để biết thêm chi tiết về cách
bật bộ đếm).

Lưu ý rằng bộ đếm bắt đầu đếm 1 chu kỳ xung nhịp sau khi thiết lập bit CEN trong thanh ghi TIMx_CR1.

Mô tả bộ đếm trước

Bộ đếm gộp trước có thể chia tần số xung nhịp của bộ đếm cho bất kỳ hệ số nào từ 1 đến 65536. Nó dựa trên
bộ đếm 16 bit được điều khiển thông qua thanh ghi 16 bit (trong thanh ghi TIMx_PSC).
Nó có thể được thay đổi nhanh chóng vì thanh ghi điều khiển này được lưu vào bộ đệm. Tỷ lệ bộ đếm gộp
trước mới được tính đến ở sự kiện cập nhật tiếp theo.

Hình 148 và Hình 149 đưa ra một số ví dụ về hành vi của bộ đếm khi tỷ lệ bộ đếm trước được thay đổi nhanh
chóng.

428/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM9 đến TIM14)

Hình 148. Sơ đồ định thời của bộ đếm với bộ chia tỷ lệ trước thay đổi từ 1 thành 2

CK_PSC

CEN

Đồng hồ hẹn giờ = CK_CNT

F7 F8 F9 FA FB FC 00 01 02 03
quầy đăng ký

Cập nhật sự kiện (UEV)

Thanh ghi điều khiển bộ đếm trước 0 1

Viết một giá trị mới vào TIMx_PSC

Bộ đệm tỷ lệ trước 0 1

Bộ đếm tỷ lệ trước
0 0 1 0 1 0 1 0 1

MS31076V2

Hình 149. Sơ đồ định thời của bộ đếm với bộ chia tỷ lệ trước thay đổi từ 1 thành 4

CK_PSC

CEN

Đồng hồ hẹn giờ = CK_CNT

F7 F8 F9 FA FB FC 00 01
quầy đăng ký

Cập nhật sự kiện (UEV)

0 3
Thanh ghi điều khiển bộ đếm trước

Viết một giá trị mới vào TIMx_PSC

0 3
Bộ đệm tỷ lệ trước

0 0 1 23 0123
Bộ đếm tỷ lệ trước

MS31077V2

RM0008 Phiên bản 21 429/1136

468
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM9 đến TIM14) RM0008

16.3.2 Chế độ bộ đếm

Chế độ đếm ngược

Trong chế độ đếm ngược, bộ đếm đếm từ 0 đến giá trị tự động tải lại (nội dung của thanh ghi
TIMx_ARR), sau đó khởi động lại từ 0 và tạo ra sự kiện tràn bộ đếm.

Việc đặt bit UG trong thanh ghi TIMx_EGR (bằng phần mềm hoặc bằng cách sử dụng bộ điều khiển
chế độ phụ trên TIM9 và TIM12) cũng tạo ra sự kiện cập nhật.

Sự kiện UEV có thể bị vô hiệu hóa bằng phần mềm bằng cách đặt bit UDIS trong thanh ghi
TIMx_CR1. Điều này là để tránh cập nhật các thanh ghi ẩn trong khi ghi các giá trị mới vào các
thanh ghi tải trước. Sau đó không có sự kiện cập nhật nào xảy ra cho đến khi bit UDIS được ghi vào 0.
Tuy nhiên, bộ đếm khởi động lại từ 0, cũng như bộ đếm của bộ đếm gộp trước (nhưng tốc độ
cài đặt tỷ lệ không thay đổi). Ngoài ra, nếu bit URS (lựa chọn yêu cầu cập nhật) trong thanh
ghi TIMx_CR1 được đặt, thì việc đặt bit UG sẽ tạo ra một sự kiện cập nhật UEV nhưng không đặt
cờ UIF (do đó không có ngắt nào được gửi). Điều này là để tránh tạo ra cả gián đoạn cập nhật và
ghi dữ liệu khi xóa bộ đếm trong sự kiện ghi dữ liệu.

Khi một sự kiện cập nhật xảy ra, tất cả các thanh ghi sẽ được cập nhật và cờ cập nhật (bit UIF
trong thanh ghi TIMx_SR) được đặt (tùy thuộc vào bit URS):

• Thanh ghi bóng tự động tải lại được cập nhật với giá trị tải trước (TIMx_ARR),

• Bộ đệm của bộ đếm gộp trước được tải lại với giá trị tải trước (nội dung của TIMx_PSC
đăng ký).

Các hình sau đây hiển thị một số ví dụ về hoạt động của bộ đếm đối với các tần số xung nhịp
khác nhau khi TIMx_ARR=0x36.

Hình 150. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 1

CK_PSC

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 31 32 33 34 35 36 00 01 02 03 04 05 06 07

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)

MS31078V3

430/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM9 đến TIM14)

Hình 151. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 2

CK_PSC

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 0034 0035 0036 0000 0001 0002 0003

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)


MS31079V3

Hình 152. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 4

CK_PSC

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 0035 0036 0000 0001

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)


MS31080V3

Hình 153. Sơ đồ định thời của bộ đếm, xung nhịp bên trong chia cho N

CK_PSC

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 1F 20 00

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)


MS31081V3

RM0008 Phiên bản 21 431/1136

468
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM9 đến TIM14) RM0008

Hình 154. Sơ đồ định thời bộ đếm, cập nhật sự kiện khi ARPE=0 (TIMx_ARR chưa được
tải trước)

CK_PSC

CEN

Đồng hồ hẹn giờ = CK_CNT

31 32 33 34 35 36 00 01 02 03 04 05 06 07
quầy đăng ký

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)

Tự động tải lại đăng ký tải trước FF 36

Viết một giá trị mới vào TIMx_ARR


MS31082V3

Hình 155. Sơ đồ định thời bộ đếm, cập nhật sự kiện khi ARPE=1 (TIMx_ARR được tải
trước)

CK_PSC

CEN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký F0 F1 F2 F3 F4 F5 00 01 02 03 04 05 06 07

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt


(UIF)

Tự động tải lại tải trước


F5 36
đăng ký

Bóng tự động tải lại


F5 36
đăng ký

Viết một giá trị mới vào TIMx_ARR MS31083V2

432/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM9 đến TIM14)

16.3.3 Lựa chọn đồng hồ

Đồng hồ đếm có thể được cung cấp bởi các nguồn đồng hồ sau:
• Đồng hồ bên trong (CK_INT)
• Chế độ đồng hồ bên ngoài1 (đối với TIM9 và TIM12): chân đầu vào bên ngoài (TIx)
• Đầu vào kích hoạt bên trong (ITRx) (đối với TIM9 và TIM12): kết nối đầu ra kích hoạt từ bộ hẹn giờ
khác. Tham khảo Sử dụng bộ hẹn giờ làm bộ đếm gộp trước cho bộ hẹn giờ khác để biết thêm chi tiết.

Nguồn đồng hồ bên trong (CK_INT)

Nguồn đồng hồ bên trong là nguồn đồng hồ mặc định cho TIM10/TIM11 và TIM13/TIM14.

Đối với TIM9 và TIM12, nguồn đồng hồ bên trong được chọn khi bộ điều khiển chế độ phụ bị tắt
(SMS='000'). Bit CEN trong thanh ghi TIMx_CR1 và bit UG trong thanh ghi TIMx_EGR sau
đó được sử dụng làm bit điều khiển và chỉ có thể được thay đổi bằng phần mềm (ngoại trừ
UG vẫn bị xóa). Ngay sau khi bit CEN được lập trình thành 1, bộ đếm gộp trước sẽ được
đồng hồ bên trong CK_INT bấm giờ.

Hình 156 cho thấy hoạt động của mạch điều khiển và bộ đếm ngược ở chế độ bình thường, không
có bộ đếm trước.

Hình 156. Mạch điều khiển ở chế độ bình thường, xung nhịp bên trong chia cho 1

Đồng hồ nội bộ

CEN=CNT_EN

UG

CNT_INIT

Đồng hồ đếm = CK_CNT = CK_PSC

quầy đăng ký 31 3 2 33 34 35 36 00 01 02 03 04 05 06 07

MS31085V2

Chế độ nguồn đồng hồ bên ngoài 1 (TIM9 và TIM12)

Chế độ này được chọn khi SMS='111' trong thanh ghi TIMx_SMCR. Bộ đếm có thể đếm ở mỗi cạnh
tăng hoặc giảm trên đầu vào đã chọn.

RM0008 Phiên bản 21 433/1136

468
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM9 đến TIM14) RM0008

Hình 157. Ví dụ kết nối đồng hồ bên ngoài TI2

TIMx_SMCR

TS[2:0]

TI2F hoặc
hoặc
TI1F hoặc
ITRx
0xx
TI1_ED
100 TRGI Chế độ đồng hồ CK_PSC
TI1FP1
101 ngoài 1
TI2F_Tăng
TI2 Bờ rìa
0 TI2FP2
Lọc 110
máy dò 1
TI2F_Rơi
CK_INT Đồng hồ nội bộ

cách thức
ICF[3:0] CC2P (đồng hồ nội bộ)

TIMx_CCMR1 TIMx_CCER
SMS[2:0]

TIMx_SMCR

MS37337V1

Ví dụ: để định cấu hình bộ đếm ngược để đếm phản hồi với cạnh tăng trên đầu vào TI2, hãy sử
dụng quy trình sau:

1. Cấu hình kênh 2 để phát hiện các cạnh lên trên đầu vào TI2 bằng cách viết CC2S = '01' vào
thanh ghi TIMx_CCMR1.

2. Định cấu hình thời lượng bộ lọc đầu vào bằng cách ghi các bit IC2F[3:0] vào TIMx_CCMR1
đăng ký (nếu không cần bộ lọc, giữ IC2F='0000').

3. Chọn cực của cạnh tăng bằng cách viết CC2P='0' và CC2NP='0' trong TIMx_CCER
đăng ký.

4. Định cấu hình bộ hẹn giờ ở chế độ đồng hồ bên ngoài 1 bằng cách viết SMS='111' trong TIMx_SMCR
đăng ký.

5. Chọn TI2 làm nguồn đầu vào kích hoạt bằng cách ghi TS='110' vào thanh ghi TIMx_SMCR.

6. Kích hoạt bộ đếm bằng cách viết CEN='1' vào thanh ghi TIMx_CR1.

Ghi chú: Bộ chia tỷ lệ chụp trước không được sử dụng để kích hoạt nên không cần phải định cấu hình nó.

Khi cạnh tăng xảy ra trên TI2, bộ đếm sẽ đếm một lần và cờ TIF được đặt.

Độ trễ giữa cạnh tăng trên TI2 và xung nhịp thực tế của bộ đếm là do mạch tái đồng bộ hóa trên
đầu vào TI2.

Hình 158. Mạch điều khiển ở chế độ xung nhịp ngoài 1

TI2

CNT_EN

Đồng hồ đếm = CK_CNT = CK_PSC

quầy đăng ký 34 35 36

TIF

Viết TIF = 0
MS31087V3

434/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM9 đến TIM14)

16.3.4 Ghi/so sánh các kênh


Mỗi kênh Chụp/So sánh được xây dựng xung quanh một thanh ghi chụp/so sánh (bao gồm cả
thanh ghi bóng), giai đoạn đầu vào để chụp (với bộ lọc kỹ thuật số, ghép kênh và bộ đếm trước)
và giai đoạn đầu ra (với bộ so sánh và điều khiển đầu ra).

Hình 159 đến Hình 161 đưa ra cái nhìn tổng quan về kênh thu thập/so sánh.

Tầng đầu vào lấy mẫu đầu vào TIx tương ứng để tạo ra tín hiệu được lọc TIxF.
Sau đó, bộ dò cạnh với lựa chọn phân cực sẽ tạo ra tín hiệu (TIxFPx) có thể được bộ điều
khiển chế độ phụ sử dụng làm đầu vào kích hoạt hoặc làm lệnh chụp. Nó được định tỷ
lệ trước trước thanh ghi chụp (ICxPS).

Hình 159. Kênh thu thập/so sánh (ví dụ: giai đoạn đầu vào kênh 1)

TI1F_ED
Đến bộ điều khiển chế độ nô lệ

TI1 TI1F_Tăng
Bộ TI1F 0 TI1FP1
Máy
fDTS TI1F_Rơi 01
lọc ngược dò cạnh 1

TI2FP1 IC1 Bộ chia / IC1PS


10
1, /2, /4, /8

ICF[3:0] CC1P/CC1NP
TRC
11
TIMx_CCMR1 TIMx_CCER (từ bộ điều khiển

TI2F_Rising chế độ nô lệ)


0
(từ kênh 2)
CC1S[1:0] ICPS[1:0] CC1E
TI2F_Falling 1
(từ kênh 2) TIMx_CCMR1 TIMx_CCER

MS33115V1

Giai đoạn đầu ra tạo ra dạng sóng trung gian, sau đó được sử dụng để tham chiếu: OCxRef
(mức hoạt động cao). Sự phân cực hoạt động ở cuối chuỗi.

RM0008 Phiên bản 21 435/1136

468
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM9 đến TIM14) RM0008

Hình 160. Mạch chính thu/so sánh kênh 1

Xe buýt APB

Giao diện ngoại vi MCU

số 8 số 8

viết CCR1H

pấht
S

nb
ếi
6(
1
Đọc CCR1H

ut
)-
S viết_in_progress
đọc_in_progress viết CCR1L
Đọc CCR1L Chụp/so sánh đăng ký tải trước R
R
Chế độ CC1S[1]
so sánh_chuyển đầu ra
chụp_chuyển
CC1S[0]
Chế độ
CC1S[1] OC1PE
đầu vào OC1PE
CC1S[0] Chụp/so sánh thanh ghi bóng
UEV
(từ đơn vị cơ
TIMx_CCMR1
IC1PS Bộ so sánh
Chiếm lấy
sở thời gian)
CC1E CNT>CCR1

Quầy tính tiền


CNT=CCR1
CC1G

TIMx_EGR
MS31089V3

Hình 161. Tầng đầu ra của kênh chụp/so sánh (kênh 1)

Đến bộ điều khiển

chế độ chính

CNT > CCR2


Chế độ
0
đầu ra OC1
OC1_REF
đầu ra cho phép
CNT = CCR2
bộ điều khiển 1
mạch điện

CC1P

TIMx_CCER CC1E TIMx_CCER


OC2M[2:0]

TIMx_CCMR1
ai17720

Khối thu thập/so sánh được tạo thành từ một thanh ghi tải trước và một thanh ghi bóng. Viết
và đọc luôn truy cập vào thanh ghi tải trước.

Trong chế độ chụp, việc chụp thực sự được thực hiện trong thanh ghi bóng, được sao chép vào
thanh ghi tải trước.

Trong chế độ so sánh, nội dung của thanh ghi tải trước được sao chép vào thanh ghi bóng
để so sánh với bộ đếm.

16.3.5 Chế độ chụp đầu vào

Trong chế độ thu thập đầu vào, các thanh ghi Chụp/So sánh (TIMx_CCRx) được sử dụng để chốt
giá trị của bộ đếm sau khi chuyển đổi được phát hiện bởi tín hiệu ICx tương ứng. Khi quá
trình chụp xảy ra, cờ CCXIF tương ứng (thanh ghi TIMx_SR) được đặt và một yêu cầu ngắt hoặc
DMA có thể được gửi nếu chúng được bật. Nếu việc chụp xảy ra trong khi cờ CCxIF đã ở mức cao
thì cờ bắt quá mức CCxOF (thanh ghi TIMx_SR) được đặt. CCxIF có thể

436/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM9 đến TIM14)

được xóa bằng phần mềm bằng cách ghi nó vào '0' hoặc bằng cách đọc dữ liệu đã ghi được
lưu trong thanh ghi TIMx_CCRx. CCxOF bị xóa khi người dùng ghi nó vào '0'.

Ví dụ sau đây cho thấy cách nắm bắt giá trị bộ đếm trong TIMx_CCR1 khi đầu vào TI1 tăng. Để thực
hiện việc này, hãy sử dụng quy trình sau:

1. Chọn đầu vào hoạt động: TIMx_CCR1 phải được liên kết với đầu vào TI1, vì vậy hãy ghi các bit
CC1S vào '01' trong thanh ghi TIMx_CCMR1. Ngay khi CC1S trở nên khác với '00', kênh được cấu
hình ở chế độ đầu vào và thanh ghi TIMx_CCR1 trở thành chỉ đọc.

2. Lập trình khoảng thời gian lọc đầu vào cần thiết đối với tín hiệu được kết nối với
bộ đếm thời gian (bằng cách lập trình các bit ICxF trong thanh ghi TIMx_CCMRx nếu đầu vào là
một trong các đầu vào TIx). Hãy tưởng tượng rằng, khi chuyển đổi, tín hiệu đầu vào không ổn
định trong tối đa 5 chu kỳ xung nhịp bên trong. Chúng ta phải lập trình thời lượng lọc dài
hơn 5 chu kỳ xung nhịp này. Chúng tôi có thể xác nhận quá trình chuyển đổi trên TI1 khi phát
hiện được 8 mẫu liên tiếp với cấp độ mới (được lấy mẫu ở tần số fDTS ). Sau đó ghi các
bit IC1F vào '0011' trong thanh ghi TIMx_CCMR1.

3. Chọn cạnh của quá trình chuyển đổi tích cực trên kênh TI1 bằng cách lập trình các bit CC1P và
CC1NP thành '00' trong thanh ghi TIMx_CCER (cạnh tăng trong trường hợp này).

4. Lập trình bộ chia tỷ lệ đầu vào. Trong ví dụ của chúng tôi, chúng tôi muốn việc chụp được thực hiện ở
mỗi lần chuyển đổi hợp lệ, do đó bộ đếm gộp trước bị vô hiệu hóa (ghi các bit IC1PS vào '00'
trong thanh ghi TIMx_CCMR1).

5. Cho phép chụp từ bộ đếm vào thanh ghi chụp bằng cách đặt bit CC1E trong
Đăng ký TIMx_CCER.
6. Nếu cần, hãy bật yêu cầu ngắt liên quan bằng cách đặt bit CC1IE trong thanh ghi
TIMx_DIER.

Khi quá trình chụp đầu vào xảy ra:

• Thanh ghi TIMx_CCR1 lấy giá trị của bộ đếm trong quá trình chuyển đổi tích cực.

• Cờ CC1IF được thiết lập (cờ ngắt). CC1OF cũng được đặt nếu có ít nhất hai lần chụp liên tiếp
xảy ra trong khi cờ chưa bị xóa.

• Một ngắt được tạo ra tùy thuộc vào bit CC1IE.

Để xử lý việc thu thập quá mức, nên đọc dữ liệu trước cờ thu thập quá mức. Điều này nhằm
tránh bỏ sót tình trạng bắt quá mức có thể xảy ra sau khi đọc cờ và trước khi đọc dữ liệu.

Ghi chú: Yêu cầu ngắt IC có thể được tạo bằng phần mềm bằng cách đặt bit CCxG tương ứng trong thanh ghi
TIMx_EGR.

RM0008 Phiên bản 21 437/1136

468
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM9 đến TIM14) RM0008

16.3.6 Chế độ đầu vàoPWM (chỉ dành cho TIM9/12)

Chế độ này là một trường hợp cụ thể của chế độ chụp đầu vào. Quy trình giống nhau ngoại trừ:

• Hai tín hiệu ICx được ánh xạ trên cùng một đầu vào TIx.

• 2 tín hiệu ICx này hoạt động ở các cạnh có cực tính ngược nhau.

• Một trong hai tín hiệu TIxFP được chọn làm đầu vào kích hoạt và bộ điều khiển chế độ phụ
được cấu hình ở chế độ reset.

Ví dụ: người dùng có thể đo khoảng thời gian (trong thanh ghi TIMx_CCR1) và chu kỳ nhiệm vụ
(trong thanh ghi TIMx_CCR2) củaPWM được áp dụng trên TI1 bằng quy trình sau (tùy thuộc
vào tần số CK_INT và giá trị bộ đếm trước):

1. Chọn đầu vào hoạt động cho TIMx_CCR1: ghi các bit CC1S vào '01' trong thanh ghi TIMx_CCMR1
(đã chọn TI1).

2. Chọn cực hoạt động cho TI1FP1 (được sử dụng cả để chụp trong TIMx_CCR1 và xóa bộ đếm): lập
trình các bit CC1P và CC1NP thành '00' (hoạt động ở cạnh tăng).

3. Chọn đầu vào hoạt động cho TIMx_CCR2: ghi các bit CC2S vào '10' trong thanh ghi TIMx_CCMR1
(đã chọn TI1).

4. Chọn cực hoạt động cho TI1FP2 (được sử dụng để chụp trong TIMx_CCR2): lập trình các bit
CC2P và CC2NP thành '11' (hoạt động ở cạnh xuống).

5. Chọn đầu vào kích hoạt hợp lệ: ghi các bit TS vào '101' trong thanh ghi TIMx_SMCR
(đã chọn TI1FP1).

6. Định cấu hình bộ điều khiển chế độ phụ ở chế độ đặt lại: ghi các bit SMS vào '100' trong
thanh ghi TIMx_SMCR.

7. Cho phép chụp: ghi các bit CC1E và CC2E vào '1' trong thanh ghi TIMx_CCER.

Hình 162. Định thời chế độ đầu vàoPWM

TI1

TIMx_CNT 0004 0000 0001 0002 0003 0004 0000

TIMx_CCR1 0004

TIMx_CCR2 0002

chụp IC1 chụp IC2 chụp IC1


xung se rộng Giai đoạn
chụp IC2 đo đạc đo đạc
lập lại truy cập
ai15413

1. Chế độ đầu vào RGB chỉ có thể được sử dụng với các tín hiệu TIMx_CH1/TIMx_CH2 do thực tế là chỉ có
TI1FP1 và TI2FP2 được kết nối với bộ điều khiển chế độ phụ.

438/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM9 đến TIM14)

16.3.7 Chế độ đầu ra cưỡng bức

Ở chế độ đầu ra (các bit CCxS = '00' trong thanh ghi TIMx_CCMRx), mỗi tín hiệu so sánh đầu ra (OCxREF
và sau đó là OCx) có thể được buộc trực tiếp ở mức hoạt động hoặc không hoạt động bằng phần
mềm, độc lập với mọi so sánh giữa thanh ghi so sánh đầu ra và bộ đếm .

Để buộc tín hiệu so sánh đầu ra (OCXREF/OCx) về mức hoạt động của nó, người dùng chỉ cần ghi '101'
vào các bit OCxM trong thanh ghi TIMx_CCMRx tương ứng. Do đó OCXREF bị ép ở mức cao (OCxREF luôn ở
mức hoạt động ở mức cao) và OCx nhận giá trị ngược lại với bit phân cực CCxP.

Ví dụ: CCxP='0' (OCx hoạt động ở mức cao) => OCx bị ép lên mức cao.

Tín hiệu OCxREF có thể bị ép xuống mức thấp bằng cách ghi các bit OCxM thành '100'
trong thanh ghi TIMx_CCMRx.

Dù sao, việc so sánh giữa thanh ghi bóng TIMx_CCRx và bộ đếm vẫn được thực hiện và cho phép đặt
cờ. Yêu cầu ngắt có thể được gửi tương ứng. Điều này được mô tả trong phần chế độ so sánh đầu ra
bên dưới.

16.3.8 Chế độ so sánh đầu ra

Chức năng này được sử dụng để điều khiển dạng sóng đầu ra hoặc cho biết khi một khoảng thời gian đã
trôi qua.

Khi tìm thấy sự trùng khớp giữa thanh ghi chụp/so sánh và bộ đếm, chức năng so sánh đầu ra: 1. Gán
chân đầu ra tương

ứng cho một giá trị lập trình được xác định bởi chế độ so sánh đầu ra (các bit OCxM trong thanh
ghi TIMx_CCMRx) và cực đầu ra ( bit CCxP trong thanh ghi TIMx_CCER). Chân đầu ra có thể giữ mức
của nó (OCXM='000'), được đặt ở trạng thái hoạt động (OCxM='001'), được đặt ở trạng thái không
hoạt động (OCxM='010') hoặc có thể chuyển đổi (OCxM='011') khi khớp.

2. Đặt cờ trong thanh ghi trạng thái ngắt (bit CCxIF trong thanh ghi TIMx_SR).

3. Tạo ra một ngắt nếu mặt nạ ngắt tương ứng được đặt (bit CCXIE trong thanh ghi TIMx_DIER).

Các thanh ghi TIMx_CCRx có thể được lập trình có hoặc không có các thanh ghi tải trước bằng cách
sử dụng bit OCxPE trong thanh ghi TIMx_CCMRx.

Trong chế độ so sánh đầu ra, sự kiện cập nhật UEV không ảnh hưởng đến đầu ra OCxREF và OCx.
Độ phân giải thời gian là một số đếm của bộ đếm. Chế độ so sánh đầu ra cũng có thể được sử dụng để
xuất ra một xung đơn (ở chế độ Một xung).

Thủ tục:

1. Chọn đồng hồ bộ đếm (bên trong, bên ngoài, bộ đếm gộp trước).

2. Ghi dữ liệu mong muốn vào thanh ghi TIMx_ARR và TIMx_CCRx.

3. Đặt bit CCxIE nếu yêu cầu ngắt được tạo ra.

4. Chọn chế độ đầu ra. Ví dụ:

– Viết OCxM = '011' để chuyển đổi chân đầu ra OCx khi CNT khớp với CCRx

– Viết OCxPE='0' để vô hiệu hóa thanh ghi preload

– Viết CCxP='0' để chọn cực hoạt động cao

– Viết CCxE=’1’ để kích hoạt đầu ra

5. Kích hoạt bộ đếm bằng cách đặt bit CEN trong thanh ghi TIMx_CR1.

RM0008 Phiên bản 21 439/1136

468
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM9 đến TIM14) RM0008

Thanh ghi TIMx_CCRx có thể được cập nhật bất cứ lúc nào bằng phần mềm để điều khiển dạng sóng
đầu ra, miễn là thanh ghi tải trước không được bật (OCxPE='0', nếu không thì thanh ghi bóng
TIMx_CCRx chỉ được cập nhật ở sự kiện cập nhật tiếp theo UEV). Một ví dụ được đưa ra trong
Hình 163.

Hình 163. Chế độ so sánh đầu ra, bật OC1.

Viết B201h vào thanh ghi CC1R

TIM1_CNT 0039 003A 003B B200 B201

TIM1_CCR1 003A B201

OC1REF=OC1

Đã phát hiện kết quả trùng khớp trên CCR1

Ngắt được tạo nếu được bật


MS31092V2

Chế độ 16.3.9PWM

Chế độ Điều chế độ rộng xung cho phép người dùng tạo tín hiệu có tần số được xác định bởi
giá trị của thanh ghi TIMx_ARR và chu kỳ nhiệm vụ được xác định bởi giá trị của thanh ghi TIMx_CCRx.

Chế độPWM có thể được chọn độc lập trên mỗi kênh (mộtPWM cho mỗi đầu ra OCx) bằng cách ghi
'110' (chế độPWM 1) hoặc '111' (chế độPWM 2) trong các bit OCxM trong thanh ghi TIMx_CCMRx.
Kích hoạt thanh ghi tải trước tương ứng bằng cách đặt bit OCxPE trong thanh ghi TIMx_CCMRx và
cuối cùng là thanh ghi tải trước tự động tải lại bằng cách đặt bit ARPE trong thanh ghi TIMx_CR1.

Vì các thanh ghi tải trước chỉ được chuyển sang các thanh ghi ẩn khi xảy ra sự kiện cập nhật,
trước khi khởi động bộ đếm, người dùng phải khởi tạo tất cả các thanh ghi bằng cách đặt bit UG
trong thanh ghi TIMx_EGR.

Phân cực OCx được lập trình bằng phần mềm bằng cách sử dụng bit CCxP trong thanh ghi TIMx_CCER.
Nó có thể được lập trình ở mức hoạt động cao hoặc mức hoạt động thấp. Đầu ra OCx được kích hoạt
bởi bit CCxE trong thanh ghi TIMx_CCER. Tham khảo mô tả thanh ghi TIMx_CCERx để biết thêm chi
tiết.

Trong chế độPWM (1 hoặc 2), TIMx_CNT và TIMx_CCRx luôn được so sánh để xác định xem TIMx_CNT
TIMx_CCRx.

Bộ định thời chỉ có thể tạo ra xung điều chỉnh xung ở chế độ căn chỉnh cạnh khi bộ đếm
đang đếm ngược.

Chế độ căn chỉnh theo cạnh của PLC

Trong ví dụ sau, chúng tôi xem xét chế độPWM 1. Tín hiệuPWM tham chiếu OCxREF ở mức cao miễn là
TIMx_CNT < TIMx_CCRx nếu không nó sẽ ở mức thấp. Nếu giá trị so sánh trong

440/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM9 đến TIM14)

TIMx_CCRx lớn hơn giá trị tự động tải lại (tính bằng TIMx_ARR) thì OCxREF được giữ ở mức
'1'. Nếu giá trị so sánh là 0 thì OCxRef được giữ ở mức '0'. Hình 164 cho thấy một số
dạng sóng điều chỉnh theo cạnh trong ví dụ trong đó TIMx_ARR=8.

Hình 164. Dạng sóng điều chỉnh cạnh (ARR=8)

quầy đăng ký 0 1 2 34 5 6 7 8 01

OCXREF
CCRx=4
CCxIF

OCXREF
CCRx=8
CCxIF

OCXREF '1'
CCRx>8
CCxIF

OCXREF '0'
CCRx=0
CCxIF

MS31093V1

16.3.10 Chế độ một xung

Chế độ một xung (OPM) là trường hợp cụ thể của các chế độ trước đó. Nó cho phép bộ đếm được
khởi động để đáp ứng với kích thích và tạo ra xung có độ dài có thể lập trình sau độ trễ
được lập trình.

Việc khởi động bộ đếm có thể được điều khiển thông qua bộ điều khiển chế độ phụ. Việc tạo
dạng sóng có thể được thực hiện ở chế độ so sánh đầu ra hoặc chế độPWM. Chọn chế độ Một xung
bằng cách đặt bit OPM trong thanh ghi TIMx_CR1. Điều này làm cho bộ đếm tự động dừng ở sự
kiện cập nhật tiếp theo UEV.

Một xung chỉ có thể được tạo chính xác nếu giá trị so sánh khác với giá trị ban đầu của bộ
đếm. Trước khi bắt đầu (khi bộ hẹn giờ đang chờ kích hoạt), cấu hình phải như sau:

CNT < CCRx ARR (cụ thể là 0 < CCRx)

RM0008 Phiên bản 21 441/1136

468
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM9 đến TIM14) RM0008

Hình 165. Ví dụ về chế độ một xung.

TI2

OC1REF

OC1

TIM1_ARR

TIM1_CCR1
yề
h
nnut
ầi
íQ

0
t t t
TRÌ HOÃN XUNG

MS31099V1

Ví dụ: người dùng có thể muốn tạo xung dương trên OC1 với độ dài tPULSE
và sau độ trễ tDELAY ngay khi phát hiện thấy cạnh dương trên chân đầu vào TI2.

Sử dụng TI2FP2 làm trình kích hoạt 1:

1. Ánh xạ TI2FP2 tới TI2 bằng cách viết CC2S='01' vào thanh ghi TIMx_CCMR1.

2. TI2FP2 phải phát hiện cạnh lên, viết CC2P='0' và CC2NP = '0' trong TIMx_CCER
đăng ký.

3. Định cấu hình TI2FP2 làm trình kích hoạt cho bộ điều khiển chế độ phụ (TRGI) bằng cách ghi
TS='110' vào thanh ghi TIMx_SMCR.

4. TI2FP2 được sử dụng để khởi động bộ đếm bằng cách viết SMS tới '110' trong thanh ghi TIMx_SMCR
(chế độ kích hoạt).

Dạng sóng OPM được xác định bằng cách ghi các thanh ghi so sánh (có tính đến tần số xung nhịp
và bộ đếm trước bộ đếm).

• tDELAY được xác định bởi giá trị được ghi trong thanh ghi TIMx_CCR1.

• tPULSE được xác định bởi sự khác biệt giữa giá trị tự động tải lại và giá trị so sánh (TIMx_ARR
- TIMx_CCR1).

• Giả sử người dùng muốn xây dựng dạng sóng có chuyển đổi từ '0' sang '1' khi xảy ra so sánh so
sánh và chuyển đổi từ '1' sang '0' khi bộ đếm đạt đến giá trị tự động tải lại. Để thực
hiện việc này, hãy bật chế độPWM 2 bằng cách viết OC1M='111' vào thanh ghi TIMx_CCMR1.
Người dùng có thể tùy chọn kích hoạt các thanh ghi tải trước bằng cách viết OC1PE='1' vào
thanh ghi TIMx_CCMR1 và ARPE trong thanh ghi TIMx_CR1. Trong trường hợp này, người dùng
phải ghi giá trị so sánh vào thanh ghi TIMx_CCR1, giá trị tự động tải lại vào thanh ghi
TIMx_ARR, tạo bản cập nhật bằng cách đặt bit UG và chờ sự kiện kích hoạt bên ngoài trên TI2.
CC1P được ghi vào '0' trong ví dụ này.

Người dùng chỉ muốn một xung (Chế độ đơn), vì vậy hãy ghi '1 vào bit OPM trong thanh ghi TIMx_CR1
để dừng bộ đếm ở sự kiện cập nhật tiếp theo (khi bộ đếm chuyển từ giá trị tự động tải lại về 0).
Khi bit OPM trong thanh ghi TIMx_CR1 được đặt thành '0', thì chế độ Lặp lại được chọn.

442/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM9 đến TIM14)

Trường hợp cụ thể: kích hoạt nhanh OCx

Ở chế độ Một xung, tính năng phát hiện cạnh trên đầu vào TIx sẽ đặt bit CEN để bật bộ đếm. Sau đó,
việc so sánh giữa bộ đếm và giá trị so sánh sẽ làm cho đầu ra chuyển đổi. Nhưng cần có một số chu
kỳ xung nhịp cho các hoạt động này và nó giới hạn độ trễ tối thiểu tDELAY phút mà chúng ta có thể
nhận được.

Nếu người dùng muốn xuất ra dạng sóng có độ trễ tối thiểu, hãy đặt bit OCxFE trong thanh ghi
TIMx_CCMRx. Sau đó, OCxRef (và OCx) bị buộc phải đáp lại kích thích mà không tính đến sự so sánh. Cấp
độ mới của nó giống như khi một trận đấu so sánh đã xảy ra. OCxFE chỉ hoạt động nếu kênh được cấu hình
ở chế độPWM1 hoặcPWM2.

16.3.11 Đồng bộ hóa kích hoạt bên ngoài TIM9/12

Bộ hẹn giờ TIM9/12 có thể được đồng bộ hóa với bộ kích hoạt bên ngoài ở một số chế độ: Chế độ đặt lại,
chế độ Cổng và chế độ Kích hoạt.

Chế độ nô lệ: Chế độ đặt lại

Bộ đếm và bộ đếm gộp trước của nó có thể được khởi tạo lại để phản hồi một sự kiện trên đầu vào kích hoạt.
Hơn nữa, nếu bit URS từ thanh ghi TIMx_CR1 ở mức thấp thì một sự kiện cập nhật UEV sẽ được tạo
ra. Sau đó tất cả các thanh ghi được tải trước (TIMx_ARR, TIMx_CCRx) đều được cập nhật.

Trong ví dụ sau, bộ đếm ngược bị xóa để phản hồi cạnh tăng trên đầu vào TI1:

1. Định cấu hình kênh 1 để phát hiện các cạnh tăng trên TI1. Định cấu hình thời lượng bộ lọc đầu vào
(trong ví dụ này, chúng tôi không cần bất kỳ bộ lọc nào, vì vậy chúng tôi giữ IC1F='0000').
Bộ chia tỷ lệ chụp trước không được sử dụng để kích hoạt nên không cần phải định cấu hình nó. Các
bit CC1S chỉ chọn nguồn chụp đầu vào, CC1S = '01' trong thanh ghi TIMx_CCMR1.
Lập trình CC1P và CC1NP thành '00' trong thanh ghi TIMx_CCER để xác thực cực tính (và chỉ phát hiện
các cạnh lên).

2. Định cấu hình bộ hẹn giờ ở chế độ đặt lại bằng cách viết SMS='100' vào thanh ghi TIMx_SMCR. Chọn TI1
làm nguồn đầu vào bằng cách ghi TS='101' vào thanh ghi TIMx_SMCR.

3. Bắt đầu bộ đếm bằng cách viết CEN='1' vào thanh ghi TIMx_CR1.

Bộ đếm bắt đầu đếm theo đồng hồ bên trong, sau đó hoạt động bình thường cho đến cạnh tăng TI1. Khi
TI1 tăng, bộ đếm sẽ bị xóa và khởi động lại từ 0. Trong khi đó, cờ kích hoạt được đặt (bit TIF trong
thanh ghi TIMx_SR) và yêu cầu ngắt có thể được gửi nếu được bật (tùy thuộc vào bit TIE trong thanh ghi
TIMx_DIER).

Hình dưới đây cho thấy hành vi này khi thanh ghi tự động tải lại TIMx_ARR=0x36.
Độ trễ giữa cạnh tăng trên TI1 và thời điểm reset thực tế của bộ đếm là do mạch tái đồng bộ hóa trên
đầu vào TI1.

RM0008 Phiên bản 21 443/1136

468
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM9 đến TIM14) RM0008

Hình 166. Mạch điều khiển ở chế độ reset

TI1

UG

Đồng hồ đếm = ck_cnt = ck_psc

quầy đăng ký 30 31 32 33 34 35 36 00 01 02 03 00 01 02 03

TIF

MS31401V2

Chế độ nô lệ: Chế độ kiểm soát

Bộ đếm có thể được kích hoạt tùy thuộc vào mức đầu vào được chọn.

Trong ví dụ sau, bộ đếm ngược chỉ đếm khi đầu vào TI1 ở mức thấp:

1. Cấu hình kênh 1 để phát hiện mức thấp trên TI1. Định cấu hình thời lượng bộ lọc đầu vào (trong
ví dụ này, chúng tôi không cần bất kỳ bộ lọc nào, vì vậy chúng tôi giữ IC1F='0000'). Bộ
chia tỷ lệ chụp trước không được sử dụng để kích hoạt nên không cần phải định cấu hình nó. Các
bit CC1S chỉ chọn nguồn chụp đầu vào, CC1S='01' trong thanh ghi TIMx_CCMR1. Chương trình
CC1P='1' và CC1NP= '0' trong thanh ghi TIMx_CCER để xác nhận cực tính (và chỉ phát hiện mức
thấp).

2. Định cấu hình bộ hẹn giờ ở chế độ kiểm soát bằng cách viết SMS='101' vào thanh ghi TIMx_SMCR.
Chọn TI1 làm nguồn đầu vào bằng cách ghi TS='101' vào thanh ghi TIMx_SMCR.

3. Kích hoạt bộ đếm bằng cách ghi CEN='1' vào thanh ghi TIMx_CR1 (ở chế độ kiểm soát, bộ đếm không
khởi động nếu CEN='0', bất kể mức đầu vào kích hoạt là gì).

Bộ đếm bắt đầu đếm trên đồng hồ bên trong miễn là TI1 ở mức thấp và dừng ngay khi TI1 ở mức cao. Cờ
TIF trong thanh ghi TIMx_SR được đặt cả khi bộ đếm bắt đầu hoặc dừng.

Độ trễ giữa cạnh tăng trên TI1 và điểm dừng thực tế của bộ đếm là do mạch tái đồng bộ hóa trên đầu
vào TI1.

444/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM9 đến TIM14)

Hình 167. Mạch điều khiển ở chế độ cổng

TI1

cnt_en

Đồng hồ đếm = ck_cnt = ck_psc

quầy đăng ký 30 31 32 33 34 35 36 37 38

TIF

Viết TIF=0

MS31402V1

Chế độ nô lệ: Chế độ kích hoạt

Bộ đếm có thể bắt đầu phản hồi một sự kiện trên đầu vào đã chọn.

Trong ví dụ sau, bộ đếm ngược bắt đầu phản hồi cạnh tăng trên đầu vào TI2:

1. Định cấu hình kênh 2 để phát hiện các cạnh tăng trên TI2. Định cấu hình thời lượng bộ lọc đầu vào
(trong ví dụ này, chúng tôi không cần bất kỳ bộ lọc nào, vì vậy chúng tôi giữ
IC2F='0000'). Bộ chia tỷ lệ chụp trước không được sử dụng để kích hoạt nên không cần phải
định cấu hình nó. Các bit CC2S được cấu hình để chỉ chọn nguồn chụp đầu vào, CC2S='01'
trong thanh ghi TIMx_CCMR1. Chương trình CC2P='1' và CC2NP='0' trong thanh ghi TIMx_CCER để
xác thực cực tính (và chỉ phát hiện mức thấp).

2. Định cấu hình bộ hẹn giờ ở chế độ kích hoạt bằng cách viết SMS='110' vào thanh ghi TIMx_SMCR.
Chọn TI2 làm nguồn đầu vào bằng cách ghi TS='110' vào thanh ghi TIMx_SMCR.

Khi cạnh tăng xảy ra trên TI2, bộ đếm bắt đầu đếm trên đồng hồ bên trong và cờ TIF được đặt.

Độ trễ giữa cạnh tăng trên TI2 và thời điểm bắt đầu thực tế của bộ đếm là do mạch tái đồng bộ hóa
trên đầu vào TI2.

Hình 168. Mạch điều khiển ở chế độ trigger

TI2

cnt_en

Đồng hồ đếm = ck_cnt = ck_psc

quầy đăng ký 34 35 36 37 38

TIF

MS31403V1

RM0008 Phiên bản 21 445/1136

468
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM9 đến TIM14) RM0008

16.3.12 Đồng bộ hóa bộ hẹn giờ (TIM9/12)

Các bộ định thời TIM được liên kết nội bộ với nhau để đồng bộ hóa hoặc tạo chuỗi. Tham khảo
Phần 15.3.15: Đồng bộ hóa bộ hẹn giờ để biết chi tiết.

Ghi chú: Đồng hồ của bộ định thời phụ phải được bật trước khi nhận các sự kiện từ bộ định thời chính
và không được thay đổi nhanh chóng trong khi nhận được kích hoạt từ bộ định thời chính.

16.3.13 Chế độ gỡ lỗi

Khi bộ vi điều khiển chuyển sang chế độ gỡ lỗi ( lõi Cortex®-M3 tạm dừng), bộ đếm TIMx tiếp
tục hoạt động bình thường hoặc dừng, tùy thuộc vào bit cấu hình DBG_TIMx_STOP trong mô-đun
DBG. Để biết thêm chi tiết, hãy tham khảo Phần 31.16.2: Hỗ trợ gỡ lỗi cho bộ hẹn giờ, cơ
quan giám sát, bxCAN và I2C.

446/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM9 đến TIM14)

16.4 Thanh ghi TIM9 và TIM12


Tham khảo Phần 2.2 để biết danh sách các từ viết tắt được sử dụng trong mô tả thanh ghi.

Các thanh ghi ngoại vi phải được ghi bằng nửa từ (16 bit) hoặc từ (32 bit). Việc truy cập đọc có thể
được thực hiện theo byte (8 bit), nửa từ (16 bit) hoặc từ (32 bit).

16.4.1 Thanh ghi điều khiển TIM9/12 1 (TIMx_CR1)

Độ lệch địa chỉ: 0x00

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CKD[1:0] ARPE OPM URS UDIS CEN


Kín đáo Kín đáo
rw rw rw rw rw rw rw

Bit 15:10 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 9:8 CKD: Phân chia đồng hồ

Trường bit này biểu thị tỷ lệ phân chia giữa tần số đồng hồ hẹn giờ (CK_INT) và đồng hồ lấy mẫu được
sử dụng bởi các bộ lọc kỹ thuật số (TIx),

00: tDTS = tCK_INT


01: tDTS = 2 × tCK_INT
10: tDTS = 4 × tCK_INT
11: Dự trữ

Bit 7 ARPE: Cho phép tải trước tự động tải lại

0: Thanh ghi TIMx_ARR không được đệm.


1: Thanh ghi TIMx_ARR được lưu vào bộ đệm.

Bit 6:4 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 3 OPM: Chế độ một xung

0: Bộ đếm không dừng trong sự kiện cập nhật


1: Bộ đếm dừng đếm ở sự kiện cập nhật tiếp theo (xóa bit CEN).

Bit 2 URS: Cập nhật nguồn yêu cầu

Bit này được thiết lập và xóa bằng phần mềm để chọn nguồn sự kiện UEV.

0: Bất kỳ sự kiện nào sau đây đều tạo ra ngắt cập nhật nếu được bật:
– Tràn bộ đếm

– Thiết lập bit UG

1: Chỉ lỗi tràn bộ đếm mới tạo ra ngắt cập nhật nếu được bật.

Bit 1 UDIS: Vô hiệu hóa cập nhật

Bit này được thiết lập và xóa bằng phần mềm để bật/tắt việc tạo sự kiện cập nhật (UEV).

0: Đã bật UEV. Một UEV được tạo bởi một trong các sự kiện sau:
– Tràn bộ đếm

– Thiết lập bit UG

Các thanh ghi đệm sau đó được tải với các giá trị tải trước của chúng.

1: UEV bị vô hiệu hóa. Không có UEV nào được tạo ra, các thanh ghi bóng giữ nguyên giá trị của
chúng (ARR, PSC, CCRx). Bộ đếm và bộ đếm gộp trước được khởi tạo lại nếu bit UG được đặt.

Bit 0 CEN: Cho phép bộ đếm

0: Bộ đếm bị vô hiệu hóa

1: Đã bật bộ đếm

CEN được xóa tự động ở chế độ một xung khi xảy ra sự kiện cập nhật.

RM0008 Phiên bản 21 447/1136

468
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM9 đến TIM14) RM0008

16.4.2 Thanh ghi điều khiển chế độ nô lệ TIM9/12 (TIMx_SMCR)

Độ lệch địa chỉ: 0x08

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

TS[2:0] SMS[2:0]
Kín đáo Res.
rw rw rw rw rw rw

Bit 15:7 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 6:4 TS: Lựa chọn kích hoạt

Trường bit này chọn đầu vào kích hoạt được sử dụng để đồng bộ hóa bộ đếm.

000: Kích hoạt nội bộ 0 (ITR0)

001: Kích hoạt nội bộ 1 (ITR1)

010: Kích hoạt nội bộ 2 (ITR2)

011: Kích hoạt nội bộ 3 (ITR3)

100: Máy dò cạnh TI1 (TI1F_ED)

101: Đầu vào hẹn giờ được lọc 1 (TI1FP1)

110: Đầu vào hẹn giờ được lọc 2 (TI2FP2)


111: Dự trữ.

Xem Bảng 89 để biết thêm chi tiết về ý nghĩa của ITRx đối với mỗi bộ đếm thời gian.

Lưu ý: Các bit này chỉ được thay đổi khi chúng không được sử dụng (ví dụ khi SMS='000') thành

tránh phát hiện cạnh sai ở quá trình chuyển đổi.

Bit 3 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 2:0 SMS: Lựa chọn chế độ phụ

Khi tín hiệu bên ngoài được chọn, cạnh hoạt động của tín hiệu kích hoạt (TRGI) được liên kết với cực được

chọn trên đầu vào bên ngoài (xem mô tả Thanh ghi điều khiển đầu vào và Mô tả thanh ghi điều khiển.

000: Chế độ phụ bị tắt - nếu CEN = 1 thì bộ đếm gộp trước được đồng hồ bên trong bấm giờ trực tiếp

001: Dự trữ

010: Dự trữ

011: Dự trữ

100: Chế độ đặt lại - Cạnh nâng của đầu vào kích hoạt đã chọn (TRGI) sẽ khởi tạo lại bộ đếm và tạo bản cập

nhật của các thanh ghi

101: Chế độ kiểm soát - Đồng hồ bộ đếm được bật khi đầu vào kích hoạt (TRGI) ở mức cao. Bộ đếm dừng (nhưng

không được đặt lại) ngay khi bộ kích hoạt ở mức thấp. Bộ đếm bắt đầu và dừng đều được kiểm soát

110: Chế độ kích hoạt - Bộ đếm bắt đầu ở cạnh tăng của TRGI kích hoạt (nhưng nó không được đặt lại). Chỉ

có sự khởi đầu của bộ đếm được kiểm soát

111: Chế độ đồng hồ bên ngoài 1 - Các cạnh tăng của bộ kích hoạt đã chọn (TRGI) đồng hồ cho bộ đếm

Lưu ý: Không được sử dụng chế độ Gated nếu TI1F_ED được chọn làm đầu vào kích hoạt

(TS='100'). Thật vậy, TI1F_ED tạo ra 1 xung cho mỗi lần chuyển đổi trên TI1F, trong khi chế độ Gated

kiểm tra mức tín hiệu kích hoạt.

Lưu ý: Đồng hồ của bộ định thời phụ phải được bật trước khi nhận các sự kiện từ bộ định thời chính và không

được thay đổi nhanh chóng trong khi nhận được kích hoạt từ bộ định thời chính.

448/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM9 đến TIM14)

Bảng 89. Kết nối kích hoạt bên trong TIMx

TIM nô lệ ITR0 (TS = 000) ITR1 (TS = 001) ITR2 (TS = 010) ITR3 (TS = 011)

TIM9 TIM2_TRGO TIM3_TRGO TIM10_OC TIM11_OC

TIM12 TIM4_TRGO TIM5_TRGO TIM13_OC TIM14_OC

16.4.3 TIM9/12 Thanh ghi cho phép ngắt (TIMx_DIER)


Độ lệch địa chỉ: 0x0C

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CÀ VẠT CC2IE CC1IE UIE


Kín đáo độ phân giải

rw rw rw rw

Bit 15:7 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 6 TIE: Cho phép ngắt kích hoạt

0: Ngắt kích hoạt bị vô hiệu hóa.


1: Kích hoạt ngắt kích hoạt.

Bit 5:3 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 2 CC2IE: Cho phép chụp/so sánh 2 ngắt

0: Ngắt CC2 bị vô hiệu hóa.


1: Cho phép ngắt CC2.

Bit 1 CC1IE: Cho phép chụp/so sánh 1 ngắt

0: Ngắt CC1 bị vô hiệu hóa.


1: Cho phép ngắt CC1.

Bit 0 UIE: Cho phép ngắt cập nhật

0: Ngắt cập nhật bị vô hiệu hóa.


1: Cho phép ngắt cập nhật.

RM0008 Phiên bản 21 449/1136

468
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM9 đến TIM14) RM0008

16.4.4 Thanh ghi trạng thái TIM9/12 (TIMx_SR)

Độ lệch địa chỉ: 0x10

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CC2OF CC1OF TIF CC2IF CC1IF UIF


Kín đáo Kín đáo Kín đáo
rc_w0 rc_w0 rc_w0 rc_w0 rc_w0 rc_w0

Bit 15:11 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 10 CC2OF: Chụp/so sánh 2 cờ bắt vượt mức

tham khảo mô tả CC1OF

Bit 9 CC1OF: Chụp/So sánh 1 cờ bắt vượt mức

Cờ này chỉ được đặt bằng phần cứng khi kênh tương ứng được định cấu hình ở chế độ chụp đầu vào. Nó
được xóa bằng phần mềm bằng cách ghi nó vào '0'.
0: Không phát hiện thấy tình trạng chụp quá mức.

1: Giá trị bộ đếm đã được ghi lại trong thanh ghi TIMx_CCR1 trong khi cờ CC1IF đã được đặt

Bit 8:7 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 6 TIF: Cờ ngắt kích hoạt

Cờ này được đặt bằng phần cứng khi có sự kiện kích hoạt (cạnh hoạt động được phát hiện trên đầu vào TRGI
khi bộ điều khiển chế độ phụ được bật ở tất cả các chế độ ngoại trừ chế độ kiểm soát. Nó được đặt khi
bộ đếm bắt đầu hoặc dừng khi chế độ kiểm soát được chọn. Nó bị xóa bằng phần mềm .
0: Không có sự kiện kích hoạt nào xảy ra.

1: Đang chờ kích hoạt ngắt.

Bit 5:3 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 2 CC2IF: Cờ bắt/so sánh 2 ngắt

tham khảo mô tả CC1IF

Bit 1 CC1IF: Chụp/so sánh 1 cờ ngắt

Nếu kênh CC1 được cấu hình làm đầu ra:


Cờ này được đặt bằng phần cứng khi bộ đếm khớp với giá trị so sánh. Nó được xóa bằng phần mềm.

0: Không khớp.

1: Nội dung của bộ đếm TIMx_CNT khớp với nội dung của thanh ghi TIMx_CCR1.
Khi nội dung của TIMx_CCR1 lớn hơn nội dung của TIMx_ARR, bit CC1IF sẽ ở mức cao khi bộ đếm tràn.

Nếu kênh CC1 được cấu hình làm đầu vào:


Bit này được thiết lập bởi phần cứng khi chụp. Nó được xóa bằng phần mềm hoặc bằng cách đọc
thanh ghi TIMx_CCR1.

0: Không xảy ra quá trình thu thập đầu vào.

1: Giá trị bộ đếm đã được ghi lại trong thanh ghi TIMx_CCR1 (một cạnh đã được phát hiện trên IC1 khớp với
cực đã chọn).

450/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM9 đến TIM14)

Bit 0 UIF: Cờ ngắt cập nhật

Bit này được thiết lập bởi phần cứng trong một sự kiện cập nhật. Nó được xóa bằng phần mềm.

0: Không có cập nhật nào xảy ra.

1: Cập nhật ngắt đang chờ xử lý. Bit này được thiết lập bởi phần cứng khi các thanh ghi được cập nhật:

– Khi tràn và nếu UDIS='0' trong thanh ghi TIMx_CR1.

– Khi CNT được khởi tạo lại bằng phần mềm sử dụng bit UG trong thanh ghi TIMx_EGR, nếu URS='0' và
UDIS='0' trong thanh ghi TIMx_CR1.

– Khi CNT được khởi tạo lại bởi một sự kiện kích hoạt (tham khảo thanh ghi điều khiển đồng bộ
mô tả), nếu URS='0' và UDIS='0' trong thanh ghi TIMx_CR1.

16.4.5 Thanh ghi tạo sự kiện TIM9/12 (TIMx_EGR)


Độ lệch địa chỉ: 0x14

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

TG CC2G CC1G UG
Kín đáo Kín đáo
w www

Bit 15:7 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 6 TG: Tạo kích hoạt

Bit này được thiết lập bởi phần mềm để tạo ra một sự kiện, nó sẽ tự động bị xóa bằng phần cứng.

0: Không có hành động

1: Cờ TIF được đặt trong thanh ghi TIMx_SR. Ngắt liên quan có thể xảy ra nếu được bật

Bit 5:3 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 2 CC2G: Chụp/so sánh thế hệ thứ 2

tham khảo mô tả CC1G

Bit 1 CC1G: Chụp/so sánh 1 thế hệ

Bit này được thiết lập bởi phần mềm để tạo ra một sự kiện, nó sẽ tự động bị xóa bằng phần cứng.
0: Không có hành động

1: Sự kiện thu thập/so sánh được tạo trên kênh 1:


Nếu kênh CC1 được cấu hình làm đầu ra:
cờ CC1IF được đặt, ngắt tương ứng sẽ được gửi nếu được bật.
Nếu kênh CC1 được cấu hình làm đầu vào:
Giá trị bộ đếm hiện tại được ghi lại trong thanh ghi TIMx_CCR1. Cờ CC1IF được đặt, ngắt tương ứng sẽ được
gửi nếu được bật. Cờ CC1OF được đặt nếu cờ CC1IF đã ở mức cao.

Bit 0 UG: Tạo bản cập nhật

Bit này có thể được thiết lập bằng phần mềm, nó sẽ tự động bị xóa bằng phần cứng.
0: Không có hành động

1: Khởi tạo lại bộ đếm và tạo bản cập nhật của các thanh ghi. Bộ đếm bộ đếm gộp trước cũng bị xóa và tỷ lệ
của bộ đếm gộp trước không bị ảnh hưởng. Bộ đếm được xóa.

RM0008 Phiên bản 21 451/1136

468
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM9 đến TIM14) RM0008

16.4.6 Thanh ghi chế độ chụp/so sánh TIM9/12 1 (TIMx_CCMR1)


Độ lệch địa chỉ: 0x18

Giá trị đặt lại: 0x0000

Các kênh có thể được sử dụng ở đầu vào (chế độ chụp) hoặc ở đầu ra (chế độ so sánh). Hướng của
kênh được xác định bằng cách định cấu hình các bit CCxS tương ứng. Tất cả các bit khác trong thanh
ghi này có chức năng khác nhau ở chế độ đầu vào và đầu ra. Đối với một bit nhất định, OCxx mô tả chức
năng của nó khi kênh được cấu hình ở chế độ đầu ra, ICxx mô tả chức năng của nó khi kênh được cấu
hình ở chế độ đầu vào. Hãy cẩn thận rằng cùng một bit có thể có ý nghĩa khác nhau cho giai đoạn đầu
vào và giai đoạn đầu ra.

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

OC2CE OC2M[2:0] OC2PE OC2FE OC1CE OC1M[2:0] OC1PE OC1FE


CC2S[1:0] CC1S[1:0]
IC2F[3:0] IC2PSC[1:0] IC1F[3:0] IC1PSC[1:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Chế độ so sánh đầu ra

Bit 15 OC2CE: Cho phép xóa so sánh đầu ra 2

Bit 14:12 OC2M[2:0]: Chế độ so sánh đầu ra 2

Bit 11 OC2PE: Cho phép tải trước so sánh đầu ra 2

Bit 10 OC2FE: Cho phép so sánh đầu ra 2 nhanh

Bit 9:8 CC2S[1:0]: Chụp/So sánh 2 lựa chọn

Trường bit này xác định hướng của kênh (đầu vào/đầu ra) cũng như đầu vào được sử dụng.
00: Kênh CC2 được cấu hình làm đầu ra
01: Kênh CC2 được cấu hình làm đầu vào, IC2 được ánh xạ trên TI2
10: Kênh CC2 được cấu hình làm đầu vào, IC2 được ánh xạ trên TI1
11: Kênh CC2 được cấu hình làm đầu vào, IC2 được ánh xạ trên TRC. Chế độ này chỉ hoạt động nếu đầu
vào kích hoạt bên trong được chọn thông qua bit TS (thanh ghi TIMx_SMCR

Lưu ý: Các bit CC2S chỉ có thể ghi khi kênh TẮT (CC2E = 0 trong TIMx_CCER).

Bit 7 OC1CE: Cho phép xóa so sánh đầu ra 1

OC1CE: So sánh đầu ra 1 Xóa Kích hoạt

0: OC1Ref không bị ảnh hưởng bởi đầu vào ETRF


1: OC1Ref bị xóa ngay khi phát hiện mức Cao trên đầu vào ETRF

452/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM9 đến TIM14)

Bit 6:4 OC1M: So sánh đầu ra 1 chế độ

Các bit này xác định hành vi của tín hiệu tham chiếu đầu ra OC1REF mà từ đó OC1 và OC1N được tạo ra. OC1REF
hoạt động ở mức cao trong khi mức hoạt động của OC1 và OC1N lần lượt phụ thuộc vào các bit CC1P và CC1NP.

000: Frozen - Việc so sánh giữa thanh ghi so sánh đầu ra TIMx_CCR1 và bộ đếm TIMx_CNT không ảnh hưởng đến
đầu ra. (Chế độ này được sử dụng để tạo cơ sở định thời).

001: Đặt kênh 1 ở mức hoạt động phù hợp. Tín hiệu OC1REF bị buộc ở mức cao khi bộ đếm TIMx_CNT khớp với
thanh ghi chụp/so sánh 1 (TIMx_CCR1).
010: Đặt kênh 1 ở mức không hoạt động khi khớp. Tín hiệu OC1REF bị ép ở mức thấp khi bộ đếm TIMx_CNT khớp
với thanh ghi chụp/so sánh 1 (TIMx_CCR1).
011: Chuyển đổi - OC1REF chuyển đổi khi TIMx_CNT=TIMx_CCR1
100: Mức độ không hoạt động - OC1REF bị buộc ở mức thấp

101: Mức độ hoạt động cưỡng bức - OC1REF bị buộc ở mức cao

110: Chế độPWM 1 - Trong quá trình đếm ngược, kênh 1 hoạt động miễn là TIMx_CNT<TIMx_CCR1 nếu không thì
kênh 1 không hoạt động. Trong đếm ngược, kênh 1 không hoạt động (OC1REF='0) miễn là
TIMx_CNT>TIMx_CCR1, nếu không thì nó hoạt động (OC1REF='1')
111: Chế độPWM 2 - Trong quá trình đếm ngược, kênh 1 không hoạt động miễn là TIMx_CNT<TIMx_CCR1 nếu không
nó vẫn hoạt động. Trong quá trình đếm ngược, kênh 1 hoạt động miễn là TIMx_CNT>TIMx_CCR1 nếu không thì
kênh 1 không hoạt động.

Lưu ý: Ở chế độPWM 1 hoặc 2, mức OCREF chỉ thay đổi khi kết quả của
so sánh thay đổi hoặc khi chế độ so sánh đầu ra chuyển từ chế độ “đóng băng” sang chế độ “PWM”.

Bit 3 OC1PE: Cho phép tải trước so sánh đầu ra 1

0: Đăng ký tải trước trên TIMx_CCR1 bị tắt. TIMx_CCR1 có thể được ghi bất cứ lúc nào, giá trị mới sẽ
được tính đến ngay lập tức
1: Đăng ký tải trước trên TIMx_CCR1 được bật. Hoạt động đọc/ghi truy cập vào thanh ghi tải trước. Giá
trị tải trước TIMx_CCR1 được tải vào thanh ghi hoạt động tại mỗi sự kiện cập nhật

Lưu ý: Có thể sử dụng chế độ xung mà không cần xác nhận thanh ghi tải trước chỉ ở chế độ một xung (bit OPM
được đặt trong thanh ghi TIMx_CR1). Nếu không thì hành vi không được đảm bảo.

Bit 2 OC1FE: So sánh đầu ra 1 cho phép nhanh

Bit này được sử dụng để tăng tốc tác động của một sự kiện lên bộ kích hoạt ở đầu vào trên đầu ra CC.
0: CC1 hoạt động bình thường tùy thuộc vào giá trị bộ đếm và CCR1 ngay cả khi bộ kích hoạt BẬT. Độ
trễ tối thiểu để kích hoạt đầu ra CC1 khi xuất hiện cạnh trên đầu vào kích hoạt là 5 chu kỳ xung nhịp

1: Cạnh hoạt động trên đầu vào kích hoạt hoạt động giống như đối sánh so sánh trên đầu ra CC1. Sau đó, OC
được đặt ở mức so sánh độc lập với kết quả so sánh. Độ trễ lấy mẫu đầu vào kích hoạt và kích hoạt đầu
ra CC1 giảm xuống còn 3 chu kỳ xung nhịp. OC1FE chỉ hoạt động nếu kênh được cấu hình ở chế độPWM1
hoặcPWM2.

Bit 1:0 CC1S: Chụp/So sánh 1 lựa chọn

Trường bit này xác định hướng của kênh (đầu vào/đầu ra) cũng như đầu vào được sử dụng.
00: Kênh CC1 được cấu hình làm đầu ra
01: Kênh CC1 được cấu hình làm đầu vào, IC1 được ánh xạ trên TI1
10: Kênh CC1 được cấu hình làm đầu vào, IC1 được ánh xạ trên TI2
11: Kênh CC1 được cấu hình làm đầu vào, IC1 được ánh xạ trên TRC. Chế độ này chỉ hoạt động nếu đầu vào kích
hoạt bên trong được chọn thông qua bit TS (thanh ghi TIMx_SMCR)

Lưu ý: Các bit CC1S chỉ có thể ghi khi kênh TẮT (CC1E = 0 trong TIMx_CCER).

RM0008 Phiên bản 21 453/1136

468
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM9 đến TIM14) RM0008

Chế độ chụp đầu vào

Bit 15:12 IC2F: Bộ lọc chụp đầu vào 2

Bit 11:10 IC2PSC[1:0]: Bộ chia tỷ lệ thu nạp đầu vào 2

Bit 9:8 CC2S: Chụp/so sánh 2 lựa chọn Trường bit này

xác định hướng của kênh (đầu vào/đầu ra) cũng như đầu vào được sử dụng.
00: Kênh CC2 được cấu hình làm đầu ra 01: Kênh
CC2 được cấu hình làm đầu vào, IC2 được ánh xạ trên TI2 10: Kênh CC2 được
cấu hình làm đầu vào, IC2 được ánh xạ trên TI1 11: Kênh CC2 được ánh xạ
làm đầu vào, IC2 được ánh xạ trên TRC . Chế độ này chỉ hoạt động nếu đầu vào kích hoạt bên trong được chọn
thông qua bit TS (thanh ghi TIMx_SMCR)

Lưu ý: Các bit CC2S chỉ có thể ghi khi kênh TẮT (CC2E = 0 trong TIMx_CCER).

Bit 7:4 IC1F: Bộ lọc chụp đầu vào 1

Trường bit này xác định tần số được sử dụng để lấy mẫu đầu vào TI1 và độ dài của bộ lọc kỹ thuật số được áp
dụng cho TI1. Bộ lọc kỹ thuật số được tạo từ một bộ đếm sự kiện trong đó cần có N sự kiện liên tiếp để
xác thực quá trình chuyển đổi ở đầu ra: 0000: Không có bộ lọc,

việc lấy mẫu được thực hiện tại fDTS 0001:

fSAMPLING = fCK_INT , N=2 0010:


fSAMPLING=fCK_INT, N =4 0011:
fSAMPLING=fCK_INT, N=8 0100:
fSAMPLING=fDTS/2, N=6 0101:
fSAMPLING=fDTS/2, N=8 0110:
fSAMPLING=fDTS/4, N=6 0111:
fSAMPLING=fDTS/ 4, N=8 1000:

fSAMPLING=fDTS/8, N=6 1001:


fSAMPLING=fDTS/8, N=8 1010:
fSAMPLING=fDTS/16, N=5 1011:
fSAMPLING=fDTS/16, N=6 1100 :
fSAMPLING=fDTS/16, N=8 1101:
fSAMPLING=fDTS/32, N=5 1110:
fSAMPLING=fDTS/32, N=6 1111:
fSAMPLING=fDTS/32, N=8

Bit 3:2 IC1PSC: Bộ đếm gộp 1 thu thập đầu vào

Trường bit này xác định tỷ lệ của bộ đếm gộp hoạt động trên đầu vào CC1 (IC1).
Bộ đếm gộp trước được đặt lại ngay khi CC1E='0' (thanh ghi TIMx_CCER). 00: không có

bộ đếm trước, việc chụp được thực hiện mỗi khi phát hiện thấy một cạnh trên đầu vào chụp 01: việc chụp

được thực hiện một lần sau mỗi 2 sự kiện 10: việc

chụp được thực hiện một lần trong mỗi 4 sự kiện

11: việc chụp được thực hiện một lần trong mỗi 8 sự kiện

Bit 1:0 CC1S: Lựa chọn Chụp/So sánh 1 Trường bit này

xác định hướng của kênh (đầu vào/đầu ra) cũng như đầu vào được sử dụng.
00: Kênh CC1 được cấu hình làm đầu ra 01: Kênh
CC1 được cấu hình làm đầu vào, IC1 được ánh xạ trên TI1 10: Kênh CC1
được cấu hình làm đầu vào, IC1 được ánh xạ trên TI2 11: Kênh CC1 được
cấu hình làm đầu vào, IC1 được ánh xạ trên TRC . Chế độ này chỉ hoạt động nếu đầu vào kích hoạt bên trong
được chọn thông qua bit TS (thanh ghi TIMx_SMCR)

Lưu ý: Các bit CC1S chỉ có thể ghi khi kênh TẮT (CC1E = 0 trong TIMx_CCER).

454/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM9 đến TIM14)

16.4.7 Thanh ghi cho phép chụp/so sánh TIM9/12 (TIMx_CCER)


Độ lệch địa chỉ: 0x20

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CC2NP CC2P CC2E CC1NP CC1P CC1E


Kín đáo Res. Res.
rw rw rw rw rw rw

Bit 15:8 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 7 CC2NP: Chụp/So sánh 2 cực đầu ra

tham khảo mô tả CC1NP

Bit 6 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 5 CC2P: Chụp/So sánh 2 cực đầu ra

tham khảo mô tả CC1P

Bit 4 CC2E: Cho phép chụp/so sánh 2 đầu ra

tham khảo mô tả CC1E

Bit 3 CC1NP: Chụp/So sánh 1 đầu ra bổ sung

Kênh CC1 được định cấu hình làm đầu ra: CC1NP phải được xóa

Kênh CC1 được định cấu hình làm đầu vào: CC1NP được sử dụng cùng với CC1P để xác định cực tính
TI1FP1/TI2FP1 (tham khảo mô tả CC1P).

Bit 2 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 1 CC1P: Chụp/So sánh 1 cực đầu ra.

Kênh CC1 được định cấu hình làm đầu ra:


0: OC1 hoạt động ở mức cao.
1: OC1 hoạt động ở mức thấp.

Kênh CC1 được định cấu hình làm đầu vào:

Các bit CC1NP/CC1P chọn cực TI1FP1 và TI2FP1 cho các hoạt động kích hoạt hoặc chụp.

00: cạnh không đảo/tăng

Mạch nhạy cảm với cạnh tăng TIxFP1 (chụp, kích hoạt khi đặt lại, đồng hồ bên ngoài hoặc chế độ kích hoạt),
TIxFP1 không bị đảo ngược (kích hoạt ở chế độ kiểm soát, chế độ bộ mã hóa).

01: cạnh ngược/xuống

Mạch nhạy cảm với cạnh rơi TIxFP1 (chụp, kích hoạt khi đặt lại, đồng hồ bên ngoài hoặc chế độ kích hoạt),
TIxFP1 bị đảo ngược (kích hoạt ở chế độ kiểm soát, chế độ bộ mã hóa).

10: dành riêng, không sử dụng cấu hình này.

Lưu ý: 11: không đảo/cả hai cạnh


Mạch nhạy cảm với cả cạnh tăng và giảm TIxFP1 (chụp, kích hoạt khi đặt lại, đồng hồ bên ngoài
hoặc chế độ kích hoạt), TIxFP1 không bị đảo ngược (kích hoạt ở chế độ kiểm soát). Cấu hình này
không được sử dụng cho chế độ mã hóa.

Bit 0 CC1E: Cho phép chụp/so sánh 1 đầu ra.

Kênh CC1 được định cấu hình làm đầu ra:


0: Tắt - OC1 không hoạt động.

1: Tín hiệu Bật - OC1 được xuất ra trên chân đầu ra tương ứng.

Kênh CC1 được định cấu hình làm đầu vào:


Bit này xác định xem việc thu thập giá trị bộ đếm có thực sự được thực hiện vào thanh ghi thu thập/so
sánh đầu vào 1 (TIMx_CCR1) hay không.
0: Tắt tính năng chụp.
1: Đã bật tính năng chụp.

RM0008 Phiên bản 21 455/1136

468
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM9 đến TIM14) RM0008

Bảng 90. Bit điều khiển đầu ra cho các kênh OCx tiêu chuẩn

bit CCxE Trạng thái đầu ra OCx

0 Đầu ra bị vô hiệu hóa (OCx='0', OCx_EN='0')

1 OCx=OCxREF + Phân cực, OCx_EN='1'

Ghi chú: Trạng thái của các chân I/O bên ngoài được kết nối với các kênh OCx tiêu chuẩn phụ thuộc vào trạng
thái của kênh OCx và trên các thanh ghi GPIO.

Bộ đếm 16.4.8 TIM9/12 (TIMx_CNT)

Độ lệch địa chỉ: 0x24

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CNT[15:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15:0 CNT[15:0]: Giá trị bộ đếm

Bộ chia tỷ lệ trước 16.4.9 TIM9/12 (TIMx_PSC)

Độ lệch địa chỉ: 0x28

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

PSC[15:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15:0 PSC[15:0]: Giá trị bộ đếm trước

Tần số xung nhịp của bộ đếm CK_CNT bằng fCK_PSC / (PSC[15:0] + 1).
PSC chứa giá trị được tải vào thanh ghi bộ đếm gộp hoạt động tại mỗi sự kiện cập nhật (bao gồm cả khi bộ
đếm bị xóa thông qua bit UG của thanh ghi TIMx_EGR hoặc thông qua bộ điều khiển kích hoạt khi được
định cấu hình ở “chế độ đặt lại”).

Thanh ghi tự động tải lại 16.4.10 TIM9/12 (TIMx_ARR)

Độ lệch địa chỉ: 0x2C

Đặt lại giá trị: 0xFFFF

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

ARR[15:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15:0 ARR[15:0]: Giá trị tự động tải lại

ARR là giá trị được tải vào thanh ghi tự động tải lại thực tế.

Tham khảo Phần 16.3.1: Đơn vị cơ sở thời gian để biết thêm chi tiết về hành vi và cập nhật ARR.

Bộ đếm bị chặn trong khi giá trị tự động tải lại là null.

456/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM9 đến TIM14)

16.4.11 Thanh ghi ghi/so sánh TIM9/12 1 (TIMx_CCR1)


Độ lệch địa chỉ: 0x34

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CCR1[15:0]

rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro

Bit 15:0 CCR1[15:0]: Chụp/So sánh 1 giá trị

Nếu kênh CC1 được cấu hình làm đầu ra:


CCR1 là giá trị được tải vào thanh ghi chụp/so sánh 1 thực tế (giá trị tải trước).
Nó được tải vĩnh viễn nếu tính năng tải trước không được chọn trong thanh ghi TIMx_CCMR1 (bit
OC1PE). Mặt khác, giá trị tải trước được sao chép vào thanh ghi chụp/so sánh 1 đang hoạt động
khi xảy ra sự kiện cập nhật.

Thanh ghi chụp/so sánh hoạt động chứa giá trị được so sánh với bộ đếm TIMx_CNT và được báo hiệu
trên đầu ra OC1.
Nếu kênh CC1 được định cấu hình làm đầu vào:
CCR1 là giá trị bộ đếm được truyền bởi sự kiện chụp 1 đầu vào cuối cùng (IC1). Thanh ghi
TIMx_CCR1 ở chế độ chỉ đọc và không thể lập trình được.

16.4.12 Thanh ghi ghi/so sánh TIM9/12 2 (TIMx_CCR2)


Độ lệch địa chỉ: 0x38

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CCR2[15:0]

rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro

Bit 15:0 CCR2[15:0]: Chụp/So sánh 2 giá trị

Nếu kênh CC2 được cấu hình làm đầu ra:


CCR2 là giá trị được tải vào thanh ghi chụp/so sánh 2 thực tế (giá trị tải trước).
Nó được tải vĩnh viễn nếu tính năng tải trước không được chọn trong thanh ghi TIMx_CCMR2 (bit
OC2PE). Mặt khác, giá trị tải trước được sao chép vào thanh ghi chụp/so sánh 2 đang hoạt động
khi xảy ra sự kiện cập nhật.

Thanh ghi chụp/so sánh hoạt động chứa giá trị được so sánh với bộ đếm TIMx_CNT và được báo hiệu
trên đầu ra OC2.
Nếu kênh CC2 được cấu hình làm đầu vào:
CCR2 là giá trị bộ đếm được truyền bởi sự kiện chụp 2 đầu vào cuối cùng (IC2). Thanh ghi
TIMx_CCR2 ở chế độ chỉ đọc và không thể lập trình được.

RM0008 Phiên bản 21 457/1136

468
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM9 đến TIM14) RM0008

Bản đồ đăng ký 16.4.13 TIM9/12

Các thanh ghi TIM9/12 được ánh xạ dưới dạng các thanh ghi có thể định địa chỉ 16 bit như mô tả
bên dưới. Các vùng bộ nhớ dành riêng được tô sáng màu xám trong bảng.

Bảng 91. Bản đồ đăng ký TIM9/12 và giá trị đặt lại

Bù lại Đăng ký

1
5
ố8
s

7
6

0
3
9

2
4
11
13

12
CKD
TIMx_CR1
0x00 Kín đáo [1:0] Kín đáo

SRU

NEC
MPO

SIDU
EPRA
Đặt lại giá trị 000 0000

TIMx_SMCR TS[2:0] SMS[2:0]


0x08 Kín đáo

Đặt lại giá trị 000 000


o íđ
K
TIMx_DIER

EIU
ÀVC
0x0C Kín đáo Kín đáo

TẠ

EI2CC

EI1CC
Đặt lại giá trị 0 000

TIMx_SR

FIU
FIT
0x10 Kín đáo Kín đáo

FI2CC

FI1CC
FO2CC

FO1CC
00

íđ
K
Đặt lại giá trị 0 000


o
TIMx_EGR
0x14 Kín đáo Kín đáo

G2CC

G1CC
Đặt lại giá trị 0 000

TIMx_CCMR1 CC1
OC2M CC2S OC1M
Chế độ so sánh S
Kín đáo [2:0] [1:0] [2:0]
đầu ra [1:0]
EF2CO

EF1CO
EP2CO

EP1CO
0 0 0 0 0 0 0

íđ
K
Đặt lại giá trị 0 0 0 0 0 0 0


o
0x18
TIMx_CCMR1 IC2 IC1 CC1
CC2S
Chế độ chụp IC2F[3:0] PSC IC1F[3:0] PSC S
đầu vào
Kín đáo [1:0]
[1:0] [1:0] [1:0]

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0x1C Kín đáo

TIMx_CCER
0x20 Kín đáo
P2CC

E2CC

P1CC

E1CC
PN2CC

PN1CC

0 000 00
íđ
K

íđ
K

Đặt lại giá trị



o

TIMx_CNT CNT[15:0]
0x24 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

TIMx_PSC PSC[15:0]
0x28 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

TIMx_ARR ARR[15:0]
0x2C Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0x30 Kín đáo

TIMx_CCR1 CCR1[15:0]
0x34 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

458/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM9 đến TIM14)

Bảng 91. Sơ đồ đăng ký TIM9/12 và giá trị đặt lại (tiếp theo)

Bù lại Đăng ký

1
5
ố8
s

7
6

0
3
9

2
4
TIMx_CCR2 CCR2[15:0]
0x38 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0x3C
Kín đáo
đến 0x4C

Tham khảo Phần 3.3: Bản đồ bộ nhớ cho các địa chỉ biên của thanh ghi.

RM0008 Phiên bản 21 459/1136

468
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM9 đến TIM14) RM0008

16,5 Thanh ghi TIM10/11/13/14


Các thanh ghi ngoại vi phải được ghi bằng nửa từ (16 bit) hoặc từ (32 bit). Việc truy cập đọc có thể
được thực hiện theo byte (8 bit), nửa từ (16 bit) hoặc từ (32 bit).

16.5.1 Thanh ghi điều khiển TIM10/11/13/14 1 (TIMx_CR1)

Độ lệch địa chỉ: 0x00

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CKD[1:0] ARPE OPM URS UDIS CEN


Kín đáo Kín đáo
rw rw rw rw rw rw rw

Bit 15:10 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 9:8 CKD: Phân chia đồng hồ

Trường bit này biểu thị tỷ lệ phân chia giữa tần số đồng hồ hẹn giờ (CK_INT) và đồng hồ lấy mẫu được
sử dụng bởi các bộ lọc kỹ thuật số (TIx),

00: tDTS = tCK_INT


01: tDTS = 2 × tCK_INT
10: tDTS = 4 × tCK_INT
11: Dự trữ

Bit 7 ARPE: Cho phép tải trước tự động tải lại

0: Thanh ghi TIMx_ARR không được đệm


1: Thanh ghi TIMx_ARR được lưu vào bộ đệm

Bit 6:4 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 3 OPM: Chế độ một xung

0: Bộ đếm không dừng trong sự kiện cập nhật


1: Bộ đếm dừng đếm ở sự kiện cập nhật tiếp theo (xóa bit CEN).

Bit 2 URS: Cập nhật nguồn yêu cầu

Bit này được thiết lập và xóa bằng phần mềm để chọn nguồn ngắt cập nhật (UEV).

0: Bất kỳ sự kiện nào sau đây đều tạo ra UEV nếu được bật: – Tràn
bộ đếm

– Thiết lập bit UG

1: Chỉ lỗi tràn bộ đếm mới tạo ra UEV nếu được bật.

Bit 1 UDIS: Vô hiệu hóa cập nhật

Bit này được thiết lập và xóa bằng phần mềm để bật/tắt việc tạo sự kiện ngắt cập nhật (UEV).

0: Đã bật UEV. Một UEV được tạo bởi một trong các sự kiện sau:
– Tràn bộ đếm

– Thiết lập bit UG.

Các thanh ghi đệm sau đó được tải với các giá trị tải trước của chúng.

1: UEV bị vô hiệu hóa. Không có UEV nào được tạo ra, các thanh ghi bóng giữ nguyên giá trị của chúng
(ARR, PSC, CCRx). Bộ đếm và bộ đếm gộp trước được khởi tạo lại nếu bit UG được đặt.

Bit 0 CEN: Cho phép bộ đếm

0: Bộ đếm bị vô hiệu hóa

1: Đã bật bộ đếm

460/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM9 đến TIM14)

16.5.2 TIM10/11/13/14 Thanh ghi cho phép ngắt (TIMx_DIER)

Độ lệch địa chỉ: 0x0C

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

UI CC1IE
Kín đáo
rw rw

Bit 15:2 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 1 CC1IE: Cho phép chụp/so sánh 1 ngắt

0: Ngắt CC1 bị vô hiệu hóa


1: Cho phép ngắt CC1

Bit 0 UIE: Cho phép ngắt cập nhật

0: Ngắt cập nhật bị vô hiệu hóa


1: Đã bật ngắt cập nhật

16.5.3 Thanh ghi trạng thái TIM10/11/13/14 (TIMx_SR)

Độ lệch địa chỉ: 0x10

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CC1OF CC1IF UIF


Kín đáo Kín đáo
rc_w0 rc_w0 rc_w0

Bit 15:10 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 9 CC1OF: Chụp/So sánh 1 cờ bắt vượt mức

Cờ này chỉ được đặt bằng phần cứng khi kênh tương ứng được định cấu hình ở chế độ chụp đầu vào. Nó được
xóa bằng phần mềm bằng cách ghi nó vào '0'.
0: Không phát hiện thấy tình trạng chụp quá mức.

1: Giá trị bộ đếm đã được ghi lại trong thanh ghi TIMx_CCR1 trong khi cờ CC1IF đã được đặt

Bit 8:2 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 1 CC1IF: Chụp/so sánh 1 cờ ngắt

Nếu kênh CC1 được cấu hình làm đầu ra:


Cờ này được đặt bằng phần cứng khi bộ đếm khớp với giá trị so sánh. Nó được xóa bằng phần mềm.

0: Không khớp.

1: Nội dung của bộ đếm TIMx_CNT khớp với nội dung của thanh ghi TIMx_CCR1.
Khi nội dung của TIMx_CCR1 lớn hơn nội dung của TIMx_ARR, bit CC1IF sẽ ở mức cao khi bộ đếm tràn.

Nếu kênh CC1 được cấu hình làm đầu vào:

Bit này được thiết lập bởi phần cứng khi chụp. Nó được xóa bằng phần mềm hoặc bằng cách đọc thanh
ghi TIMx_CCR1.

0: Không xảy ra quá trình thu thập đầu vào.

1: Giá trị bộ đếm đã được ghi lại trong thanh ghi TIMx_CCR1 (một cạnh đã được phát hiện trên IC1 khớp với
cực đã chọn).

RM0008 Phiên bản 21 461/1136

468
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM9 đến TIM14) RM0008

Bit 0 UIF: Cờ ngắt cập nhật

Bit này được thiết lập bởi phần cứng trong một sự kiện cập nhật. Nó được xóa bằng phần mềm.

0: Không có cập nhật nào xảy ra.

1: Cập nhật ngắt đang chờ xử lý. Bit này được thiết lập bởi phần cứng khi các thanh ghi được cập nhật:

– Khi tràn và nếu UDIS='0' trong thanh ghi TIMx_CR1.

– Khi CNT được khởi tạo lại bằng phần mềm sử dụng bit UG trong thanh ghi TIMx_EGR, nếu URS='0' và UDIS='0'

trong thanh ghi TIMx_CR1.

16.5.4 Thanh ghi tạo sự kiện TIM10/11/13/14 (TIMx_EGR)


Độ lệch địa chỉ: 0x14

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CC1G UG
Kín đáo
w w

Bit 15:2 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 1 CC1G: Chụp/so sánh 1 thế hệ

Bit này được thiết lập bởi phần mềm để tạo ra một sự kiện, nó sẽ tự động bị xóa bằng phần cứng.

0: Không có hành động

1: Sự kiện thu thập/so sánh được tạo trên kênh 1:

Nếu kênh CC1 được cấu hình làm đầu ra:

Cờ CC1IF được đặt, Ngắt tương ứng hoặc được gửi nếu được bật.

Nếu kênh CC1 được cấu hình làm đầu vào:

Giá trị hiện tại của bộ đếm được ghi vào thanh ghi TIMx_CCR1. Cờ CC1IF được đặt, ngắt tương ứng sẽ được gửi nếu

được bật. Cờ CC1OF được đặt nếu cờ CC1IF đã ở mức cao.

Bit 0 UG: Tạo bản cập nhật

Bit này có thể được thiết lập bằng phần mềm, nó sẽ tự động bị xóa bằng phần cứng.
0: Không có hành động

1: Khởi tạo lại bộ đếm và tạo bản cập nhật của các thanh ghi. Lưu ý rằng bộ đếm bộ đếm gộp trước cũng bị xóa (dù

sao thì tỷ lệ của bộ đếm gộp trước cũng không bị ảnh hưởng). Bộ đếm được xóa.

16.5.5 Thanh ghi chế độ chụp/so sánh TIM10/11/13/14 1 (TIMx_CCMR1)


Độ lệch địa chỉ: 0x18

Giá trị đặt lại: 0x0000

Các kênh có thể được sử dụng ở đầu vào (chế độ chụp) hoặc ở đầu ra (chế độ so sánh). Hướng của
kênh được xác định bằng cách định cấu hình các bit CCxS tương ứng. Tất cả các bit khác của thanh
ghi này có chức năng khác ở chế độ đầu vào và đầu ra. Đối với một bit nhất định, OCxx mô tả chức
năng của nó khi kênh được cấu hình ở đầu ra, ICxx mô tả chức năng của nó khi kênh được cấu hình ở
đầu vào. Vì vậy, hãy lưu ý rằng cùng một bit có thể có ý nghĩa khác nhau đối với giai đoạn đầu vào và
giai đoạn đầu ra.
15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

Kín đáo OC1M[2:0] OC1PE OC1FE


CC1S[1:0]
IC1F[3:0] IC1PSC[1:0]
Kín đáo
rw rw rw rw rw rw rw rw

462/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM9 đến TIM14)

Chế độ so sánh đầu ra

Bit 15:7 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 6:4 OC1M: So sánh đầu ra 1 chế độ

Các bit này xác định hành vi của tín hiệu tham chiếu đầu ra OC1REF mà từ đó OC1 được tạo ra. OC1REF hoạt

động ở mức cao trong khi mức hoạt động OC1 phụ thuộc vào bit CC1P.

000: Đông lạnh. Việc so sánh giữa thanh ghi so sánh đầu ra TIMx_CCR1 và bộ đếm TIMx_CNT không ảnh hưởng

đến đầu ra.

001: Đặt kênh 1 ở mức hoạt động phù hợp. Tín hiệu OC1REF bị ép lên cao khi bộ đếm TIMx_CNT khớp với thanh ghi

chụp/so sánh 1 (TIMx_CCR1).

010: Đặt kênh 1 ở mức không hoạt động khi khớp. Tín hiệu OC1REF bị ép ở mức thấp khi bộ đếm TIMx_CNT

khớp với thanh ghi chụp/so sánh 1 (TIMx_CCR1).

011: Chuyển đổi - OC1REF chuyển đổi khi TIMx_CNT = TIMx_CCR1.


100: Mức độ không hoạt động cưỡng bức - OC1REF bị buộc ở mức thấp.

101: Mức độ hoạt động cưỡng bức - OC1REF bị buộc ở mức cao.

110: Chế độPWM 1 - Kênh 1 đang hoạt động miễn là TIMx_CNT < TIMx_CCR1 không hoạt động.

111: Chế độPWM 2 - Kênh 1 không hoạt động miễn là TIMx_CNT < TIMx_CCR1 khác hoạt động.

Lưu ý: Ở chế độPWM 1 hoặc 2, mức OCREF thay đổi khi kết quả so sánh thay đổi hoặc khi chế độ so sánh đầu ra

chuyển từ chế độ đóng băng sang chế độPWM.

Bit 3 OC1PE: Cho phép tải trước so sánh đầu ra 1

0: Đăng ký tải trước trên TIMx_CCR1 bị tắt. TIMx_CCR1 có thể được ghi bất cứ lúc nào, giá trị mới sẽ được

tính đến ngay lập tức.

1: Đăng ký tải trước trên TIMx_CCR1 được bật. Hoạt động đọc/ghi truy cập vào thanh ghi tải trước. Giá

trị tải trước TIMx_CCR1 được tải vào thanh ghi hoạt động tại mỗi sự kiện cập nhật.

Lưu ý: Có thể sử dụng chế độ xung mà không cần xác nhận thanh ghi tải trước chỉ ở chế độ một xung (bit OPM được

đặt trong thanh ghi TIMx_CR1). Nếu không thì hành vi không được đảm bảo.

Bit 2 OC1FE: So sánh đầu ra 1 cho phép nhanh

Bit này được sử dụng để tăng tốc tác động của một sự kiện lên bộ kích hoạt ở đầu vào trên đầu ra CC.

0: CC1 hoạt động bình thường tùy thuộc vào giá trị bộ đếm và CCR1 ngay cả khi bộ kích hoạt BẬT. Độ trễ tối

thiểu để kích hoạt đầu ra CC1 khi xuất hiện cạnh trên đầu vào kích hoạt là 5 chu kỳ xung nhịp.

1: Cạnh hoạt động trên đầu vào kích hoạt hoạt động giống như đối sánh so sánh trên đầu ra CC1. OC sau đó được

đặt ở mức so sánh độc lập với kết quả so sánh. Độ trễ lấy mẫu đầu vào kích hoạt và kích hoạt đầu ra CC1 giảm

xuống còn 3 chu kỳ xung nhịp. OC1FE chỉ hoạt động nếu kênh được cấu hình ở chế độPWM1 hoặcPWM2.

Bit 1:0 CC1S: Chụp/So sánh 1 lựa chọn

Trường bit này xác định hướng của kênh (đầu vào/đầu ra) cũng như đầu vào được sử dụng.

00: Kênh CC1 được cấu hình làm đầu ra.

01: Kênh CC1 được cấu hình làm đầu vào, IC1 được ánh xạ trên TI1.

10: Kênh CC1 được cấu hình làm đầu vào, IC1 được ánh xạ trên TI2

11: Kênh CC1 được cấu hình làm đầu vào, IC1 được ánh xạ trên TRC. Chế độ này chỉ hoạt động nếu đầu vào kích

hoạt bên trong được chọn thông qua bit TS (thanh ghi TIMx_SMCR)

Lưu ý: Các bit CC1S chỉ có thể ghi khi kênh TẮT (CC1E = 0 trong TIMx_CCER).

RM0008 Phiên bản 21 463/1136

468
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM9 đến TIM14) RM0008

Chế độ chụp đầu vào

Bit 15:8 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 7:4 IC1F: Bộ lọc thu thập đầu vào 1

Trường bit này xác định tần số được sử dụng để lấy mẫu đầu vào TI1 và độ dài của bộ lọc kỹ thuật số được áp dụng

cho TI1. Bộ lọc kỹ thuật số được tạo từ một bộ đếm sự kiện trong đó cần có N sự kiện liên tiếp để xác thực quá

trình chuyển đổi ở đầu ra: 0000: Không có bộ lọc, việc lấy

mẫu được thực hiện tại fDTS 0001: fSAMPLING =

fCK_INT , N=2 0010: fSAMPLING=fCK_INT,

N =4 0011: fSAMPLING=fCK_INT, N=8

0100: fSAMPLING=fDTS/2, N=6 0101:


fSAMPLING=fDTS/2, N=8 0110:

fSAMPLING=fDTS/4, N=6 0111:

fSAMPLING=fDTS/ 4, N=8 1000:

fSAMPLING=fDTS/8, N=6 1001:

fSAMPLING=fDTS/8, N=8 1010:

fSAMPLING=fDTS/16, N=5 1011:

fSAMPLING=fDTS/16, N=6 1100 :

fSAMPLING=fDTS/16, N=8 1101:

fSAMPLING=fDTS/32, N=5 1110:

fSAMPLING=fDTS/32, N=6 1111:

fSAMPLING=fDTS/32, N=8

Bit 3:2 IC1PSC: Bộ đếm gộp 1 thu thập đầu vào Trường

bit này xác định tỷ lệ của bộ đếm gộp hoạt động trên đầu vào CC1 (IC1).

Bộ đếm gộp trước được đặt lại ngay khi CC1E='0' (thanh ghi TIMx_CCER). 00: không có

bộ đếm trước, việc chụp được thực hiện mỗi khi phát hiện thấy một cạnh trên đầu vào chụp 01: việc chụp

được thực hiện một lần sau mỗi 2 sự kiện 10: việc

chụp được thực hiện một lần trong mỗi 4 sự kiện

11: việc chụp được thực hiện một lần trong mỗi 8 sự kiện

Bit 1:0 CC1S: Lựa chọn Chụp/So sánh 1 Trường bit này xác

định hướng của kênh (đầu vào/đầu ra) cũng như đầu vào được sử dụng.

00: Kênh CC1 được cấu hình làm đầu ra 01: Kênh CC1

được cấu hình làm đầu vào, IC1 được ánh xạ trên TI1 10: Kênh CC1 được cấu

hình làm đầu vào, IC1 được ánh xạ trên TI2 11: Kênh CC1 được cấu hình làm đầu

vào, IC1 được ánh xạ trên TRC . Chế độ này chỉ hoạt động nếu đầu vào kích hoạt bên trong được chọn thông qua bit

TS (thanh ghi TIMx_SMCR)

Lưu ý: Các bit CC1S chỉ có thể ghi khi kênh TẮT (CC1E = 0 trong TIMx_CCER).

464/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM9 đến TIM14)

16.5.6 Đăng ký cho phép chụp/so sánh TIM10/11/13/14 (TIMx_CCER)

Độ lệch địa chỉ: 0x20

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CC1NP CC1P CC1E


Kín đáo Res.
rw rw rw

Bit 15:4 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 3 CC1NP: Chụp/So sánh 1 cực đầu ra bổ sung.

Kênh CC1 được định cấu hình làm đầu ra: CC1NP phải được xóa.

Kênh CC1 được định cấu hình làm đầu vào: Bit CC1NP được sử dụng cùng với CC1P để xác định cực TI1FP1
(tham khảo mô tả CC1P).

Bit 2 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 1 CC1P: Chụp/So sánh 1 cực đầu ra.

Kênh CC1 được định cấu hình làm đầu ra:


0: OC1 hoạt động ở mức cao
1: OC1 hoạt động ở mức thấp

Kênh CC1 được định cấu hình làm đầu vào:

Bit CC1P chọn cực TI1FP1 và TI2FP1 cho các hoạt động kích hoạt hoặc chụp.

00: cạnh không đảo/tăng

Mạch nhạy cảm với cạnh tăng TI1FP1 (chế độ chụp), TI1FP1 không bị đảo ngược. 01: cạnh ngược/

xuống

Mạch nhạy cảm với cạnh rơi TI1FP1 (chế độ chụp), TI1FP1 bị đảo ngược.

10: dành riêng, không sử dụng cấu hình này. 11:

không đảo/cả hai cạnh

Mạch nhạy cảm với cả cạnh tăng và giảm TI1FP1 (chế độ chụp), TI1FP1 không bị đảo ngược.

Bit 0 CC1E: Cho phép chụp/so sánh 1 đầu ra.

Kênh CC1 được định cấu hình làm đầu ra:


0: Tắt - OC1 không hoạt động

1: Tín hiệu Bật - OC1 được xuất ra trên chân đầu ra tương ứng

Kênh CC1 được định cấu hình làm đầu vào:


Bit này xác định xem việc thu thập giá trị bộ đếm có thực sự được thực hiện vào thanh ghi thu thập/so
sánh đầu vào 1 (TIMx_CCR1) hay không.
0: Tắt chức năng chụp
1: Đã bật tính năng chụp

Bảng 92. Bit điều khiển đầu ra cho các kênh OCx tiêu chuẩn

Trạng thái đầu ra OCx bit CCxE

0 Đầu ra bị vô hiệu hóa (OCx='0', OCx_EN='0')

1 OCx=OCxREF + Phân cực, OCx_EN='1'

Ghi chú: Trạng thái của các chân I/O bên ngoài được kết nối với các kênh OCx tiêu chuẩn phụ thuộc vào trạng
thái kênh OCx và các thanh ghi GPIO.

RM0008 Phiên bản 21 465/1136

468
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM9 đến TIM14) RM0008

16.5.7 Bộ đếm TIM10/11/13/14 (TIMx_CNT)

Độ lệch địa chỉ: 0x24

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CNT[15:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15:0 CNT[15:0]: Giá trị bộ đếm

16.5.8 Bộ chia tỷ lệ trước TIM10/11/13/14 (TIMx_PSC)

Độ lệch địa chỉ: 0x28

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

PSC[15:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15:0 PSC[15:0]: Giá trị bộ đếm trước

Tần số xung nhịp của bộ đếm CK_CNT bằng fCK_PSC / (PSC[15:0] + 1).
PSC chứa giá trị được tải vào thanh ghi bộ đếm gộp hoạt động tại mỗi sự kiện cập nhật (bao gồm cả khi bộ
đếm bị xóa thông qua bit UG của thanh ghi TIMx_EGR hoặc thông qua bộ điều khiển kích hoạt khi được
định cấu hình ở “chế độ đặt lại”).

16.5.9 Thanh ghi tự động tải lại TIM10/11/13/14 (TIMx_ARR)

Độ lệch địa chỉ: 0x2C

Đặt lại giá trị: 0xFFFF

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

ARR[15:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15:0 ARR[15:0]: Giá trị tự động tải lại


ARR là giá trị được tải vào thanh ghi tự động tải lại thực tế.

Tham khảo Phần 16.3.1: Đơn vị cơ sở thời gian để biết thêm chi tiết về hành vi và cập nhật ARR.

Bộ đếm bị chặn trong khi giá trị tự động tải lại là null.

466/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ đa năng (TIM9 đến TIM14)

16.5.10 TIM10/11/13/14 ghi lại/so sánh thanh ghi 1 (TIMx_CCR1)


Độ lệch địa chỉ: 0x34

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CCR1[15:0]

rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro rw/ro

Bit 15:0 CCR1[15:0]: Chụp/So sánh 1 giá trị

Nếu kênh CC1 được cấu hình làm đầu ra:


CCR1 là giá trị được tải trong thanh ghi chụp/so sánh 1 thực tế (giá trị tải trước).

Nó được tải vĩnh viễn nếu tính năng tải trước không được chọn trong thanh ghi TIMx_CCMR1 (bit OC1PE). Mặt khác,
giá trị tải trước được sao chép trong thanh ghi chụp/so sánh 1 đang hoạt động khi xảy ra sự kiện cập nhật.

Thanh ghi chụp/so sánh hoạt động chứa giá trị được so sánh với bộ đếm TIMx_CNT và được báo hiệu trên
đầu ra OC1.

Nếu kênh CC1 được định cấu hình làm đầu vào:
CCR1 là giá trị bộ đếm được truyền bởi sự kiện chụp 1 đầu vào cuối cùng (IC1). Thanh ghi TIMx_CCR1 ở chế độ
chỉ đọc và không thể lập trình được.

RM0008 Phiên bản 21 467/1136

468
Machine Translated by Google

Bộ hẹn giờ đa năng (TIM9 đến TIM14) RM0008

Bản đồ đăng ký 16.5.11 TIM10/11/13/14

Các thanh ghi TIMx được ánh xạ dưới dạng các thanh ghi có thể định địa chỉ 16 bit như được mô tả trong bảng bên dưới.

Bảng 93. Bản đồ đăng ký TIM10/11/13/14 và giá trị đặt lại

1
5
ố8
s

7
6

0
3
9

2
4
Đăng ký bù đắp

CKD
TIMx_CR1 Dự trữ
[1:0]

SRU

NEC
0x00 Kín đáo

MPO

SIDU
EPRA
d
Đặt lại giá trị 000 000 0

TIMx_SMCR
0x08 Kín đáo
Đặt lại giá trị

TIMx_DIER
0x0C Kín đáo

EI1CC
Đặt lại giá trị 0 0

TIMx_SR
0x10 Kín đáo Kín đáo

FI1CC
FO1CC
Đặt lại giá trị 0 00

TIMx_EGR
0x14 Kín đáo

G1CC
Đặt lại giá trị 0 0

TIMx_CCMR1
OC1M CC1S
Chế độ so sánh
Kín đáo [2:0] [1:0]
đầu ra

EF1CO
EP1CO
Đặt lại giá trị 000000 0
0x18
TIMx_CCMR1 IC1
CC1S
Chế độ chụp IC1F[3:0] PSC
Kín đáo [1:0]
đầu vào [1:0]

Đặt lại giá trị 0000000 0

0x1C Kín đáo

TIMx_CCER
0x20 Kín đáo

P1CC

E1CC
PN1CC
íđ
K
Đặt lại giá trị 0 00

o

TIMx_CNT CNT[15:0]
0x24 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

TIMx_PSC PSC[15:0]
0x28 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

TIMx_ARR ARR[15:0]
0x2C Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0x30 Kín đáo

TIMx_CCR1 CCR1[15:0]
0x34 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0x38 đến
Kín đáo
0x4C

Tham khảo Phần 3.3: Bản đồ bộ nhớ cho các địa chỉ biên của thanh ghi.

468/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ cơ bản (TIM6 và TIM7)

17 Bộ hẹn giờ cơ bản (TIM6 và TIM7)

Các thiết bị mật độ thấp là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

Các thiết bị có mật độ trung bình là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 64 đến 128 Kbyte.

Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ
nhớ Flash nằm trong khoảng từ 256 đến 512 Kbyte.

Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ


bộ nhớ Flash nằm trong khoảng từ 768 Kbyte đến 1 Mbyte.

Các thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

Phần này áp dụng cho các thiết bị STM32F101xx và STM32F103xx mật độ cao và mật độ XL cũng
như chỉ áp dụng cho các thiết bị có đường kết nối.

17.1 Giới thiệu TIM6 và TIM7

Bộ định thời cơ bản TIM6 và TIM7 bao gồm bộ đếm tự động tải lại 16 bit được điều khiển bởi bộ chia
tỷ lệ trước có thể lập trình.

Chúng có thể được sử dụng làm bộ định thời chung để tạo cơ sở thời gian nhưng chúng cũng được sử dụng
đặc biệt để điều khiển bộ chuyển đổi kỹ thuật số sang tương tự (DAC). Trên thực tế, bộ hẹn giờ
được kết nối nội bộ với DAC và có thể điều khiển nó thông qua đầu ra kích hoạt của chúng.

Bộ tính giờ hoàn toàn độc lập và không chia sẻ bất kỳ tài nguyên nào.

17.2 Các tính năng chính của TIM6 và TIM7

Các tính năng hẹn giờ cơ bản (TIM6 và TIM7) bao gồm:
• Bộ đếm ngược tự động tải lại 16-bit

• Bộ đếm gộp trước có thể lập trình 16 bit được sử dụng để chia (cũng là “nhanh chóng”) tần số đồng

hồ bộ đếm cho bất kỳ hệ số nào trong khoảng từ 1 đến 65536

• Mạch đồng bộ kích hoạt DAC

• Tạo ngắt/DMA trong sự kiện cập nhật: tràn bộ đếm

RM0008 Phiên bản 21 469/1136

481
Machine Translated by Google

Bộ hẹn giờ cơ bản (TIM6 và TIM7) RM0008

Hình 169. Sơ đồ khối bộ định thời cơ bản

TRGO
Đồng hồ bên trong (CK_INT) Cò súng đến DAC
TIMxCLK từ RCC bộ điều khiển

Đặt lại, kích hoạt, đếm,


Bộ điều khiển

bạn

Tự động tải lại Đăng ký giao diện người dùng

Dừng lại, Xóa hoặc lên


bạn

CK_PSC CK_CNT CNT


PSC ±
Bộ đếm trước QUẦY TÍNH TIỀN

Lá cờ Tải trước các thanh ghi được chuyển


sang các thanh ghi hoạt động theo sự kiện U theo bit điều khiển

sự kiện

đầu ra ngắt & DMA


ai14749b

17.3 Mô tả chức năng TIM6 và TIM7

17.3.1 Đơn vị cơ sở thời gian

Khối chính của bộ định thời lập trình được là bộ đếm ngược 16 bit với thanh ghi tự động tải lại liên quan.
Đồng hồ đếm có thể được chia bằng bộ đếm trước.

Bộ đếm, thanh ghi tự động tải lại và thanh ghi bộ đếm trước có thể được ghi hoặc đọc bằng phần mềm.
Điều này đúng ngay cả khi bộ đếm đang chạy.

Đơn vị cơ sở thời gian bao gồm:

• Thanh ghi bộ đếm (TIMx_CNT)

• Thanh ghi bộ chia tỷ lệ trước (TIMx_PSC)

• Thanh ghi tự động tải lại (TIMx_ARR)

Thanh ghi tự động tải lại được tải trước. Thanh ghi tải trước được truy cập mỗi lần cố gắng ghi
hoặc đọc thanh ghi tự động tải lại. Nội dung của thanh ghi tải trước được chuyển vĩnh viễn vào
thanh ghi ẩn hoặc tại mỗi sự kiện cập nhật UEV, tùy thuộc vào bit cho phép tải trước tự động tải lại
(ARPE) trong thanh ghi TIMx_CR1. Sự kiện cập nhật được gửi khi bộ đếm đạt đến giá trị tràn và nếu bit
UDIS bằng 0 trong thanh ghi TIMx_CR1. Nó cũng có thể được tạo ra bởi phần mềm. Việc tạo sự kiện cập nhật
được mô tả chi tiết cho từng cấu hình.

Bộ đếm được bấm giờ bởi đầu ra bộ đếm gộp CK_CNT, chỉ được bật khi bit kích hoạt bộ đếm (CEN) trong
thanh ghi TIMx_CR1 được đặt.

Lưu ý rằng tín hiệu kích hoạt bộ đếm thực tế CNT_EN được đặt 1 chu kỳ xung nhịp sau CEN.

470/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ cơ bản (TIM6 và TIM7)

Mô tả bộ đếm trước

Bộ đếm gộp trước có thể chia tần số xung nhịp của bộ đếm cho bất kỳ hệ số nào từ 1 đến 65536. Nó dựa
trên bộ đếm 16 bit được điều khiển thông qua thanh ghi 16 bit (trong thanh ghi TIMx_PSC).
Nó có thể được thay đổi nhanh chóng khi thanh ghi điều khiển TIMx_PSC được lưu vào bộ đệm.
Tỷ lệ bộ đếm gộp trước mới được tính đến ở sự kiện cập nhật tiếp theo.

Hình 170 và Hình 171 đưa ra một số ví dụ về hành vi của bộ đếm khi tỷ lệ bộ đếm trước được thay đổi
nhanh chóng.

Hình 170. Sơ đồ định thời của bộ đếm với bộ chia tỷ lệ trước thay đổi từ 1 thành 2

CK_PSC

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký F7 F8 F9 FA FB FC 00 01 02 03

Cập nhật sự kiện (UEV)

Thanh ghi điều khiển bộ đếm trước 0 1

Viết một giá trị mới vào TIMx_PSC

Bộ đệm tỷ lệ trước 0 1

Bộ đếm tỷ lệ trước 0 0 1 0 1 0 1 0 1

MS31076V3

RM0008 Phiên bản 21 471/1136

481
Machine Translated by Google

Bộ hẹn giờ cơ bản (TIM6 và TIM7) RM0008

Hình 171. Sơ đồ định thời của bộ đếm với bộ chia tỷ lệ trước thay đổi từ 1 thành 4

CK_PSC

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký F7 F8 F9 FA FB FC 00 01

Cập nhật sự kiện (UEV)

Thanh ghi điều khiển bộ đếm trước 0 3

Viết một giá trị mới vào TIMx_PSC

Bộ đệm tỷ lệ trước 0 3

Bộ đếm tỷ lệ trước 0 0 1 23 0123

MS31077V3

17.3.2 Chế độ đếm

Bộ đếm đếm từ 0 đến giá trị tự động tải lại (nội dung của thanh ghi TIMx_ARR), sau đó khởi động
lại từ 0 và tạo ra sự kiện tràn bộ đếm.

Một sự kiện cập nhật có thể được tạo ra ở mỗi lần tràn bộ đếm hoặc bằng cách đặt bit UG trong
thanh ghi TIMx_EGR (bằng phần mềm hoặc bằng cách sử dụng bộ điều khiển chế độ phụ).

Sự kiện UEV có thể bị vô hiệu hóa bằng phần mềm bằng cách đặt bit UDIS trong thanh ghi
TIMx_CR1. Điều này tránh việc cập nhật các thanh ghi ẩn trong khi ghi các giá trị mới vào các thanh
ghi tải trước. Theo cách này, không có sự kiện cập nhật nào xảy ra cho đến khi bit UDIS được
ghi thành 0, tuy nhiên, bộ đếm và bộ đếm tỷ lệ trước đều khởi động lại từ 0 (nhưng tốc độ tỷ lệ
trước không thay đổi). Ngoài ra, nếu bit URS (lựa chọn yêu cầu cập nhật) trong thanh ghi TIMx_CR1
được đặt, thì việc đặt bit UG sẽ tạo ra một sự kiện cập nhật UEV, nhưng cờ UIF không được đặt (do
đó không có ngắt hoặc yêu cầu DMA nào được gửi).

Khi một sự kiện cập nhật xảy ra, tất cả các thanh ghi sẽ được cập nhật và cờ cập nhật (bit UIF
trong thanh ghi TIMx_SR) được đặt (tùy thuộc vào bit URS):

• Bộ đệm của bộ đếm gộp trước được tải lại với giá trị tải trước (nội dung của
thanh ghi TIMx_PSC)

• Thanh ghi bóng tự động tải lại được cập nhật với giá trị tải trước (TIMx_ARR)

Các hình sau đây hiển thị một số ví dụ về hoạt động của bộ đếm đối với các tần số xung nhịp
khác nhau khi TIMx_ARR = 0x36.

472/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ cơ bản (TIM6 và TIM7)

Hình 172. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 1

CK_INT

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 31 32 33 34 35 36 00 01 02 03 04 05 06 07

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)

MS37364V1

Hình 173. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 2

CK_INT

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 0034 0035 0036 0000 0001 0002 0003

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)


MS35835V1

RM0008 Phiên bản 21 473/1136

481
Machine Translated by Google

Bộ hẹn giờ cơ bản (TIM6 và TIM7) RM0008

Hình 174. Sơ đồ định thời của bộ đếm, đồng hồ bên trong chia cho 4

CK_INT

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 0035 0036 0000 0001

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)

MSv37301V1

Hình 175. Sơ đồ định thời của bộ đếm, xung nhịp bên trong chia cho N

CK_INT

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 1F 20 00

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)


MSv37302V1

Hình 176. Sơ đồ định thời bộ đếm, cập nhật sự kiện khi ARPE=0 (TIMx_ARR không
được tải trước)

CK_INT

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký 31 32 33 34 35 36 00 01 02 03 04 05 06 07

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)

Tự động tải lại đăng ký FF 36

Viết một giá trị mới vào TIMx_ARR


MSv37303V1

474/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ cơ bản (TIM6 và TIM7)

Hình 177. Sơ đồ định thời bộ đếm, cập nhật sự kiện khi ARPE=1 (TIMx_ARR
được tải trước)

CK_PSC

CNT_EN

Đồng hồ hẹn giờ = CK_CNT

quầy đăng ký F0 F1 F2 F3 F4 F5 00 01 02 03 04 05 06 07

tràn bộ đếm

Cập nhật sự kiện (UEV)

Cập nhật cờ ngắt (UIF)

Tự động tải lại đăng ký tải trước F5 36

Tự động tải lại thanh ghi bóng F5 36

Viết một giá trị mới vào TIMx_ARR


MSv37304V1

17.3.3 Nguồn đồng hồ

Đồng hồ bộ đếm được cung cấp bởi nguồn đồng hồ bên trong (CK_INT).

Các bit CEN (trong thanh ghi TIMx_CR1) và các bit UG (trong thanh ghi TIMx_EGR) là các bit
điều khiển thực tế và chỉ có thể được thay đổi bằng phần mềm (ngoại trừ UG vẫn được xóa tự
động). Ngay sau khi bit CEN được ghi lên 1, bộ đếm gộp trước sẽ được đồng hồ bên trong CK_INT bấm
giờ.

Hình 178 cho thấy hoạt động của mạch điều khiển và bộ đếm ngược ở chế độ bình thường, không
có bộ đếm gộp trước.

Hình 178. Mạch điều khiển ở chế độ bình thường, xung nhịp bên trong chia cho 1

Đồng hồ nội bộ

CEN=CNT_EN

UG

CNT_INIT

Đồng hồ đếm = CK_CNT = CK_PSC

quầy đăng ký 31 3 2 33 34 35 36 00 01 02 03 04 05 06 07

MS31085V2

RM0008 Phiên bản 21 475/1136

481
Machine Translated by Google

Bộ hẹn giờ cơ bản (TIM6 và TIM7) RM0008

17.3.4 Chế độ gỡ lỗi

Khi bộ vi điều khiển chuyển sang chế độ gỡ lỗi ( lõi Cortex®-M3 - bị dừng), bộ đếm TIMx tiếp tục hoạt
động bình thường hoặc dừng, tùy thuộc vào bit cấu hình DBG_TIMx_STOP trong mô-đun DBG. Để biết thêm chi
tiết, hãy tham khảo Phần 31.16.2: Hỗ trợ gỡ lỗi cho bộ hẹn giờ, cơ quan giám sát, bxCAN và I2C.

17.4 Thanh ghi TIM6 và TIM7


Tham khảo Phần 2.2 để biết danh sách các từ viết tắt được sử dụng trong mô tả thanh ghi.

Các thanh ghi ngoại vi phải được ghi bằng nửa từ (16 bit) hoặc từ (32 bit). Việc truy cập đọc có thể được
thực hiện theo byte (8 bit), nửa từ (16 bit) hoặc từ (32 bit).

17.4.1 Thanh ghi điều khiển TIM6 và TIM7 1 (TIMx_CR1)

Độ lệch địa chỉ: 0x00

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

ARPE OPM URS UDIS CEN


Kín đáo Kín đáo
rw rw rw rw rw

Bit 15:8 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 7 ARPE: Cho phép tải trước tự động tải lại

0: Thanh ghi TIMx_ARR không được đệm.


1: Thanh ghi TIMx_ARR được lưu vào bộ đệm.

Bit 6:4 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 3 OPM: Chế độ một xung

0: Bộ đếm không dừng ở sự kiện cập nhật


1: Bộ đếm dừng đếm ở sự kiện cập nhật tiếp theo (xóa bit CEN).

476/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ cơ bản (TIM6 và TIM7)

Bit 2 URS: Cập nhật nguồn yêu cầu

Bit này được thiết lập và xóa bằng phần mềm để chọn nguồn sự kiện UEV.

0: Bất kỳ sự kiện nào sau đây đều tạo ra ngắt cập nhật hoặc yêu cầu DMA nếu được bật.
Những sự kiện này có thể là:

– Bộ đếm tràn/tràn

– Thiết lập bit UG

– Cập nhật thế hệ thông qua bộ điều khiển chế độ phụ

1: Chỉ tràn/tràn bộ đếm mới tạo ra ngắt cập nhật hoặc yêu cầu DMA nếu được bật.

Bit 1 UDIS: Vô hiệu hóa cập nhật

Bit này được thiết lập và xóa bằng phần mềm để bật/tắt việc tạo sự kiện UEV.

0: Đã bật UEV. Sự kiện Cập nhật (UEV) được tạo bởi một trong các sự kiện sau:

– Bộ đếm tràn/tràn

– Thiết lập bit UG

– Cập nhật thế hệ thông qua bộ điều khiển chế độ phụ

Các thanh ghi đệm sau đó được tải với các giá trị tải trước của chúng.

1: UEV bị vô hiệu hóa. Sự kiện Cập nhật không được tạo, các thanh ghi ẩn giữ nguyên giá trị của chúng (ARR,

PSC). Tuy nhiên, bộ đếm và bộ đếm gộp trước được khởi tạo lại nếu bit UG được đặt hoặc nếu nhận được thiết lập
lại phần cứng từ bộ điều khiển chế độ phụ.

Bit 0 CEN: Cho phép bộ đếm

0: Bộ đếm bị vô hiệu hóa

1: Đã bật bộ đếm

Lưu ý: Chế độ kiểm soát chỉ có thể hoạt động nếu bit CEN đã được thiết lập trước đó bằng phần mềm. Tuy nhiên, chế độ

kích hoạt có thể tự động đặt bit CEN bằng phần cứng.

CEN được xóa tự động ở chế độ một xung khi xảy ra sự kiện cập nhật.

RM0008 Phiên bản 21 477/1136

481
Machine Translated by Google

Bộ hẹn giờ cơ bản (TIM6 và TIM7) RM0008

17.4.2 Thanh ghi điều khiển TIM6 và TIM7 2 (TIMx_CR2)

Độ lệch địa chỉ: 0x04

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

MMS[2:0]
Kín đáo Kín đáo
rw rw rw

Bit 15:7 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 6:4 MMS[2:0]: Lựa chọn chế độ chính

Các bit này được sử dụng để chọn thông tin sẽ được gửi ở chế độ chính tới bộ định thời phụ để đồng bộ hóa

(TRGO). Sự kết hợp như sau:


000: Đặt lại - bit UG từ thanh ghi TIMx_EGR được sử dụng làm đầu ra kích hoạt (TRGO). Nếu thiết lập lại
được tạo ra bởi đầu vào kích hoạt (bộ điều khiển chế độ phụ được định cấu hình ở chế độ đặt lại) thì tín
hiệu trên TRGO sẽ bị trễ so với thiết lập lại thực tế.

001: Kích hoạt - tín hiệu kích hoạt bộ đếm, CNT_EN, được sử dụng làm đầu ra kích hoạt (TRGO). Sẽ rất hữu
ích khi bắt đầu nhiều bộ hẹn giờ cùng lúc hoặc để điều khiển một cửa sổ trong đó bộ hẹn giờ phụ được bật.

Tín hiệu Kích hoạt bộ đếm được tạo bằng logic OR giữa bit điều khiển CEN và đầu vào kích hoạt khi được định
cấu hình ở chế độ kiểm soát.

Khi tín hiệu Kích hoạt bộ đếm được điều khiển bởi đầu vào kích hoạt, sẽ có độ trễ trên TRGO, ngoại trừ nếu
chế độ chính/phụ được chọn (xem mô tả bit MSM trong thanh ghi TIMx_SMCR).

010: Cập nhật - Sự kiện cập nhật được chọn làm đầu ra kích hoạt (TRGO). Ví dụ, bộ đếm thời gian chính
có thể được sử dụng làm bộ đếm gộp trước cho bộ đếm thời gian phụ.

Lưu ý: Đồng hồ của bộ định thời phụ và ADC phải được bật trước khi nhận các sự kiện từ bộ định thời chính và
không được thay đổi nhanh chóng trong khi nhận được kích hoạt từ bộ định thời chính.

Bit 3:0 Dự trữ, phải được giữ ở giá trị đặt lại.

17.4.3 TIM6 và TIM7 DMA/Thanh ghi kích hoạt ngắt (TIMx_DIER)

Độ lệch địa chỉ: 0x0C

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

UDE UIE
Kín đáo Kín đáo
rw rw

Bit 15:9 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 8 UDE: Cho phép yêu cầu cập nhật DMA

0: Yêu cầu cập nhật DMA bị vô hiệu hóa.


1: Đã bật yêu cầu cập nhật DMA.

Bit 7:1 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 0 UIE: Cho phép ngắt cập nhật

0: Ngắt cập nhật bị vô hiệu hóa.


1: Cho phép ngắt cập nhật.

478/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ cơ bản (TIM6 và TIM7)

17.4.4 Thanh ghi trạng thái TIM6 và TIM7 (TIMx_SR)


Độ lệch địa chỉ: 0x10

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

UIF
Kín đáo
rc_w0

Bit 15:1 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 0 UIF: Cờ ngắt cập nhật

Bit này được thiết lập bởi phần cứng trong một sự kiện cập nhật. Nó được xóa bằng phần mềm.

0: Không có cập nhật nào xảy ra.

1: Cập nhật ngắt đang chờ xử lý. Bit này được thiết lập bởi phần cứng khi các thanh ghi được cập nhật:

– Khi tràn hoặc tràn và nếu UDIS = 0 trong thanh ghi TIMx_CR1.

– Khi CNT được khởi tạo lại bằng phần mềm sử dụng bit UG trong thanh ghi TIMx_EGR, nếu URS = 0 và UDIS = 0 trong

thanh ghi TIMx_CR1.

17.4.5 Thanh ghi tạo sự kiện TIM6 và TIM7 (TIMx_EGR)


Độ lệch địa chỉ: 0x14

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

UG
Kín đáo
w

Bit 15:1 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 0 UG: Tạo bản cập nhật

Bit này có thể được thiết lập bằng phần mềm, nó sẽ tự động bị xóa bằng phần cứng.
0: Không có hành động.

1: Khởi tạo lại bộ đếm thời gian và tạo bản cập nhật của các thanh ghi. Lưu ý rằng bộ đếm bộ đếm gộp trước cũng

bị xóa (nhưng tỷ lệ của bộ đếm gộp trước không bị ảnh hưởng).

17.4.6 Bộ đếm TIM6 và TIM7 (TIMx_CNT)


Độ lệch địa chỉ: 0x24

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CNT[15:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15:0 CNT[15:0]: Giá trị bộ đếm

RM0008 Phiên bản 21 479/1136

481
Machine Translated by Google

Bộ hẹn giờ cơ bản (TIM6 và TIM7) RM0008

Bộ đếm gộp trước 17.4.7 TIM6 và TIM7 (TIMx_PSC)


Độ lệch địa chỉ: 0x28

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

PSC[15:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15:0 PSC[15:0]: Giá trị bộ đếm trước

Tần số xung nhịp của bộ đếm CK_CNT bằng fCK_PSC / (PSC[15:0] + 1).
PSC chứa giá trị được tải vào thanh ghi bộ đếm gộp hoạt động tại mỗi sự kiện cập nhật (bao gồm cả khi bộ
đếm bị xóa thông qua bit UG của thanh ghi TIMx_EGR hoặc thông qua bộ điều khiển kích hoạt khi được
định cấu hình ở “chế độ đặt lại”).

17.4.8 Thanh ghi tự động tải lại TIM6 và TIM7 (TIMx_ARR)


Độ lệch địa chỉ: 0x2C

Đặt lại giá trị: 0xFFFF

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

ARR[15:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15:0 ARR[15:0]: Giá trị tự động tải lại

ARR là giá trị được tải vào thanh ghi tự động tải lại thực tế.

Tham khảo Phần 17.3.1: Đơn vị cơ sở thời gian để biết thêm chi tiết về hành vi và cập nhật ARR.
Bộ đếm bị chặn trong khi giá trị tự động tải lại là null.

480/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ hẹn giờ cơ bản (TIM6 và TIM7)

17.4.9 Bản đồ đăng ký TIM6 và TIM7

Các thanh ghi TIMx được ánh xạ dưới dạng các thanh ghi có thể định địa chỉ 16 bit như được mô tả trong bảng bên dưới.

Bảng 94. TIM6 và TIM7 đăng ký bản đồ và giá trị đặt lại

Đăng ký bù đắp

1
5
ố8
s

7
6

0
3
9

2
4
TIMx_CR1

SRU

NEC
0x00 Kín đáo

MPO

SIDU
EPRA
0 0000

íđ
K
Đặt lại giá trị


o
TIMx_CR2 MMS[2:0]
0x04 Kín đáo

000

íđ
K
Đặt lại giá trị


o
0x08 Kín đáo

TIMx_DIER

EDU
0x0C Kín đáo

0 0

íđ
K
Đặt lại giá trị


o
TIMx_SR
0x10 Kín đáo

Đặt lại giá trị 0

TIMx_EGR
0x14 Kín đáo

Đặt lại giá trị 0

0x18 Kín đáo

0x1C Kín đáo

0x20 Kín đáo

TIMx_CNT CNT[15:0]
0x24 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

TIMx_PSC PSC[15:0]
0x28 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

TIMx_ARR ARR[15:0]
0x2C Kín đáo

Đặt lại giá trị 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Tham khảo Phần 3.3: Bản đồ bộ nhớ cho các địa chỉ biên của thanh ghi.

RM0008 Phiên bản 21 481/1136

481
Machine Translated by Google

Đồng hồ thời gian thực (RTC) RM0008

18 Đồng hồ thời gian thực (RTC)

Các thiết bị mật độ thấp là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

Các thiết bị có mật độ trung bình là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 64 đến 128 Kbyte.

Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ
nhớ Flash nằm trong khoảng từ 256 đến 512 Kbyte.

Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ


bộ nhớ Flash nằm trong khoảng từ 768 Kbyte đến 1 Mbyte.

Các thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

Phần này áp dụng cho toàn bộ họ STM32F10xxx, trừ khi có quy định khác.

18.1 Giới thiệu RTC

Đồng hồ thời gian thực là một bộ đếm thời gian độc lập. RTC cung cấp một bộ bộ đếm chạy liên
tục có thể được sử dụng với phần mềm phù hợp để cung cấp chức năng lịch-đồng hồ.
Các giá trị bộ đếm có thể được ghi để đặt ngày/giờ hiện tại của hệ thống.

Cấu hình lõi và đồng hồ RTC (thanh ghi RCC_BDCR) nằm trong miền Sao lưu, có nghĩa là cài
đặt RTC và thời gian được giữ nguyên sau khi đặt lại hoặc đánh thức từ chế độ Chờ.

Sau khi đặt lại, quyền truy cập vào các thanh ghi Sao lưu và RTC bị vô hiệu hóa và miền
Sao lưu (BKP) được bảo vệ khỏi khả năng truy cập ghi ký sinh. Để cho phép truy cập vào các
thanh ghi Sao lưu và RTC, hãy tiến hành như sau:

• kích hoạt đồng hồ giao diện nguồn và dự phòng bằng cách thiết lập các bit PWREN và BKPEN
trong sổ đăng ký RCC_APB1ENR

• đặt bit DBP thành thanh ghi Điều khiển nguồn (PWR_CR) để cho phép truy cập vào các thanh
ghi dự phòng và RTC.

482/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Đồng hồ thời gian thực (RTC)

Các tính năng chính của 18.2 RTC

• Bộ đếm gộp có thể lập trình: hệ số chia lên tới 220


• Bộ đếm lập trình 32 bit để đo dài hạn

• Hai đồng hồ riêng biệt: PCLK1 cho giao diện APB1 và đồng hồ RTC (phải chậm hơn ít nhất bốn lần
so với đồng hồ PCLK1)

• Nguồn đồng hồ RTC có thể là một trong những nguồn sau:

– Đồng hồ HSE chia cho 128


– Đồng hồ dao động LSE

– Đồng hồ dao động LSI (tham khảo Phần 7.2.8: Đồng hồ RTC để biết chi tiết)

• Hai loại thiết lập lại riêng biệt:

– Giao diện APB1 được thiết lập lại bằng thiết lập lại hệ

thống – Lõi RTC (Bộ đếm gộp trước, Cảnh báo, Bộ đếm và Bộ chia) chỉ được thiết lập lại bằng Sao lưu
đặt lại tên miền (xem Phần 7.1.3: Đặt lại tên miền dự phòng).

• Ba đường ngắt có thể che được chuyên dụng:

– Ngắt cảnh báo, để tạo ra ngắt cảnh báo có thể lập trình bằng phần mềm.

– Ngắt giây, để tạo tín hiệu ngắt định kỳ với độ dài khoảng thời gian có thể lập trình (tối
đa 1 giây).

– Ngắt tràn, để phát hiện khi bộ đếm khả trình bên trong chuyển sang
số không.

RM0008 Phiên bản 21 483/1136

493
Machine Translated by Google

Đồng hồ thời gian thực (RTC) RM0008

18.3 Mô tả chức năng RTC

18.3.1 Tổng quan

RTC bao gồm hai đơn vị chính (xem Hình 179). Cái đầu tiên (Giao diện APB1) được sử dụng để
giao tiếp với bus APB1. Thiết bị này cũng chứa một bộ thanh ghi 16 bit có thể truy cập được
từ bus APB1 ở chế độ đọc hoặc ghi (để biết thêm thông tin, hãy tham khảo Phần 18.4: Thanh
ghi RTC). Giao diện APB1 được xung nhịp bởi đồng hồ bus APB1 để giao tiếp với bus APB1.

Bộ phận còn lại (RTC Core) bao gồm một chuỗi các bộ đếm có thể lập trình được tạo thành từ
hai khối chính. Khối đầu tiên là khối bộ đếm gộp RTC, khối này tạo ra TR_CLK cơ sở thời
gian RTC có thể được lập trình để có khoảng thời gian lên tới 1 giây. Nó bao gồm bộ chia
lập trình 20 bit (RTC Prescaler). Mỗi khoảng thời gian TR_CLK, RTC sẽ tạo ra một ngắt
(Ngắt thứ hai) nếu nó được bật trong thanh ghi RTC_CR. Khối thứ hai là bộ đếm lập trình 32
bit có thể được khởi tạo theo thời gian hệ thống hiện tại. Thời gian hệ thống được tăng lên
ở tốc độ TR_CLK và được so sánh với ngày lập trình (được lưu trong thanh ghi RTC_ALR) để tạo
ra ngắt cảnh báo, nếu được bật trong thanh ghi điều khiển RTC_CR.

Hình 179. Sơ đồ khối đơn giản hóa RTC

Xe buýt APB1

PCLK1

Giao diện APB1


không được cấp nguồn ở chế độ chờ

RTCCLK Tên miền dự phòng

RTC_CR
RTC_PRL
RTC_Giây
SECF
Tải lại Lập trình 32-bit
GIÂY
quầy tính tiền
TR_CLK RTC_Overflow
Cạnh tăng RTC_CNT OWF

Ơi
RTC_DIV RTC_Báo động
= ALRF
Bộ đếm trước RTC
ALRIE

RTC_ALR không được cấp nguồn ở chế độ chờ

cấp nguồn ở chế độ chờ

gián đoạn NVIC

bộ điều khiển
cấp nguồn ở chế độ chờ

không được cấp nguồn ở chế độ chờ

RTC_Báo động lối ra

Ghim WKUP
WKP_STDBY Chế độ chờ

cấp nguồn ở chế độ chờ

ai14969b

484/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Đồng hồ thời gian thực (RTC)

18.3.2 Đặt lại các thanh ghi RTC

Tất cả các thanh ghi hệ thống đều được đặt lại không đồng bộ bằng Đặt lại hệ thống hoặc Đặt lại nguồn,
ngoại trừ RTC_PRL, RTC_ALR, RTC_CNT và RTC_DIV.

Các thanh ghi RTC_PRL, RTC_ALR, RTC_CNT và RTC_DIV chỉ được đặt lại bằng cách đặt lại Miền dự phòng. Tham
khảo Mục 7.1.3.

18.3.3 Đọc thanh ghi RTC

Lõi RTC hoàn toàn độc lập với giao diện RTC APB1.

Phần mềm truy cập các giá trị bộ đếm gộp, bộ đếm và cảnh báo RTC thông qua giao diện APB1 nhưng
các thanh ghi có thể đọc được liên quan được cập nhật nội bộ ở mỗi cạnh tăng của đồng hồ RTC được đồng bộ
hóa lại bởi đồng hồ RTC APB1. Điều này cũng đúng với cờ RTC.

Điều này có nghĩa là lần đọc đầu tiên vào các thanh ghi RTC APB1 có thể bị hỏng (thường đọc là 0) nếu
giao diện APB1 trước đó đã bị tắt và quá trình đọc xảy ra ngay sau khi giao diện APB1 được bật nhưng
trước lần cập nhật nội bộ đầu tiên của các thanh ghi. Điều này có thể xảy ra nếu:

• Đã xảy ra hiện tượng thiết lập lại hệ thống hoặc thiết lập lại nguồn

• MCU vừa thức dậy từ chế độ Chờ (xem Phần 5.3: Chế độ năng lượng thấp)

• MCU vừa thức dậy từ chế độ Dừng (xem Phần 5.3: Chế độ năng lượng thấp)

Trong tất cả các trường hợp trên, lõi RTC vẫn tiếp tục chạy trong khi giao diện APB1 bị tắt (đặt lại,
không bấm giờ hoặc không cấp nguồn).

Do đó, khi đọc các thanh ghi RTC, sau khi tắt giao diện RTC APB1, trước tiên phần mềm phải đợi
bit RSF (Cờ đồng bộ đăng ký) trong thanh ghi RTC_CRL được thiết lập bằng phần cứng.

Lưu ý rằng giao diện RTC APB1 không bị ảnh hưởng bởi chế độ năng lượng thấp WFI và WFE.

18.3.4 Cấu hình thanh ghi RTC

Để ghi vào các thanh ghi RTC_PRL, RTC_CNT, RTC_ALR, thiết bị ngoại vi phải vào chế độ Cấu hình.
Điều này được thực hiện bằng cách đặt bit CNF trong thanh ghi RTC_CRL.

Ngoài ra, việc ghi vào bất kỳ thanh ghi RTC nào chỉ được kích hoạt nếu thao tác ghi trước đó kết
thúc. Để cho phép phần mềm phát hiện tình huống này, bit trạng thái RTOFF được cung cấp trong thanh ghi
RTC_CR để cho biết rằng một bản cập nhật của các thanh ghi đang được tiến hành. Một giá trị mới chỉ có
thể được ghi vào thanh ghi RTC khi giá trị bit trạng thái RTOFF là '1'.

Quy trình cấu hình

1. Thăm dò RTOFF, đợi cho đến khi giá trị của nó bằng '1'

2. Đặt bit CNF để vào chế độ cấu hình

3. Ghi vào một hoặc nhiều thanh ghi RTC

4. Xóa bit CNF để thoát khỏi chế độ cấu hình

5. Thăm dò RTOFF, đợi cho đến khi giá trị của nó tiến tới '1' để kiểm tra việc kết thúc thao tác ghi.

Thao tác ghi chỉ thực hiện khi bit CNF bị xóa; phải mất ít nhất ba chu kỳ RTCCLK để hoàn thành.

RM0008 Phiên bản 21 485/1136

493
Machine Translated by Google

Đồng hồ thời gian thực (RTC) RM0008

18.3.5 Xác nhận cờ RTC


Cờ thứ hai RTC (SECF) được xác nhận trên mỗi chu kỳ xung nhịp RTC Core trước khi cập nhật Bộ đếm
RTC.

Cờ tràn RTC (OWF) được xác nhận trên chu kỳ xung nhịp RTC Core cuối cùng trước khi bộ đếm đạt
0x0000.

Cờ báo động RTC_Alarm và RTC (ALRF) (xem Hình 180) được xác nhận trên chu kỳ xung nhịp RTC Core
cuối cùng trước khi bộ đếm đạt đến giá trị Cảnh báo RTC được lưu trong thanh ghi Cảnh báo
tăng lên một (RTC_ALR + 1). Hoạt động ghi trong Cảnh báo RTC và cờ RTC Thứ hai phải được đồng bộ
hóa bằng cách sử dụng một trong các trình tự sau:

• Sử dụng ngắt Cảnh báo RTC và bên trong quy trình ngắt RTC, Cảnh báo RTC
và/hoặc các thanh ghi bộ đếm RTC được cập nhật.

• Đợi bit SECF được đặt trong thanh ghi Điều khiển RTC. Cập nhật Cảnh báo RTC và/hoặc thanh ghi
Bộ đếm RTC.

Hình 180. Ví dụ về dạng sóng thứ hai và cảnh báo RTC với PR=0003, ALARM=00004

RTCCLK

RTC_PR 0002 0001 0000 0003 0002 0001 0000 0003 0002 0001 0000 0003 0002 0001 0000 0003 0002 0001 0000 0003 0002 0001 0000 0003

RTC_Giây

RTC_CNT 0000 0001 0002 0003 0004 0005

RTC_ALARM
1 RTCCLK

ALRF có thể xóa bằng phần mềm


(không được cấp

nguồn ở chế độ chờ)

Hình 181. Ví dụ về dạng sóng tràn RTC với PR=0003

RTCCLK

RTC_PR 0002 0001 0000 0003 0002 0001 0000 0003 0002 0001 0000 0003 0002 0001 0000 0003 0002 0001 0000 0003 0002 0001 0000 0003

RTC_Giây

RTC_CNT FFFFFFFB FFFFFFFC FFFFFFFD FFFFFFFE FFFFFFFF 0000

RTC_Overflow
1 RTCCLK

OWF
có thể xóa bằng phần mềm
(không được cấp

nguồn ở chế độ chờ)

486/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Đồng hồ thời gian thực (RTC)

18.4 thanh ghi RTC


Tham khảo Phần 2.2 trên trang 45 để biết danh sách các chữ viết tắt được sử dụng trong mô tả đăng ký.

Các thanh ghi ngoại vi có thể được truy cập bằng nửa từ (16 bit) hoặc từ (32 bit).

18.4.1 Thanh ghi điều khiển RTC ở mức cao (RTC_CRH)

Độ lệch địa chỉ: 0x00


Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

ƠI ALRIE SECIE
Kín đáo
rw rw rw

Bit 15:3 Dự trữ, bị phần cứng ép về 0.

Bit 2 OWIE: Cho phép ngắt tràn

0: Ngắt tràn bị che dấu.


1: Ngắt tràn được kích hoạt.

Bit 1 ALRIE: Cho phép ngắt cảnh báo

0: Ngắt cảnh báo bị che đi.


1: Ngắt cảnh báo được kích hoạt.

Bit 0 SECIE: Cho phép ngắt thứ hai

0: Ngắt thứ hai bị che.


1: Ngắt thứ hai được kích hoạt.

Các bit này được sử dụng để che dấu các yêu cầu ngắt. Lưu ý rằng khi thiết lập lại, tất cả các ngắt đều bị
vô hiệu hóa, do đó có thể ghi vào các thanh ghi RTC để đảm bảo rằng không có yêu cầu ngắt nào đang chờ xử lý
sau khi khởi tạo. Không thể ghi vào thanh ghi RTC_CRH khi thiết bị ngoại vi đang hoàn thành thao tác ghi
trước đó (được gắn cờ RTOFF=0, xem Phần 18.3.4).

Các chức năng RTC được điều khiển bởi thanh ghi điều khiển này. Một số bit phải được ghi bằng quy trình cấu
hình cụ thể (xem Quy trình cấu hình).

RM0008 Phiên bản 21 487/1136

493
Machine Translated by Google

Đồng hồ thời gian thực (RTC) RM0008

18.4.2 Thanh ghi điều khiển RTC ở mức thấp (RTC_CRL)

Độ lệch địa chỉ: 0x04


Đặt lại giá trị: 0x0020

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

RTOFF CNF RSF OWF ALRF SECF


Kín đáo
r rw rc_w0 rc_w0 rc_w0 rc_w0

Bit 15:6 Dự trữ, bị phần cứng ép về 0.

Bit 5 RTOFF: TẮT hoạt động RTC

Với bit này, RTC báo cáo trạng thái của thao tác ghi cuối cùng được thực hiện trên các thanh ghi của nó, cho
biết liệu nó đã được hoàn thành hay chưa. Nếu giá trị của nó là '0' thì không thể ghi vào bất kỳ thanh ghi
RTC nào. Bit này chỉ được đọc.
0: Thao tác ghi cuối cùng trên thanh ghi RTC vẫn đang diễn ra.
1: Thao tác ghi cuối cùng trên thanh ghi RTC đã kết thúc.

Bit 4 CNF: Cờ cấu hình

Bit này phải được thiết lập bằng phần mềm để vào chế độ cấu hình nhằm cho phép ghi các giá trị mới vào các
thanh ghi RTC_CNT, RTC_ALR hoặc RTC_PRL. Hoạt động ghi chỉ được thực hiện khi bit CNF được thiết lập lại
bằng phần mềm sau khi đã được thiết lập.
0: Thoát chế độ cấu hình (bắt đầu cập nhật các thanh ghi RTC).
1: Vào chế độ cấu hình.

Bit 3 RSF: Cờ đồng bộ thanh ghi

Bit này được thiết lập bằng phần cứng mỗi khi các thanh ghi RTC_CNT và RTC_DIV được cập nhật và xóa bằng
phần mềm. Trước bất kỳ thao tác đọc nào sau khi đặt lại APB1 hoặc dừng đồng hồ APB1, bit này phải được xóa
bằng phần mềm và ứng dụng người dùng phải đợi cho đến khi nó được thiết lập để đảm bảo rằng các thanh ghi
RTC_CNT, RTC_ALR hoặc RTC_PRL được đồng bộ hóa.
0: Các thanh ghi chưa được đồng bộ.
1: Các thanh ghi được đồng bộ hóa.

Bit 2 OWF: Cờ tràn

Bit này được thiết lập bằng phần cứng khi bộ đếm lập trình 32 bit tràn. Một ngắt được tạo ra nếu OWIE=1
trong thanh ghi RTC_CRH. Nó chỉ có thể được xóa bằng phần mềm. Viết '1' không có tác dụng.

0: Không phát hiện tràn

1: Xảy ra tràn bộ đếm lập trình 32-bit.

Bit 1 ALRF: Cờ báo động

Bit này được thiết lập bằng phần cứng khi bộ đếm lập trình 32 bit đạt đến ngưỡng được đặt trong thanh ghi
RTC_ALR. Một ngắt được tạo ra nếu ALRIE=1 trong thanh ghi RTC_CRH. Nó chỉ có thể được xóa bằng phần mềm.
Viết '1' không có tác dụng.
0: Không phát hiện được cảnh báo

1: Đã phát hiện cảnh báo

Bit 0 SECF: Cờ thứ hai

Bit này được thiết lập bằng phần cứng khi bộ đếm gộp trước có thể lập trình 32 bit bị tràn, do đó
làm tăng bộ đếm RTC. Do đó, cờ này cung cấp tín hiệu định kỳ có chu kỳ tương ứng với độ phân giải
được lập trình cho bộ đếm RTC (thường là một giây). Một ngắt được tạo ra nếu SECIE=1 trong thanh ghi
RTC_CRH. Nó chỉ có thể được xóa bằng phần mềm. Viết '1' không có tác dụng.

0: Điều kiện cờ thứ hai không được đáp ứng.

1: Điều kiện cờ thứ hai được đáp ứng.

488/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Đồng hồ thời gian thực (RTC)

Các chức năng của RTC được điều khiển bởi thanh ghi điều khiển này. Không thể ghi vào thanh ghi RTC_CR
trong khi thiết bị ngoại vi đang hoàn thành thao tác ghi trước đó (được gắn cờ RTOFF=0, xem Phần 18.3.4:
Định cấu hình thanh ghi RTC).

Ghi chú: Bất kỳ cờ nào vẫn đang chờ xử lý cho đến khi bit yêu cầu RTC_CR thích hợp được đặt lại bằng phần mềm,
cho biết rằng yêu cầu ngắt đã được chấp nhận.

Khi thiết lập lại, các ngắt bị vô hiệu hóa, không có yêu cầu ngắt nào đang chờ xử lý và có thể ghi vào các
thanh ghi RTC.

Các bit OWF, ALRF, SECF và RSF không được cập nhật khi đồng hồ APB1 không chạy.

Các bit OWF, ALRF, SECF và RSF chỉ có thể được đặt bằng phần cứng và chỉ được xóa bằng phần mềm.

Nếu ALRF = 1 và ALRIE = 1, ngắt toàn cục RTC được bật. Nếu EXTI Line 17 cũng được bật thông qua Bộ điều
khiển EXTI, thì cả ngắt toàn cục RTC và ngắt Cảnh báo RTC đều được bật.

Nếu ALRF = 1, ngắt Cảnh báo RTC được bật nếu Dòng EXTI 17 được bật thông qua Bộ điều khiển EXTI ở chế độ
ngắt. Khi Dòng EXTI 17 được bật ở chế độ sự kiện, một xung sẽ được tạo trên dòng này (không tạo ra ngắt
Cảnh báo RTC).

18.4.3 Thanh ghi tải bộ chia tỷ lệ trước RTC (RTC_PRLH / RTC_PRLL)

Các thanh ghi tải của bộ đếm gộp trước giữ giá trị đếm khoảng thời gian của bộ đếm gộp trước RTC. Chúng được
bảo vệ chống ghi bởi bit RTOFF trong thanh ghi RTC_CR và thao tác ghi được phép nếu giá trị RTOFF là '1'.

Thanh ghi tải của bộ chia tỷ lệ trước RTC ở mức cao (RTC_PRLH)

Độ lệch địa chỉ: 0x08

Chỉ ghi (xem Phần 18.3.4: Định cấu hình thanh ghi RTC)
Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

PRL[19:16]
Kín đáo
wwww

Bit 15:4 Dự trữ, bị phần cứng ép về 0.

Bit 3:0 PRL[19:16]: Giá trị tải lại bộ đếm trước RTC cao

Các bit này được sử dụng để xác định tần số xung nhịp của bộ đếm theo công thức sau:

fTR_CLK = fRTCCLK/(PRL[19:0]+1)

RM0008 Phiên bản 21 489/1136

493
Machine Translated by Google

Đồng hồ thời gian thực (RTC) RM0008

Thanh ghi tải bộ đếm gộp trước RTC ở mức thấp (RTC_PRLL)

Độ lệch địa chỉ: 0x0C

Chỉ ghi (xem Phần 18.3.4: Định cấu hình thanh ghi RTC)
Đặt lại giá trị: 0x8000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

PRL[15:0]
wwwwwwww w wwwww

Bit 15:0 PRL[15:0]: Giá trị tải lại bộ đếm gộp trước RTC thấp

Các bit này được sử dụng để xác định tần số xung nhịp của bộ đếm theo công thức sau:

fTR_CLK = fRTCCLK/(PRL[19:0]+1)

Thận trọng: Không nên sử dụng giá trị 0. Các ngắt và cờ RTC không thể được xác nhận chính xác.

Ghi chú: Nếu tần số xung nhịp đầu vào (fRTCCLK) là 32,768 kHz, hãy ghi 7FFFh vào thanh ghi này để có chu kỳ tín
hiệu là 1 giây.

18.4.4 Thanh ghi bộ chia tỷ lệ trước RTC (RTC_DIVH / RTC_DIVL)

Trong mỗi khoảng thời gian TR_CLK, bộ đếm bên trong bộ đếm gộp RTC được tải lại với giá trị được lưu trong
thanh ghi RTC_PRL. Để có được phép đo thời gian chính xác, có thể đọc giá trị hiện tại của bộ đếm tỷ lệ
trước, được lưu trong thanh ghi RTC_DIV mà không cần dừng nó. Thanh ghi này ở chế độ chỉ đọc và được
phần cứng tải lại sau bất kỳ thay đổi nào trong thanh ghi RTC_PRL hoặc RTC_CNT.

Thanh ghi bộ chia tỷ lệ trước RTC ở mức cao (RTC_DIVH)

Độ lệch địa chỉ: 0x10


Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

RTC_DIV[19:16]
Kín đáo
rrrr

Bit 15:4 Dành riêng

Bit 3:0 RTC_DIV[19:16]: Bộ chia đồng hồ RTC cao

Thanh ghi bộ chia tỷ lệ trước RTC ở mức thấp (RTC_DIVL)

Độ lệch địa chỉ: 0x14


Đặt lại giá trị: 0x8000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

RTC_DIV[15:0]
rrrrrrrrrr r rrrrr

Bit 15:0 RTC_DIV[15:0]: Bộ chia đồng hồ RTC ở mức thấp

490/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Đồng hồ thời gian thực (RTC)

18.4.5 Thanh ghi bộ đếm RTC (RTC_CNTH / RTC_CNTL)

Lõi RTC có một bộ đếm lập trình 32 bit, được truy cập thông qua hai thanh ghi 16 bit; tốc độ đếm dựa trên
tham chiếu thời gian TR_CLK, được tạo bởi bộ đếm gộp trước.
Các thanh ghi RTC_CNT giữ giá trị đếm của bộ đếm này. Chúng được bảo vệ chống ghi bằng bit RTOFF trong thanh
ghi RTC_CR và thao tác ghi được phép nếu giá trị RTOFF là '1'. Thao tác ghi trên các thanh ghi trên (RTC_CNTH)
hoặc dưới (RTC_CNTL) tải trực tiếp bộ đếm có thể lập trình tương ứng và tải lại Bộ đếm gộp RTC. Khi đọc, giá
trị hiện tại trong bộ đếm (ngày hệ thống) sẽ được trả về.

Thanh ghi bộ đếm RTC ở mức cao (RTC_CNTH)

Độ lệch địa chỉ: 0x18


Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

RTC_CNT[31:16]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15:0 RTC_CNT[31:16]: Bộ đếm RTC cao

Đọc thanh ghi RTC_CNTH, giá trị hiện tại của phần cao của thanh ghi Bộ đếm RTC được trả
về. Để ghi vào thanh ghi này cần phải vào chế độ cấu hình (xem Phần 18.3.4: Cấu hình thanh
ghi RTC).

Thanh ghi bộ đếm RTC ở mức thấp (RTC_CNTL)

Độ lệch địa chỉ: 0x1C


Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

RTC_CNT[15:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15:0 RTC_CNT[15:0]: Bộ đếm RTC ở mức thấp

Đọc thanh ghi RTC_CNTL, giá trị hiện tại của phần dưới của thanh ghi Bộ đếm RTC được trả
về. Để ghi vào thanh ghi này cần phải vào chế độ cấu hình (xem Phần 18.3.4: Cấu hình thanh
ghi RTC).

RM0008 Phiên bản 21 491/1136

493
Machine Translated by Google

Đồng hồ thời gian thực (RTC) RM0008

18.4.6 Thanh ghi cảnh báo RTC ở mức cao (RTC_ALRH / RTC_ALRL)

Khi bộ đếm có thể lập trình đạt đến giá trị 32 bit được lưu trong thanh ghi RTC_ALR, một cảnh báo sẽ được
kích hoạt và yêu cầu ngắt RTC_alarmIT được tạo ra. Thanh ghi này được bảo vệ ghi bởi bit RTOFF trong thanh
ghi RTC_CR và thao tác ghi được phép nếu giá trị RTOFF là '1'.

Thanh ghi cảnh báo RTC ở mức cao (RTC_ALRH)

Độ lệch địa chỉ: 0x20

Chỉ ghi (xem Phần 18.3.4: Định cấu hình thanh ghi RTC)
Đặt lại giá trị: 0xFFFF

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

RTC_ALR[31:16]
wwwwwwww w wwwww

Bit 15:0 RTC_ALR[31:16]: Báo động RTC cao

Phần cao của thời gian báo thức được ghi bằng phần mềm trong thanh ghi này. Để ghi vào thanh ghi này cần
phải vào chế độ cấu hình (xem Phần 18.3.4: Cấu hình thanh ghi RTC).

Thanh ghi cảnh báo RTC ở mức thấp (RTC_ALRL)

Độ lệch địa chỉ: 0x24

Chỉ ghi (xem Phần 18.3.4: Định cấu hình thanh ghi RTC)
Đặt lại giá trị: 0xFFFF

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

RTC_ALR[15:0]
wwwwwwww w wwwww

Bit 15:0 RTC_ALR[15:0]: Báo động RTC ở mức thấp

Phần thấp của thời gian báo thức được ghi bằng phần mềm trong thanh ghi này. Để ghi vào thanh ghi này cần
phải vào chế độ cấu hình (xem Phần 18.3.4: Cấu hình thanh ghi RTC).

492/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Đồng hồ thời gian thực (RTC)

18.4.7 Bản đồ đăng ký RTC

Các thanh ghi RTC được ánh xạ dưới dạng các thanh ghi có địa chỉ 16 bit như được mô tả trong bảng bên dưới:

Bảng 95. Bản đồ đăng ký RTC và giá trị đặt lại

1
5
ố8
s

7
6

0
3
9

2
4
Đăng ký bù đắp

11
91
81
71
61
51
41
31
21

01
13
03
92
82
72

32
22
12
02
RTC_CRH
0x00 Kín đáo


EIRLA
YÂIG
Đặt lại giá trị 000

RTC_CRL

FWO
0x04 Kín đáo

FRLA
FCES
TẮT
Đặt lại giá trị 100000

RTC_PRLH PRL[19:16]
0x08 Kín đáo

Đặt lại giá trị 0000

RTC_PRLL PRL[15:0]
0x0C Kín đáo

Đặt lại giá trị 1000000000000000

RTC_DIVH DIV[31:16]
0x10 Kín đáo

Đặt lại giá trị 0000000000000000

RTC_DIVL DIV[15:0]
0x14 Kín đáo

Đặt lại giá trị 1000000000000000

0x18 RTC_CNTH Kín đáo


CNT[13:16]

Đặt lại giá trị 0000000000000000

0x1C
RTC_CNTL Kín đáo
CNT[15:0]

Đặt lại giá trị 0000000000000000

RTC_ALRH ALR[31:16]
0x20 Kín đáo

Đặt lại giá trị 1111111111111111

RTC_ALRL ALR[15:0]
0x24 Kín đáo

Đặt lại giá trị 1111111111111111

Tham khảo Bảng 3 trên trang 50 để biết địa chỉ biên của thanh ghi.

RM0008 Phiên bản 21 493/1136


493
Machine Translated by Google

Cơ quan giám sát độc lập (IWDG) RM0008

19 Cơ quan giám sát độc lập (IWDG)

Các thiết bị mật độ thấp là bộ vi điều khiển STM32F101xx, STM32F102xx và STM32F103xx


trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

Các thiết bị có mật độ trung bình là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 64 đến 128 Kbyte.

Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ nhớ Flash
nằm trong khoảng từ 256 đến 512 Kbyte.

Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ nhớ
Flash nằm trong khoảng từ 768 Kbyte đến 1 Mbyte.

Các thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

Phần này áp dụng cho toàn bộ họ STM32F10xxx, trừ khi có quy định khác.

19.1 Giới thiệu IWDG

Các thiết bị này có hai thiết bị ngoại vi giám sát nhúng mang lại sự kết hợp giữa mức độ an toàn
cao, độ chính xác về thời gian và tính linh hoạt khi sử dụng. Cả hai thiết bị ngoại vi cơ quan giám
sát (Độc lập và Cửa sổ) đều dùng để phát hiện và giải quyết các trục trặc do lỗi phần mềm và kích
hoạt thiết lập lại hệ thống hoặc ngắt (chỉ cơ quan giám sát cửa sổ) khi bộ đếm đạt đến giá trị
thời gian chờ nhất định.

Cơ quan giám sát độc lập (IWDG) được điều khiển bởi đồng hồ tốc độ thấp chuyên dụng (LSI) của riêng
nó và do đó vẫn hoạt động ngay cả khi đồng hồ chính bị hỏng. Đồng hồ cơ quan giám sát cửa sổ (WWDG)
được định tỷ lệ trước từ đồng hồ APB1 và có cửa sổ thời gian có thể định cấu hình có thể
được lập trình để phát hiện hành vi ứng dụng sớm hoặc muộn bất thường.

IWDG phù hợp nhất với các ứng dụng yêu cầu cơ quan giám sát chạy như một quy trình hoàn toàn
độc lập bên ngoài ứng dụng chính nhưng có giới hạn về độ chính xác về thời gian thấp hơn.
WWDG phù hợp nhất với các ứng dụng yêu cầu cơ quan giám sát phản ứng trong khoảng thời gian chính
xác. Để biết thêm thông tin về cơ quan giám sát cửa sổ, hãy tham khảo Phần 20 trên trang 500.

19.2 Các tính năng chính của IWDG

• Bộ đếm ngược chạy tự do

• xung nhịp từ bộ dao động RC độc lập (có thể hoạt động ở chế độ Chờ và Dừng)

• Đặt lại (nếu cơ quan giám sát được kích hoạt) khi đạt đến giá trị bộ đếm ngược 0x000

19.3 Mô tả chức năng IWDG


Hình 182 thể hiện các khối chức năng của mô-đun cơ quan giám sát độc lập.

Khi cơ quan giám sát độc lập được khởi động bằng cách ghi giá trị 0xCCCC vào thanh ghi khóa (IWDG_KR),
bộ đếm bắt đầu đếm ngược từ giá trị đặt lại là 0xFFF. Khi đạt đến cuối giá trị đếm (0x000),
tín hiệu đặt lại sẽ được tạo (đặt lại IWDG).

494/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Cơ quan giám sát độc lập (IWDG)

Bất cứ khi nào giá trị khóa 0xAAAA được ghi vào thanh ghi IWDG_KR, giá trị IWDG_RLR sẽ được tải lại trong bộ
đếm và việc thiết lập lại cơ quan giám sát sẽ bị ngăn chặn.

19.3.1 Cơ quan giám sát phần cứng

Nếu tính năng “Cơ quan giám sát phần cứng” được bật thông qua các bit tùy chọn thiết bị, thì cơ quan giám sát
sẽ tự động được bật khi bật nguồn và sẽ tạo ra một thiết lập lại trừ khi thanh ghi Khóa được phần mềm ghi
trước khi bộ đếm đạt đến cuối số đếm.

19.3.2 Đăng ký bảo vệ truy cập

Quyền truy cập ghi vào các thanh ghi IWDG_PR và IWDG_RLR được bảo vệ. Để sửa đổi chúng, trước tiên hãy viết
mã 0x5555 vào thanh ghi IWDG_KR. Quyền truy cập ghi vào thanh ghi này có giá trị khác sẽ phá vỡ chuỗi
và quyền truy cập thanh ghi sẽ được bảo vệ lại. Điều này ngụ ý rằng đó là trường hợp của thao tác tải lại
(viết 0xAAAA).

Một thanh ghi trạng thái có sẵn để cho biết rằng một bản cập nhật của bộ đếm gộp trước hoặc giá trị tải lại bộ
đếm ngược đang diễn ra.

19.3.3 Chế độ gỡ lỗi

Khi bộ vi điều khiển chuyển sang chế độ gỡ lỗi ( lõi Cortex®-M3 tạm dừng), bộ đếm IWDG tiếp tục hoạt động bình
thường hoặc dừng, tùy thuộc vào bit cấu hình DBG_IWDG_STOP trong mô-đun DBG. Để biết thêm chi tiết, hãy tham
khảo Phần 31.16.2: Hỗ trợ gỡ lỗi cho bộ hẹn giờ, cơ quan giám sát, bxCAN và I2C.

Hình 182. Sơ đồ khối cơ quan giám sát độc lập

CỐT LÕI

Đăng ký bộ đếm trước Đăng kí trạng thái Tải lại đăng ký Đăng ký khóa
IWDG_PR IWDG_SR IWDG_RLR IWDG_KR

Giá trị tải lại 12 bit


8 bit
LSI

(40 kHz) bộ đếm trước


Bộ đếm ngược 12-bit Đặt lại IWDG

Miền điện áp VDD

MS19944V2

Ghi chú: Chức năng giám sát được triển khai trong miền điện áp VDD , vẫn hoạt động ở chế độ Dừng và Chờ.

Bảng 96. Khoảng thời gian chờ IWDG tối thiểu/tối đa (tính bằng ms) ở 40 kHz (LSI)(1)

Bộ chia tỷ lệ trước PR[2:0] bit Thời gian chờ tối thiểu RL[11:0]= 0x000 Thời gian chờ tối đa RL[11:0]= 0xFFF

/4 0 0,1 409,6

/số 8 1 0,2 819.2

/16 2 0,4 1638,4

/32 3 0,8 3276,8

/64 4 1.6 6553.6

RM0008 Phiên bản 21 495/1136

499
Machine Translated by Google

Cơ quan giám sát độc lập (IWDG) RM0008

Bảng 96. Khoảng thời gian chờ IWDG tối thiểu/tối đa (tính bằng ms) ở 40 kHz (LSI)(1) (tiếp theo)

Bộ chia tỷ lệ trước PR[2:0] bit Thời gian chờ tối thiểu RL[11:0]= 0x000 Thời gian chờ tối đa RL[11:0]= 0xFFF

/128 5 3.2 13107.2

/256 6 (hoặc 7) 6,4 26214.4

1. Những khoảng thời gian này được đưa ra cho đồng hồ 40 kHz nhưng tần số RC bên trong của bộ vi điều khiển có thể khác
nhau. Tham khảo bảng đặc tính dao động LSI trong biểu dữ liệu thiết bị để biết các giá trị tối đa và tối thiểu.

LSI có thể được hiệu chỉnh để tính toán thời gian chờ IWDG với độ chính xác chấp nhận được.
Để biết thêm chi tiết, hãy tham khảo Phần 7.2.5: Đồng hồ LSI.

19.4 Đăng ký IWDG


Tham khảo Phần 2.2 trên trang 45 để biết danh sách các chữ viết tắt được sử dụng trong mô tả đăng ký.

Các thanh ghi ngoại vi phải được truy cập bằng nửa từ (16 bit) hoặc từ (32 bit).

19.4.1 Thanh ghi khóa (IWDG_KR)

Độ lệch địa chỉ: 0x00

Giá trị đặt lại: 0x0000 0000 (đặt lại ở chế độ chờ)

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

CHÌA KHÓA[15:0]
Kín đáo
wwwwwwwww wwwwwww

Bit 31:16 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 15:0 KEY[15:0]: Giá trị khóa (chỉ ghi, đọc 0000h)

Các bit này phải được ghi bằng phần mềm đều đặn với giá trị khóa AAAAh, nếu không cơ quan
giám sát sẽ tạo ra một thiết lập lại khi bộ đếm đạt đến 0.
Viết giá trị khóa 5555h để cho phép truy cập vào các thanh ghi IWDG_PR và IWDG_RLR (xem Phần
19.3.2)
Viết giá trị khóa CCCCh sẽ khởi động cơ quan giám sát (trừ khi tùy chọn cơ quan giám sát phần cứng
được chọn)

19.4.2 Thanh ghi bộ chia tỷ lệ trước (IWDG_PR)

Độ lệch địa chỉ: 0x04

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

PR[2:0]
Kín đáo
ồ ồ ồ

496/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Cơ quan giám sát độc lập (IWDG)

Bit 31:3 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 2:0 PR[2:0]: Bộ chia tỷ lệ trước

Các bit này được bảo vệ truy cập ghi, xem Phần 19.3.2. Chúng được viết bằng phần mềm để chọn bộ chia tỷ
lệ trước cung cấp cho đồng hồ bộ đếm. Bit PVU của IWDG_SR phải được đặt lại để có thể thay đổi bộ chia tỷ lệ
trước.
000: chia /4
001: dải phân cách /8

010: dải phân cách /16

011: dải phân cách /32

100: dải phân cách /64

101: dải phân cách /128

110: dải phân cách /256

111: dải phân cách /256

Lưu ý: Việc đọc thanh ghi này trả về giá trị bộ đếm gộp trước từ miền điện áp VDD. Cái này
giá trị có thể không cập nhật/hợp lệ nếu thao tác ghi vào thanh ghi này đang diễn ra. Vì lý do này,
giá trị đọc từ thanh ghi này chỉ hợp lệ khi bit PVU trong thanh ghi IWDG_SR được đặt lại.

19.4.3 Tải lại thanh ghi (IWDG_RLR)


Độ lệch địa chỉ: 0x08

Giá trị đặt lại: 0x0000 0FFF (đặt lại ở chế độ chờ)
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

RL[11:0]
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw

Bit 31:12 Dự trữ, phải được giữ ở giá trị đặt lại.

Bits11:0 RL[11:0]: Giá trị tải lại bộ đếm cơ quan giám sát

Các bit này được bảo vệ truy cập ghi, xem Phần 19.3.2. Chúng được viết bằng phần mềm để xác định giá trị
được tải vào bộ đếm cơ quan giám sát mỗi khi giá trị AAAAh được ghi vào thanh ghi IWDG_KR. Bộ đếm cơ quan
giám sát đếm ngược từ giá trị này. Khoảng thời gian chờ là một hàm của giá trị này và bộ đếm trước đồng
hồ. Tham khảo Bảng 96.

Bit RVU trong thanh ghi IWDG_SR phải được đặt lại để có thể thay đổi giá trị tải lại.

Lưu ý: Việc đọc thanh ghi này trả về giá trị tải lại từ miền điện áp VDD. Giá trị này có thể không cập nhật/
hợp lệ nếu thao tác ghi vào thanh ghi này đang diễn ra trên thanh ghi này. Vì lý do này, giá
trị đọc từ thanh ghi này chỉ hợp lệ khi bit RVU trong thanh ghi IWDG_SR được đặt lại.

19.4.4 Thanh ghi trạng thái (IWDG_SR)


Độ lệch địa chỉ: 0x0C

Giá trị đặt lại: 0x0000 0000 (không được đặt lại ở chế độ Chờ)

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

PVU RVU
Kín đáo
r r

RM0008 Phiên bản 21 497/1136

499
Machine Translated by Google

Cơ quan giám sát độc lập (IWDG) RM0008

Bit 31:2 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 1 RVU: Cập nhật giá trị tải lại bộ đếm Watchdog

Bit này được thiết lập bởi phần cứng để cho biết rằng quá trình cập nhật giá trị tải lại đang diễn ra. Nó được thiết

lập lại bằng phần cứng khi hoạt động cập nhật giá trị tải lại hoàn tất trong miền điện áp VDD (mất tới 5 chu kỳ RC 40

kHz).

Giá trị tải lại chỉ có thể được cập nhật khi bit RVU được đặt lại.

Bit 0 PVU: Cập nhật giá trị bộ đếm gộp của Watchdog

Bit này được thiết lập bởi phần cứng để chỉ ra rằng việc cập nhật giá trị bộ đếm gộp trước đang diễn ra. Nó được thiết

lập lại bằng phần cứng khi hoạt động cập nhật bộ đếm gộp trước hoàn thành trong miền điện áp VDD (mất tới 5 chu kỳ

RC 40 kHz).

Giá trị bộ chia tỷ lệ trước chỉ có thể được cập nhật khi bit PVU được đặt lại.

Ghi chú: Nếu một số giá trị tải lại hoặc giá trị bộ đếm gộp được sử dụng bởi ứng dụng, thì bắt buộc phải đợi
cho đến khi bit RVU được đặt lại trước khi thay đổi giá trị tải lại và phải đợi cho đến khi bit
PVU được đặt lại trước khi thay đổi giá trị của bộ đếm gộp trước. Tuy nhiên, sau khi cập nhật bộ
đếm gộp trước và/hoặc giá trị tải lại, không cần đợi cho đến khi RVU hoặc PVU được đặt lại trước
khi tiếp tục thực thi mã (ngay cả trong trường hợp vào chế độ năng lượng thấp, thao tác ghi sẽ được
tính đến và sẽ hoàn thành)

498/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Cơ quan giám sát độc lập (IWDG)

19.4.5 Bản đồ đăng ký IWDG

Bảng sau đây cung cấp bản đồ đăng ký IWDG và các giá trị đặt lại.

Bảng 97. Bản đồ đăng ký IWDG và giá trị đặt lại

1
5
ố8
s

7
6

0
Đăng ký bù đắp

3
9

2
4
IWDG_KR CHÌA KHÓA[15:0]
0x00 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

IWDG_PR PR[2:0]
0x04 Kín đáo
Đặt lại giá trị 000

IWDG_RLR RL[11:0]
0x08 Kín đáo
Đặt lại giá trị 111111111111

IWDG_SR
0x0C Kín đáo

UVP
UVR
Đặt lại giá trị 0 0

Tham khảo Phần 3.3: Bản đồ bộ nhớ cho các địa chỉ biên của thanh ghi.

RM0008 Phiên bản 21 499/1136

499
Machine Translated by Google

Cơ quan giám sát cửa sổ (WWDG) RM0008

Cơ quan giám sát 20 cửa sổ (WWDG)

Các thiết bị mật độ thấp là bộ vi điều khiển STM32F101xx, STM32F102xx và STM32F103xx


trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

Các thiết bị có mật độ trung bình là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 64 đến 128 Kbyte.

Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ nhớ
Flash nằm trong khoảng từ 256 đến 512 Kbyte.

Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ


nhớ Flash nằm trong khoảng từ 768 Kbyte đến 1 Mbyte.

Các thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

Phần này áp dụng cho toàn bộ họ STM32F10xxx, trừ khi có quy định khác.

20.1 Giới thiệu WWDG

Cơ quan giám sát cửa sổ được sử dụng để phát hiện sự xuất hiện của lỗi phần mềm, thường
được tạo ra bởi sự can thiệp từ bên ngoài hoặc do các điều kiện logic không lường trước được,
khiến chương trình ứng dụng từ bỏ trình tự bình thường của nó. Mạch giám sát tạo ra thiết lập
lại MCU khi hết khoảng thời gian được lập trình, trừ khi chương trình làm mới nội dung của
bộ đếm ngược trước khi bit T6 bị xóa. Thiết lập lại MCU cũng được tạo nếu giá trị bộ đếm

ngược 7 bit (trong thanh ghi điều khiển) được làm mới trước khi bộ đếm ngược đạt đến giá trị
thanh ghi cửa sổ. Điều này ngụ ý rằng bộ đếm phải được làm mới trong một cửa sổ giới hạn.

20.2 Các tính năng chính của WWDG

• Bộ đếm ngược chạy tự do có thể lập trình • Đặt


lại có điều kiện

– Đặt lại (nếu cơ quan giám sát được kích hoạt) khi giá trị bộ đếm ngược nhỏ hơn
0x40

– Đặt lại (nếu cơ quan giám sát được kích hoạt) nếu bộ đếm ngược được tải lại bên ngoài
cửa sổ (xem Hình 184)
• Ngắt đánh thức sớm (EWI): được kích hoạt (nếu được bật và cơ quan giám sát được kích hoạt)
khi bộ đếm ngược bằng 0x40.

20.3 Mô tả chức năng WWDG


Nếu cơ quan giám sát được kích hoạt (bit WDGA được đặt trong thanh ghi WWDG_CR) và khi bộ đếm
ngược 7 bit (bit T[6:0]) chuyển từ 0x40 xuống 0x3F (T6 bị xóa), nó sẽ bắt đầu thiết lập lại. Nếu
phần mềm tải lại bộ đếm trong khi bộ đếm lớn hơn giá trị được lưu trong thanh ghi cửa sổ thì
thiết lập lại sẽ được tạo ra.

500/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Cơ quan giám sát cửa sổ (WWDG)

Hình 183. Sơ đồ khối Watchdog

Chương trình ứng dụng phải ghi vào thanh ghi WWDG_CR đều đặn trong quá trình hoạt động bình thường
để ngăn chặn việc thiết lập lại MCU. Hoạt động này chỉ xảy ra khi giá trị bộ đếm thấp hơn giá trị thanh
ghi cửa sổ. Giá trị được lưu trong thanh ghi WWDG_CR phải nằm trong khoảng từ 0xFF đến 0xC0.

Kích hoạt cơ quan giám sát

Cơ quan giám sát luôn bị vô hiệu hóa sau khi thiết lập lại. Nó được kích hoạt bằng cách đặt bit WDGA
trong thanh ghi WWDG_CR, sau đó nó không thể bị tắt lại ngoại trừ bằng cách đặt lại.

Điều khiển bộ đếm ngược

Bộ đếm ngược này chạy tự do, đếm ngược ngay cả khi cơ quan giám sát bị vô hiệu hóa. Khi cơ quan giám
sát được bật, bit T6 phải được đặt để ngăn việc tạo thiết lập lại ngay lập tức.

Các bit T[5:0] chứa số lượng tăng biểu thị độ trễ thời gian trước khi cơ quan giám sát tạo ra một thiết
lập lại. Thời gian thay đổi giữa giá trị tối thiểu và tối đa do trạng thái không xác định của bộ đếm
gộp trước khi ghi vào thanh ghi WWDG_CR (xem Hình 184). Thanh ghi cấu hình (WWDG_CFR) chứa giới hạn
cao của cửa sổ: Để ngăn chặn việc đặt lại, bộ đếm ngược phải được tải lại khi giá trị của nó thấp hơn
giá trị thanh ghi cửa sổ và lớn hơn 0x3F. Hình 184 mô tả quá trình giám sát cửa sổ.

Ghi chú: Bit T6 có thể được sử dụng để tạo thiết lập lại phần mềm (bit WDGA được đặt và bit T6 bị xóa).

Tính năng ngắt cơ quan giám sát nâng cao

Có thể sử dụng Ngắt đánh thức sớm (EWI) nếu phải thực hiện các hoạt động an toàn hoặc ghi dữ liệu cụ
thể trước khi tạo thiết lập lại thực tế. Ngắt EWI được kích hoạt bằng cách đặt bit EWI trong thanh
ghi WWDG_CFR. Khi bộ đếm ngược đạt đến giá trị 0x40, một ngắt EWI được tạo ra và quy trình dịch vụ
ngắt tương ứng (ISR) có thể được sử dụng để kích hoạt các hành động cụ thể (chẳng hạn như liên lạc
hoặc ghi nhật ký dữ liệu), trước khi đặt lại thiết bị.

RM0008 Phiên bản 21 501/1136

506
Machine Translated by Google

Cơ quan giám sát cửa sổ (WWDG) RM0008

Trong một số ứng dụng, ngắt EWI có thể được sử dụng để quản lý việc kiểm tra hệ thống phần
mềm và/hoặc khôi phục hệ thống/xuống cấp nhanh chóng mà không cần thiết lập lại WWDG. Trong
trường hợp này, quy trình dịch vụ ngắt tương ứng (ISR) sẽ tải lại bộ đếm WWDG để tránh việc
đặt lại WWDG, sau đó kích hoạt các hành động cần thiết.

Ngắt EWI được xóa bằng cách ghi '0' vào bit EWIF trong thanh ghi WWDG_SR.

Ghi chú: Khi ngắt EWI không thể được phục vụ, ví dụ do khóa hệ thống ở tác vụ có mức độ ưu tiên cao
hơn, thiết lập lại WWDG cuối cùng sẽ được tạo.

20.4 Cách lập trình thời gian chờ của cơ quan giám sát

Cảnh báo: Khi ghi vào thanh ghi WWDG_CR, luôn ghi 1 vào
Bit T6 để tránh tạo ra thiết lập lại ngay lập tức.

Hình 184. Sơ đồ thời gian giám sát cửa sổ

Bộ đếm giảm tốc T[6:0] CNT

W[6:0]

0x3F

Thời gian
Làm mới không được phép Cho phép làm mới

bit T6

CÀI LẠI

ai17101c

Công thức tính giá trị thời gian chờ WWDG được đưa ra bởi:

= WDGTB[1:0] t
t 4096 2 T[5:0] 1 + ms
WWDG PCLK1

Ở đâu:

tWWDG: Hết thời gian WWDG

tPCLK1: Chu kỳ xung nhịp APB1 được đo bằng ms

4096: giá trị tương ứng với bộ chia nội bộ

502/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Cơ quan giám sát cửa sổ (WWDG)

Ví dụ: giả sử tần số APB1 bằng 24 MHz, WDGTB[1:0] được đặt thành 3 và T[5:0] được đặt thành
63:

t = 3 1 24000 4096 2 = 21,85 mili giây


63 1 +
WWDG

Tham khảo Bảng 98 để biết giá trị tối thiểu và tối đa của tWWDG.

Bảng 98. Giá trị thời gian chờ tối thiểu và tối đa @36 MHz (fPCLK1)
Bộ đếm trước WDGTB Giá trị thời gian chờ tối thiểu Giá trị thời gian chờ tối đa

1 0 113 µs 7,28 mili giây

2 1 227 µs 14,56 mili giây

4 2 455 µs 29,12 mili giây

số 8 3 910 µs 58,25 mili giây

20.5 Chế độ gỡ lỗi


Khi bộ vi điều khiển chuyển sang chế độ gỡ lỗi ( lõi Cortex®-M3 tạm dừng), bộ đếm WWDG tiếp
tục hoạt động bình thường hoặc dừng, tùy thuộc vào bit cấu hình DBG_WWDG_STOP
trong mô-đun DBG. Để biết thêm chi tiết, hãy tham khảo Phần 31.16.2: Hỗ trợ gỡ lỗi cho bộ
hẹn giờ, cơ quan giám sát, bxCAN và I2C.

RM0008 Phiên bản 21 503/1136

506
Machine Translated by Google

Cơ quan giám sát cửa sổ (WWDG) RM0008

20.6 đăng ký WWDG


Tham khảo Phần 2.2 trên trang 45 để biết danh sách các chữ viết tắt được sử dụng trong mô tả đăng ký.

Các thanh ghi ngoại vi phải được truy cập bằng nửa từ (16 bit) hoặc từ (32 bit).

20.6.1 Thanh ghi điều khiển (WWDG_CR)


Độ lệch địa chỉ: 0x00

Giá trị đặt lại: 0x0000 007F

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

WDGA T[6:0]
Kín đáo
rs rw

Bit 31:8 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 7 WDGA: Bit kích hoạt

Bit này được thiết lập bằng phần mềm và chỉ bị xóa bằng phần cứng sau khi thiết lập lại. Khi WDGA = 1, cơ quan

giám sát có thể tạo thiết lập lại.

0: Cơ quan giám sát bị vô hiệu hóa

1: Đã bật cơ quan giám sát

Bit 6:0 T[6:0]: Bộ đếm 7 bit (MSB đến LSB)

Các bit này chứa giá trị của bộ đếm cơ quan giám sát. Nó được giảm dần sau mỗi chu kỳ PCLK1 (4096 x

2WDGTB[1:0]) . Thiết lập lại được tạo ra khi nó chuyển từ 0x40 sang 0x3F (T6 bị xóa).

504/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Cơ quan giám sát cửa sổ (WWDG)

20.6.2 Thanh ghi cấu hình (WWDG_CFR)

Độ lệch địa chỉ: 0x04

Giá trị đặt lại: 0x0000 007F

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

EWI WDGTB[1:0] W[6:0]


Kín đáo
rs rw rw

Bit 31:10 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 9 EWI: Ngắt đánh thức sớm

Khi được đặt, ngắt sẽ xảy ra bất cứ khi nào bộ đếm đạt giá trị 0x40. Ngắt này chỉ được xóa bằng phần
cứng sau khi thiết lập lại.

Bit 8:7 WDGTB[1:0]: Cơ sở hẹn giờ

Cơ sở thời gian của bộ đếm gộp trước có thể được sửa đổi như sau:

00: Đồng hồ đếm CK (PCLK1 div 4096) div 1


01: Đồng hồ đếm CK (PCLK1 div 4096) div 2
10: Đồng hồ đếm CK (PCLK1 div 4096) div 4
11: Đồng hồ đếm CK (PCLK1 div 4096) div 8

Bit 6:0 W[6:0]: Giá trị cửa sổ 7 bit

Các bit này chứa giá trị cửa sổ được so sánh với bộ đếm ngược.

20.6.3 Thanh ghi trạng thái (WWDG_SR)

Độ lệch địa chỉ: 0x08


Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

EWIF
Kín đáo
rc_w0

Bit 31:1 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 0 EWIF: Cờ ngắt đánh thức sớm

Bit này được thiết lập bằng phần cứng khi bộ đếm đạt giá trị 0x40. Nó phải được xóa bằng phần mềm
bằng cách viết '0'. Việc viết '1' không có hiệu lực. Bit này cũng được đặt nếu ngắt không được kích
hoạt.

RM0008 Phiên bản 21 505/1136

506
Machine Translated by Google

Cơ quan giám sát cửa sổ (WWDG) RM0008

20.6.4 Bản đồ đăng ký WWDG

Bảng sau đây cung cấp bản đồ đăng ký WWDG và các giá trị đặt lại.

Bảng 99. Bản đồ đăng ký WWDG và giá trị đặt lại

Đăng ký bù đắp

1
7
5
6

0
3
8
9

2
4
WWDG_CR T[6:0]
0x00 Kín đáo

AGDW
Đặt lại giá trị 01111111

WWDG_CFR W[6:0]

IWE
0x04 Kín đáo

1BTGDW
0BTGDW
Đặt lại giá trị 0001111111

WWDG_SR
0x08 Kín đáo

FIWE
Đặt lại giá trị 0

Tham khảo Phần 3.3: Bản đồ bộ nhớ cho các địa chỉ biên của thanh ghi.

506/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

21 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

Các thiết bị mật độ thấp là bộ vi điều khiển STM32F101xx, STM32F102xx và STM32F103xx


trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

Các thiết bị có mật độ trung bình là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật
độ bộ nhớ Flash nằm trong khoảng từ 32 đến 128 Kbyte.

Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ nhớ
Flash nằm trong khoảng từ 256 đến 512 Kbyte.

Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ


nhớ Flash nằm trong khoảng từ 768 Kbyte đến 1 Mbyte.

Các thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

Phần này chỉ áp dụng cho các thiết bị có mật độ cao và mật độ XL.

21.1 Các tính năng chính của FSMC

Khối FSMC có thể giao tiếp với bộ nhớ đồng bộ và không đồng bộ và thẻ nhớ PC 16 bit. Mục đích
chính của nó là:

• Chuyển các giao dịch AHB sang giao thức thiết bị bên ngoài thích hợp

• Đáp ứng yêu cầu về thời gian truy cập của các thiết bị bên ngoài

Tất cả các bộ nhớ ngoài đều chia sẻ địa chỉ, dữ liệu và tín hiệu điều khiển với bộ điều khiển.
Mỗi thiết bị bên ngoài được truy cập bằng một chip chọn duy nhất. FSMC chỉ thực hiện một lần
truy cập vào thiết bị bên ngoài tại một thời điểm.

RM0008 Phiên bản 21 507/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

FSMC có các tính năng chính sau:


• Giao diện với các thiết bị được ánh xạ bộ nhớ tĩnh bao gồm:

– Bộ nhớ truy cập ngẫu nhiên tĩnh (SRAM)

– Bộ nhớ Flash NOR

– PSRAM (4 ngân hàng bộ nhớ)

• Hai dãy NAND Flash với phần cứng ECC kiểm tra tối đa 8 Kbyte dữ liệu
• Các thiết bị tương thích với PC Card 16-bit

• Hỗ trợ truy cập chế độ chụp liên tục vào các thiết bị đồng bộ (NOR Flash và PSRAM)
• Cơ sở dữ liệu rộng 8 hoặc 16 bit

• Kiểm soát lựa chọn chip độc lập cho từng ngân hàng bộ nhớ

• Cấu hình độc lập cho từng ngân hàng bộ nhớ

• Lập trình thời gian để hỗ trợ nhiều loại thiết bị, đặc biệt:

– Trạng thái chờ có thể lập trình (tối đa 15)

– Chu kỳ quay vòng xe buýt có thể lập trình (tối đa 15)

– Có thể lập trình độ trễ cho phép đầu ra và ghi cho phép (tối đa 15)

– Giao thức và thời gian đọc và ghi độc lập, để hỗ trợ nhiều loại bộ nhớ và thời gian
nhất

• Ghi các đầu ra kích hoạt và chọn làn byte để sử dụng với các thiết bị PSRAM và SRAM
• Dịch các giao dịch AHB rộng 32-bit thành các truy cập 16-bit hoặc 8-bit liên tiếp vào

thiết bị 16-bit hoặc 8-bit bên ngoài

• A Write FIFO, dài 2 từ, mỗi từ rộng 32 bit, chỉ lưu trữ dữ liệu chứ không lưu trữ địa
chỉ. Do đó, FIFO này chỉ đệm các giao dịch ghi liên tục của AHB. Điều này giúp có thể ghi
vào bộ nhớ chậm và giải phóng AHB nhanh chóng cho các hoạt động khác. Mỗi lần chỉ có một
cụm được lưu vào bộ đệm: nếu một cụm AHB mới hoặc một giao dịch đơn lẻ xảy ra trong khi
một hoạt động đang diễn ra thì FIFO sẽ bị cạn kiệt. FSMC sẽ chèn trạng thái chờ cho đến
khi việc truy cập bộ nhớ hiện tại hoàn tất.
• Kiểm soát chờ đợi không đồng bộ bên ngoài

Các thanh ghi FSMC xác định loại thiết bị bên ngoài và các đặc điểm liên quan thường được đặt
khi khởi động và không thay đổi cho đến lần khởi động lại hoặc bật nguồn tiếp theo. Tuy
nhiên, có thể thay đổi cài đặt bất cứ lúc nào.

21.2 Sơ đồ khối
FSMC bao gồm bốn khối chính:

• Giao diện AHB (bao gồm các thanh ghi cấu hình FSMC)
• Bộ điều khiển NOR Flash/PSRAM

• Bộ điều khiển thẻ NAND Flash/PC

• Giao diện thiết bị bên ngoài

Sơ đồ khối được thể hiện trong Hình 185.

508/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

Hình 185. Sơ đồ khối FSMC

FSMC ngắt tới NVIC

FSMC_NE[4:1]
FSMC_NL (hoặc NADV) Tín hiệu NOR/
Từ bộ điều FSMC_NBL[1:0] PSRAM
BẮC/PSRAM
khiển đồng hồ FSMC_CLK
bộ điều
HCLK khiển bộ nhớ

FSMC_A[25:0]
FSMC_D[15:0] Tín hiệu

FSMC_NOE được chia sẻ


Thanh ghi FSMC_NWE
ýH
tB eA
u x
b

cấu hình FSMC_NWAIT

FSMC_NCE[3:2] tín
FSMC_INT[3:2] hiệu NAND

Thẻ NAND/PC
bộ điều
FSMC_INTR
khiển bộ nhớ FSMC_NCE4_1
FSMC_NCE4_2
FSMC_NIORD
Tín hiệu
FSMC_NIOWR
thẻ PC
FSMC_NIOS16
FSMC_NREG
FSMC_CD

ai14718d

21.3 Giao diện AHB

Giao diện nô lệ AHB cho phép CPU bên trong và các thiết bị ngoại vi chính của bus khác truy cập
vào bộ nhớ tĩnh bên ngoài.

Các giao dịch AHB được dịch sang giao thức thiết bị bên ngoài. Đặc biệt, nếu bộ nhớ ngoài
được chọn rộng 16 hoặc 8 bit, các giao dịch rộng 32 bit trên AHB sẽ được chia thành các truy cập
16 hoặc 8 bit liên tiếp. Chip Select được giữ ở mức thấp hoặc chuyển đổi giữa các lần truy cập
liên tiếp khi thực hiện các truy cập được căn chỉnh 32 bit hoặc không được căn chỉnh 32
bit tương ứng.

FSMC tạo ra lỗi AHB trong các điều kiện sau: • Khi đọc hoặc ghi

vào ngân hàng FSMC không được kích hoạt • Khi đọc hoặc ghi vào ngân hàng

NOR Flash trong khi bit FACCEN được đặt lại trong thanh ghi FSMC_BCRx. • Khi đọc hoặc ghi vào
ngân hàng Thẻ PC trong

khi chân đầu vào FSMC_CD (Thẻ


Phát hiện sự hiện diện) ở mức thấp.

RM0008 Phiên bản 21 509/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Ảnh hưởng của lỗi AHB này phụ thuộc vào AHB master đã thử R/W
truy cập:

• Nếu là CPU Cortex®-M3, ngắt lỗi cứng sẽ được tạo ra


• Nếu là DMA, lỗi truyền DMA sẽ được tạo và kênh DMA tương ứng sẽ tự động bị tắt.

Đồng hồ AHB (HCLK) là đồng hồ tham chiếu cho FSMC.

21.3.1 Bộ nhớ và giao dịch được hỗ trợ

Quy tắc giao dịch chung

Kích thước dữ liệu giao dịch AHB được yêu cầu có thể rộng 8, 16 hoặc 32 bit trong khi thiết bị bên
ngoài được truy cập có chiều rộng dữ liệu cố định. Điều này có thể dẫn đến việc chuyển tiền không nhất quán.

Do đó, một số quy tắc giao dịch đơn giản phải được tuân theo:

• Kích thước giao dịch AHB và kích thước dữ liệu bộ nhớ bằng nhau
Không có vấn đề gì trong trường hợp này.

• Kích thước giao dịch AHB lớn hơn kích thước bộ nhớ
Trong trường hợp này, FSMC chia giao dịch AHB thành các lần truy cập bộ nhớ liên tiếp
nhỏ hơn để đáp ứng độ rộng dữ liệu ngoài.

• Kích thước giao dịch AHB nhỏ hơn kích thước bộ nhớ
Truyền không đồng bộ có thể nhất quán hoặc không nhất quán tùy thuộc vào loại thiết bị
bên ngoài.

– Truy cập không đồng bộ vào các thiết bị có tính năng chọn byte (SRAM, ROM, PSRAM).

a) FSMC cho phép ghi các giao dịch truy cập đúng dữ liệu thông qua các làn byte NBL[1:0]

b) Giao dịch đọc được cho phép. Tất cả các byte bộ nhớ đều được đọc và những byte không
cần thiết sẽ bị loại bỏ. NBL[1:0] được giữ ở mức thấp trong quá trình đọc giao dịch.

– Truy cập không đồng bộ vào các thiết bị không có tính năng chọn byte (NOR và NAND Flash 16-
bit).
Tình huống này xảy ra khi yêu cầu truy cập byte vào bộ nhớ Flash rộng 16 bit. Rõ
ràng, thiết bị không thể được truy cập ở chế độ byte (chỉ có thể đọc/ghi các từ 16 bit
vào bộ nhớ Flash), do đó:

a) Giao dịch viết không được phép

b) Giao dịch đọc được cho phép. Tất cả các byte bộ nhớ đều được đọc và những byte không cần
thiết sẽ bị loại bỏ. NBL[1:0] được đặt thành 0 trong quá trình đọc giao dịch.

Thanh ghi cấu hình

FSMC có thể được cấu hình bằng cách sử dụng bộ thanh ghi. Xem Phần 21.5.6 để biết mô tả
chi tiết về các thanh ghi điều khiển NOR Flash/PSRAM. Xem Phần 21.6.8 để biết mô tả chi tiết về
các thanh ghi Thẻ NAND Flash/PC.

510/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

21.4 Ánh xạ địa chỉ thiết bị bên ngoài


Theo quan điểm của FSMC, bộ nhớ ngoài được chia thành 4 ngân hàng có kích thước cố định, mỗi
ngân hàng 256 Mbyte (Tham khảo Hình 186):

• Ngân hàng 1 được sử dụng để đánh địa chỉ tối đa 4 thiết bị bộ nhớ NOR Flash hoặc PSRAM. Ngân
hàng này được chia thành 4 ngân hàng con NOR/PSRAM với 4 lựa chọn chip chuyên dụng
như sau: – Ngân hàng 1 - NOR/PSRAM 1

– Ngân hàng 1 - NOR/PSRAM 2

– Ngân hàng 1 - NOR/PSRAM 3

– Ngân hàng 1 - NOR/PSRAM 4

• Ngân hàng 2 và 3 được sử dụng để đánh địa chỉ các thiết bị NAND Flash (1 thiết bị trên mỗi ngân

hàng) • Ngân hàng 4 được sử dụng để đánh địa chỉ thiết bị Thẻ PC

Đối với mỗi dãy, loại bộ nhớ được sử dụng do người dùng xác định trong thanh ghi Cấu hình.

Hình 186. Ngân hàng bộ nhớ FSMC

Địa chỉ Ngân hàng Loại bộ nhớ được hỗ trợ

6000 0000 giờ


Ngân hàng 1
CŨNG/PSRAM

4 × 64 MB
6FFF FFFFh

7000 0000 giờ


Ngân hàng 2

4 × 64 MB

7FFF FFFFh

Flash NAND

8000 0000h
Ngân hàng 3

4 × 64MB

8FFF FFFFh

9000 0000 giờ


Ngân hàng 4

Thẻ PC
4 × 64MB

9FFF FFFFh

ai14719

21.4.1 Ánh xạ địa chỉ NOR/PSRAM


Các bit HADDR[27:26] được sử dụng để chọn một trong bốn dãy bộ nhớ như trong Bảng 100.

Bảng 100. Lựa chọn ngân hàng NOR/PSRAM

HADDR[27:26](1) Ngân hàng đã chọn

00 Ngân hàng 1 - NOR/PSRAM 1

01 Ngân hàng 1 - NOR/PSRAM 2

RM0008 Phiên bản 21 511/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Bảng 100. Lựa chọn ngân hàng NOR/PSRAM (tiếp theo)

HADDR[27:26](1) Ngân hàng đã chọn

10 Ngân hàng 1 - NOR/PSRAM 3

11 Ngân hàng 1 - NOR/PSRAM 4

1. HADDR là các dòng địa chỉ AHB nội bộ được dịch sang bộ nhớ ngoài.

HADDR[25:0] chứa địa chỉ bộ nhớ ngoài. Vì HADDR là một địa chỉ byte trong khi bộ nhớ được
đánh địa chỉ bằng từ, nên địa chỉ thực sự được cấp cho bộ nhớ sẽ thay đổi tùy theo độ rộng dữ
liệu bộ nhớ, như được hiển thị trong bảng sau.

Bảng 101. Địa chỉ bộ nhớ ngoài

Độ rộng bộ nhớ(1) Địa chỉ dữ liệu được cấp cho bộ nhớ Dung lượng bộ nhớ tối đa (bit)

8 bit HADDR[25:0] 64 Mbyte x 8 = 512 Mbit

16-bit HADDR[25:1] >> 1 64 Mbyte/2 x 16 = 512 Mbit

1. Trong trường hợp chiều rộng bộ nhớ ngoài là 16 bit, FSMC sẽ sử dụng nội bộ HADDR[25:1] để tạo địa chỉ
cho bộ nhớ ngoài FSMC_A[24:0].
Bất kể chiều rộng bộ nhớ ngoài (16 bit hay 8 bit), FSMC_A[0] phải được kết nối với địa chỉ bộ nhớ ngoài A[0].

Hỗ trợ gói cho NOR Flash/PSRAM

Chế độ gói liên tục cho các bộ nhớ đồng bộ không được hỗ trợ. Bộ nhớ phải được cấu hình ở chế
độ truyền tuyến tính có độ dài không xác định.

21.4.2 Ánh xạ địa chỉ thẻ NAND/PC


Trong trường hợp này, có ba dãy có sẵn, mỗi dãy được chia thành các không gian bộ nhớ như
được chỉ ra trong Bảng 102.

Bảng 102. Các thanh ghi ánh xạ bộ nhớ và thời gian

Địa chỉ bắt đầu Địa chỉ kết thúc Ngân hàng FSMC Không gian bộ nhớ Đăng ký thời gian

0x9C00 0000 0x9FFF FFFF Vào/ra


FSMC_PIO4 (0xB0)

0x9800 0000 0x9BFFFFFF Ngân hàng 4 - Thẻ PC Thuộc tính FSMC_PATT4 (0xAC)

0x9000 0000 0x93FFFFFF Chung FSMC_PMEM4 (0xA8)

0x8800 0000 0x8BFFFFFF Thuộc tính FSMC_PATT3 (0x8C)


Ngân hàng 3 - NAND Flash
0x8000 0000 0x83FFFFFF Chung FSMC_PMEM3 (0x88)

0x7800 0000 0x7BFFFFFF Thuộc tính FSMC_PATT2 (0x6C)


Ngân hàng 2- NAND Flash
0x7000 0000 0x73FFFFFF Chung FSMC_PMEM2 (0x68)

Đối với bộ nhớ NAND Flash, không gian bộ nhớ chung và bộ nhớ thuộc tính được chia thành ba phần
(xem trong Bảng 103 bên dưới) nằm ở vùng 256 Kbyte thấp hơn:

• Phần dữ liệu (64 Kbyte đầu tiên trong không gian bộ nhớ chung/thuộc tính)

• Phần lệnh (64 Kbyte thứ hai trong không gian bộ nhớ chung/thuộc tính)

• Phần địa chỉ (128 Kbyte tiếp theo trong không gian bộ nhớ chung/thuộc tính)

512/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

Bảng 103. Lựa chọn ngân hàng NAND

Tên phần HADDR[17:16] Dải địa chỉ

Phần địa chỉ 1X 0x020000-0x03FFFF

Phần lệnh 01 0x010000-0x01FFFF

Phần dữ liệu 00 0x000000-0x0FFFF

Phần mềm ứng dụng sử dụng 3 phần để truy cập bộ nhớ NAND Flash:

• Để gửi lệnh tới bộ nhớ NAND Flash: phần mềm phải ghi giá trị lệnh vào bất kỳ vị trí bộ nhớ nào
trong phần lệnh.

• Để chỉ định địa chỉ NAND Flash phải được đọc hoặc ghi: phần mềm
phải ghi giá trị địa chỉ vào bất kỳ vị trí bộ nhớ nào trong phần địa chỉ. Vì một địa chỉ có
thể dài 4 hoặc 5 byte (tùy thuộc vào kích thước bộ nhớ thực tế), nên cần phải ghi nhiều
lần liên tiếp vào phần địa chỉ để chỉ định địa chỉ đầy đủ.

• Đọc hoặc ghi dữ liệu: phần mềm đọc hoặc ghi giá trị dữ liệu từ hoặc tới bất kỳ vị trí bộ
nhớ nào trong phần dữ liệu.

Vì bộ nhớ NAND Flash tự động tăng địa chỉ nên không cần tăng địa chỉ của phần dữ liệu để truy
cập vào các vị trí bộ nhớ liên tiếp.

Bộ điều khiển 21.5 NOR Flash/PSRAM

FSMC tạo ra thời gian tín hiệu thích hợp để điều khiển các loại bộ nhớ sau:

• SRAM và ROM không đồng bộ


- 8 bit

– 16-bit

– 32-bit

• PSRAM (RAM di động)

– Chế độ không đồng bộ

– Chế độ Burst để truy cập đồng bộ


• NOR Flash

– Chế độ không đồng bộ

– Chế độ Burst để truy cập đồng bộ

– Ghép kênh hoặc không ghép kênh

FSMC xuất ra tín hiệu chọn chip duy nhất NE[4:1] cho mỗi dãy. Tất cả các tín hiệu khác (địa
chỉ, dữ liệu và điều khiển) đều được chia sẻ.

Đối với các truy cập đồng bộ, FSMC chỉ cấp đồng hồ (CLK) cho thiết bị bên ngoài đã chọn trong
các giao dịch đọc/ghi. Đồng hồ này là ước số con của đồng hồ HCLK.
Kích thước của mỗi ngân hàng là cố định và bằng 64 Mbyte.

Mỗi dãy được cấu hình bằng các thanh ghi chuyên dụng (xem Phần 21.5.6).

Các tham số bộ nhớ có thể lập trình bao gồm thời gian truy cập (xem Bảng 104) và hỗ trợ quản lý chờ
(đối với PSRAM và NOR Flash được truy cập ở chế độ chụp liên tục).

RM0008 Phiên bản 21 513/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Bảng 104. Tham số truy cập NOR/PSRAM có thể lập trình

Tham số Chức năng Chế độ truy cập Đơn vị Tối thiểu. Tối đa.

Địa chỉ Thời lượng của giai đoạn Chu kỳ đồng hồ AHB
Không đồng bộ 1 16
cài đặt thiết lập địa chỉ (HCLK)

Thời lượng của giai đoạn giữ I/O không đồng Chu kỳ đồng hồ AHB
Giữ địa chỉ 2 16
địa chỉ bộ, trộn lẫn (HCLK)

Thời lượng của giai đoạn thiết Chu kỳ đồng hồ AHB


Thiết lập dữ liệu Không đồng bộ 2 256
lập dữ liệu (HCLK)

Đọc/ghi không đồng


Thời gian của giai Chu kỳ đồng hồ AHB
Rẽ xe buýt bộ và đồng bộ 1 16
đoạn quay vòng xe buýt (HCLK)

Số chu kỳ xung nhịp AHB


Tỷ lệ chia đồng Chu kỳ đồng hồ AHB
(HCLK) để xây dựng một chu kỳ Đồng bộ 2 16
hồ (HCLK)
xung nhịp bộ nhớ (CLK)

Số chu kỳ xung nhịp cấp cho


Chu kỳ xung
Độ trễ dữ liệu bộ nhớ trước dữ liệu đầu tiên Đồng bộ 2 17
nhịp bộ nhớ (CLK)
của cụm

21.5.1 Tín hiệu giao diện bộ nhớ ngoài

Bảng 105, Bảng 106 và Bảng 107 liệt kê các tín hiệu thường được sử dụng để giao tiếp với NOR Flash,
SRAM và PSRAM.

Ghi chú: Tiền tố “N”. chỉ định tín hiệu liên quan là mức hoạt động thấp.

NOR Flash, I/O không ghép kênh

Bảng 105. Flash I/O không ghép kênh

Tên tín hiệu FSMC Vào/ra Chức năng

CLK ồ Đồng hồ (để truy cập đồng bộ)

A[25:0] ồ Xe buýt địa chỉ

D[15:0] Vào/ra Bus dữ liệu hai chiều

ĐB[x] ồ Chọn chip, x = 1..4

KHÔNG ồ Kích hoạt đầu ra

Tây Bắc ồ Cho phép viết

Kích hoạt chốt (tín hiệu này được gọi là địa


NL(=NADV) ồ
chỉ hợp lệ, NADV, bởi một số thiết bị NOR Flash)

CHỜ ĐỢI TÔI

NOR Tín hiệu đầu vào chờ flash tới FSMC

Bộ nhớ NOR Flash được xử lý bằng các từ 16 bit. Dung lượng tối đa là 512 Mbit (26 dòng địa chỉ).

514/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

NOR Flash, I/O đa kênh

Bảng 106. Flash I/O đa kênh

Tên tín hiệu FSMC I/O Chức năng

CLK O Đồng hồ (để truy cập đồng bộ)

A[25:16] O Xe buýt địa chỉ

QUẢNG CÁO[15:0] Vào/ra


Bus địa chỉ/dữ liệu hai chiều, ghép kênh 16 bit

ĐB[x] O Chọn chip, x = 1..4

KHÔNG O Kích hoạt đầu ra

Tây Bắc O Kích hoạt ghi

Kích hoạt chốt (tín hiệu này được gọi là địa chỉ hợp lệ, NADV, bởi một số NOR
NL(=NADV) ồ
thiết bị flash)

CHỜ ĐỢI I NOR Tín hiệu đầu vào chờ flash tới FSMC

Bộ nhớ NOR-Flash được xử lý bằng các từ 16 bit. Dung lượng tối đa là 512 Mbit (26 dòng địa
chỉ).

PSRAM/SRAM

Bảng 107. PSRAM/SRAM I/O không ghép kênh

Tên tín hiệu FSMC I/O Chức năng

CLK O Đồng hồ (chỉ dành cho truy cập đồng bộ PSRAM)

A[25:0] O Xe buýt địa chỉ

D[15:0] Bus hai chiều dữ liệu I/O

ĐB[x] O Chip select, x = 1..4 (được PSRAM gọi là NCE (Cellular RAM tức là CRAM))

KHÔNG O Kích hoạt đầu ra

Tây Bắc O Kích hoạt ghi

NL(=NADV) O Địa chỉ chỉ hợp lệ cho đầu vào PSRAM (tên tín hiệu bộ nhớ: NADV)

CHỜ ĐỢI Tôi PSRAM chờ tín hiệu đầu vào tới FSMC

NBL[1] O Kích hoạt byte trên (tên tín hiệu bộ nhớ: NUB)

NBL[0] O Kích hoạt byte thấp (tên tín hiệu bộ nhớ: NLB)

Bộ nhớ PSRAM được xử lý bằng các từ 16 bit. Dung lượng tối đa là 512 Mbit (26 dòng địa chỉ).

21.5.2 Bộ nhớ và giao dịch được hỗ trợ

Bảng 108 bên dưới hiển thị ví dụ về các thiết bị được hỗ trợ, chế độ truy cập và giao
dịch khi bus dữ liệu bộ nhớ là 16-bit cho NOR, PSRAM và SRAM.
Các giao dịch không được FSMC cho phép (hoặc không được hỗ trợ) trong ví dụ này sẽ có màu xám.

RM0008 Phiên bản 21 515/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Bảng 108. Bộ điều khiển NOR Flash/PSRAM: ví dụ về các bộ nhớ và giao dịch được hỗ trợ

dữ Cho phép/
Kích thước
Thiết bị Cách thức R/W liệu AHB không Bình luận
dữ liệu bộ nhớ
kích cỡ cho phép

Không đồng bộ R số 8 16 Y -

W 8 16 N -
Không đồng bộ

Không đồng bộ R 16 16 Y -

Không đồng bộ W 16 16 Y -

CŨNG KHÔNG Flash


Không đồng bộ R 32 16 Y Chia thành hai quyền truy cập FSMC
(I/O trộn lẫn và
Không đồng bộ W 32 16 Y Chia thành hai quyền truy cập FSMC
I/O không trộn lẫn)
- 16 N
Trang không đồng bộ R Chế độ không được hỗ trợ

R 16 N -
Đồng bộ số 8

Đồng bộ R 16 16 Y -

Đồng bộ R 32 16 Y -

Không đồng bộ R số 8 16 Y -

Không đồng bộ W 8 16 Y Sử dụng các làn byte NBL[1:0]

Không đồng bộ R 16 16 Y -

Không đồng bộ W 16 16 Y -

Không đồng bộ R 32 16 Y Chia thành hai quyền truy cập FSMC


PSRAM
Không đồng bộ W 32 16 Y Chia thành hai quyền truy cập FSMC
(ghép kênh và
không ghép kênh Trang không đồng bộ R
- 16 N Chế độ không được hỗ trợ
I/O)
R 16 N -
Đồng bộ số 8

Đồng bộ R 16 16 Y -

Đồng bộ R 32 16 Y -

Đồng bộ W 8 16 Y Sử dụng các làn byte NBL[1:0]

Đồng bộ T 16/32 16 Y -

Không đồng bộ R 8 / 16 16 Y -

Không đồng bộ T 8/16 16 Y Sử dụng các làn byte NBL[1:0]


SRAM và ROM R 32 16
Không đồng bộ Y Chia thành hai quyền truy cập FSMC

Chia thành hai quyền truy cập FSMC.


Không đồng bộ W 32 16 Y
Sử dụng các làn byte NBL[1:0]

516/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

21.5.3 Quy tắc chung về thời gian

Đồng bộ hóa tín hiệu


• Tất cả các tín hiệu đầu ra của bộ điều khiển thay đổi ở cạnh tăng của đồng hồ bên trong (HCLK)
• Ở chế độ đồng bộ (đọc hoặc ghi), tất cả tín hiệu đầu ra thay đổi ở cạnh lên của HCLK. Dù
giá trị CLKDIV là bao nhiêu thì tất cả các đầu ra đều thay đổi như sau:

– NOEL/NWEL/ NEL/NADVL/ NADVH /NBLL/ Thay đổi địa chỉ đầu ra hợp lệ ở cạnh xuống của đồng
hồ FSMC_CLK.

– NOEH/ NWEH / NEH/ NOEH/NBLH/ Địa chỉ đầu ra không hợp lệ thay đổi theo chiều tăng
cạnh của đồng hồ FSMC_CLK.

21.5.4 Giao dịch không đồng bộ của bộ điều khiển NOR Flash/PSRAM

Bộ nhớ tĩnh không đồng bộ (bộ nhớ NOR Flash, PSRAM, SRAM)

• Tín hiệu được đồng bộ bởi đồng hồ bên trong HCLK. Đồng hồ này không được cấp cho
ký ức

• FSMC luôn lấy mẫu dữ liệu trước khi xác nhận tín hiệu NOE. Cái này
đảm bảo đáp ứng ràng buộc về thời gian lưu giữ dữ liệu của bộ nhớ (chip cho phép chuyển đổi dữ
liệu ở mức cao, thường là 0 ns tối thiểu.)
• Nếu chế độ mở rộng được bật (bit EXTMOD được đặt trong thanh ghi FSMC_BCRx), có sẵn tối
đa bốn chế độ mở rộng (A, B, C và D). Có thể kết hợp các chế độ A, B, C và D cho hoạt
động đọc và ghi. Ví dụ: thao tác đọc có thể được thực hiện ở chế độ A và ghi ở chế độ B.

• Nếu chế độ mở rộng bị tắt (bit EXTMOD được đặt lại trong thanh ghi FSMC_BCRx), FSMC có
thể hoạt động ở Mode1 hoặc Mode2 như sau:

– Chế độ 1 là chế độ mặc định khi chọn loại bộ nhớ SRAM/PSRAM


(MTYP[0:1] = 0x0 hoặc 0x01 trong thanh ghi FSMC_BCRx)
– Chế độ 2 là chế độ mặc định khi chọn loại bộ nhớ NOR (MTYP[0:1] = 0x10 trong thanh
ghi FSMC_BCRx).

Chế độ 1 - SRAM/PSRAM (CRAM)

Các hình tiếp theo hiển thị các giao dịch đọc và ghi cho các chế độ được hỗ trợ, theo sau là
cấu hình bắt buộc của các thanh ghi FSMC _BCRx và FSMC_BTRx/FSMC_BWTRx.

RM0008 Phiên bản 21 517/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Hình 187. Truy cập đọc Mode1

Giao dịch bộ nhớ

A[25:0]

NBL[1:0]

NEx

KHÔNG

Tây Bắc
Cao

điều khiển dữ liệu


D[15:0]
bằng trí nhớ

(THÊM +1) (DỮ LIỆU + 1) 2 chu kỳ

Chu kỳ HCLK Chu kỳ HCLK HCLK

Dữ liệu được lấy mẫu dữ liệu nhấp nháy

ai14720c

1. NBL[1:0] bị đẩy xuống mức thấp trong quá trình truy cập đọc.

Hình 188. Truy cập ghi Mode1

Giao dịch bộ nhớ

A[25:0]

NBL[1:0]

NEx

KHÔNG

1HCLK
Tây Bắc

D[15:0] dữ liệu được điều khiển bởi FSMC

(THÊM +1) (DỮ LIỆU + 1)


Chu kỳ HCLK Chu kỳ HCLK

ai14721c

Một chu kỳ HCLK ở cuối giao dịch ghi giúp đảm bảo thời gian lưu giữ địa chỉ và dữ liệu
sau cạnh tăng NWE. Do sự hiện diện của một chu trình HCLK này, giá trị DATAST phải lớn
hơn 0 (DATAST > 0).

518/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

Bảng 109. Các trường bit FSMC_BCRx

Số bit Tên bit Giá trị cần đặt

31-20 Kín đáo 0x000

19 CBURSTRW 0x0 (không ảnh hưởng đến chế độ không đồng bộ)

18:16 CPSIZE 0x0 (không ảnh hưởng đến chế độ không đồng bộ)

15 ASYNCWAIT Đặt thành 1 nếu bộ nhớ hỗ trợ tính năng này. Ngược lại giữ ở mức 0.

14 EXTMOD 0x0

13 CHỜ ĐỢI 0x0 (không ảnh hưởng đến chế độ không đồng bộ)

12 WREN Khi cần thiết

11 WAITCFG không quan tâm

10 WRAPMOD 0x0

9 WAITPOL Chỉ có ý nghĩa nếu bit 15 là 1

số 8 Bùng nổ 0x0

7 Kín đáo 0x1

6 MẶT NẠ không quan tâm

5-4 MWID Khi cần thiết

3-2 MTYP[0:1] Nếu cần, hãy loại trừ 0x2 (NOR Flash)

1 MUXE 0x0

0 MBKEN 0x1

Bảng 110. Các trường bit FSMC_BTRx

Số bit Tên bit Giá trị cần đặt

31:30 Dành riêng 0x0

29-28 ACCMOD Đừng quan tâm

27-24 DATLAT Đừng quan tâm

23-20 CLKDIV Đừng quan tâm

19-16 BUSTURN Thời gian giữa NEx cao đến NEx thấp (BUSTURN HCLK)

Khoảng thời gian của giai đoạn truy cập thứ hai (chu kỳ DATAST+1
15-8 DỮ LIỆU HCLK cho truy cập ghi, chu kỳ DATAST+3 HCLK cho truy cập đọc).

Giá trị này không thể là 0 (tối thiểu là 1).

7-4 ADDHLD Đừng quan tâm

3-0 ADDSET[3:0] Thời lượng của giai đoạn truy cập đầu tiên (chu kỳ ADDSET+1 HCLK).

RM0008 Phiên bản 21 519/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Chế độ A - Chuyển đổi SRAM/PSRAM (CRAM) OE

Hình 189. Truy cập đọc ModeA

Giao dịch bộ nhớ

A[25:0]

NBL[1:0]

NEx

KHÔNG

Tây Bắc
Cao

dữ liệu được
D[15:0]
điều khiển bởi bộ nhớ

(THÊM +1) (DỮ LIỆU + 1) 2 chu

Chu kỳ HCLK Chu kỳ HCLK kỳ HCLK

Dữ liệu được lấy mẫu dữ liệu nhấp nháy

ai14722c

1. NBL[1:0] bị đẩy xuống mức thấp trong quá trình truy cập đọc.

Hình 190. Truy cập ghi ModeA

Giao dịch bộ nhớ

A[25:0]

NBL[1:0]

NEx

KHÔNG

1HCLK
Tây Bắc

D[15:0] dữ liệu được điều khiển bởi FSMC

(THÊM +1) (DỮ LIỆU + 1)


Chu kỳ HCLK Chu kỳ HCLK
ai14721c

520/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

Sự khác biệt so với chế độ 1 là việc chuyển đổi NOE và thời gian đọc và ghi độc lập.

Bảng 111. Trường bit FSMC_BCRx

Số
Tên bit Giá trị cần đặt
bit

31-20 Kín đáo 0x000

19 CBURSTRW 0x0 (không ảnh hưởng đến chế độ không đồng bộ)

18:16 CPSIZE 0x0 (không ảnh hưởng đến chế độ không đồng bộ)

Đặt thành 1 nếu bộ nhớ hỗ trợ tính năng này. Ngược lại giữ ở mức
15 CHỜ ĐỒNG BỘ
0.

14 EXTMOD 0x1

13 CHỜ ĐỢI 0x0 (không ảnh hưởng đến chế độ không đồng bộ)

12 WREN Khi cần thiết

11 WAITCFG không quan tâm

10 WRAPMOD 0x0

9 WAITPOL Chỉ có ý nghĩa nếu bit 15 là 1

số 8 Bùng nổ 0x0

7 Kín đáo 0x1

6 MẶT NẠ không quan tâm

5-4 MWID Khi cần thiết

3-2 MTYP[0:1] Nếu cần, hãy loại trừ 0x2 (NOR Flash)

1 MUXEN 0x0

0 MBKEN 0x1

Bảng 112. Trường bit FSMC_BTRx

Số
Tên bit Giá trị cần đặt
bit

31:30 Kín đáo 0x0

29-28 ACCMOD 0x0

27-24 DATLAT không quan tâm

23-20 CLKDIV không quan tâm

19-16 BUSTURN Thời gian giữa NEx cao đến NEx thấp (BUSTURN HCLK)

Khoảng thời gian của giai đoạn truy cập thứ hai (chu trình DATAST+3 HCLK) đối
15-8 DỮ LIỆU với truy cập đọc.

Giá trị này không thể là 0 (tối thiểu là 1).

7-4 THÊM không quan tâm

Khoảng thời gian của giai đoạn truy cập đầu tiên (chu trình ADDSET+1 HCLK)
3-0 THÊM[3:0]
cho các truy cập đọc.

RM0008 Phiên bản 21 521/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Bảng 113. Các trường bit FSMC_BWTRx

Số
Tên bit Giá trị cần đặt
bit

31:30 Kín đáo 0x0

29-28 ACCMOD 0x0

27-24 DATLAT không quan tâm

23-20 CLKDIV không quan tâm

19-16 BUSTURN Thời gian giữa NEx cao đến NEx thấp (BUSTURN HCLK)

Khoảng thời gian của giai đoạn truy cập thứ hai (chu kỳ DATAST+1
15-8 DỮ LIỆU HCLK cho truy cập ghi, chu kỳ DATAST+3 HCLK cho truy cập đọc).

Giá trị này không thể là 0 (tối thiểu là 1).

7-4 THÊM không quan tâm

Khoảng thời gian của giai đoạn truy cập đầu tiên (chu kỳ ADDSET+1
3-0 THÊM[3:0]
HCLK) để truy cập ghi.

Chế độ 2/B - NOR Flash

Hình 191. Truy cập đọc Mode2 và Mode B

Giao dịch bộ nhớ

A[25:0]

NADV

NEx

KHÔNG

Tây Bắc
Cao

điều khiển dữ liệu


D[15:0]
bằng trí nhớ

(THÊM +1) (DỮ LIỆU + 1) 2 chu kỳ

Chu kỳ HCLK Chu kỳ HCLK HCLK

Dữ liệu được lấy mẫu dữ liệu nhấp nháy

ai14724c

522/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

Hình 192. Truy cập ghi Mode2

Giao dịch bộ nhớ

A[25:0]

NADV

NEx

KHÔNG

1HCLK
Tây Bắc

D[15:0] dữ liệu được điều khiển bởi FSMC

(THÊM +1) (DỮ LIỆU + 1)


Chu kỳ HCLK Chu kỳ HCLK
ai14723b

Hình 193. Truy cập ghi chế độ B

Giao dịch bộ nhớ

A[25:0]

NADV

NEx

KHÔNG

1HCLK
Tây Bắc

D[15:0] dữ liệu được điều khiển bởi FSMC

(THÊM +1) (DỮ LIỆU + 1)


Chu kỳ HCLK Chu kỳ HCLK
ai15110b

Sự khác biệt với chế độ 1 là sự chuyển đổi của NWE và thời gian đọc và ghi độc lập khi chế
độ mở rộng được đặt (Chế độ B).

RM0008 Phiên bản 21 523/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Bảng 114. Trường bit FSMC_BCRx

Số
Tên bit Giá trị cần đặt
bit

31-20 Kín đáo 0x000

19 CBURSTRW 0x0 (không ảnh hưởng đến chế độ không đồng bộ)

18:16 Kín đáo 0x0 (không ảnh hưởng đến chế độ không đồng bộ)

Đặt thành 1 nếu bộ nhớ hỗ trợ tính năng này. Ngược lại giữ ở mức
15 CHỜ ĐỒNG BỘ
0.

14 EXTMOD 0x1 cho chế độ B, 0x0 cho chế độ 2

13 CHỜ ĐỢI 0x0 (không ảnh hưởng đến chế độ không đồng bộ)

12 WREN Khi cần thiết

11 WAITCFG không quan tâm

10 WRAPMOD 0x0

9 WAITPOL Chỉ có ý nghĩa nếu bit 15 là 1

số 8 Bùng nổ 0x0

7 Kín đáo 0x1

6 MẶT NẠ 0x1

5-4 MWID Khi cần thiết

3-2 MTYP[0:1] 0x2 (Bộ nhớ Flash NOR)

1 MUXEN 0x0

0 MBKEN 0x1

Bảng 115. Các trường bit FSMC_BTRx

Chút
Tên bit Giá trị cần đặt
con số

31:30 Kín đáo 0x0

29-28 ACCMOD 0x1

27-24 DATLAT không quan tâm

23-20 CLKDIV không quan tâm

19-16 BUSTURN Thời gian giữa NEx cao đến NEx thấp (BUSTURN HCLK)

Khoảng thời gian của giai đoạn truy cập thứ hai (chu trình DATAST+3 HCLK) đối
15-8 DỮ LIỆU với truy cập đọc.

Giá trị này không thể là 0 (tối thiểu là 1).

7-4 THÊM không quan tâm

Khoảng thời gian của giai đoạn truy cập đầu tiên (chu trình ADDSET+1 HCLK)
3-0 THÊM[3:0]
cho các truy cập đọc.

524/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

Bảng 116. Các trường bit FSMC_BWTRx

Số
Tên bit Giá trị cần đặt
bit

31:30 Kín đáo 0x0

29-28 ACCMOD 0x1

27-24 DATLAT không quan tâm

23-20 CLKDIV không quan tâm

19-16 BUSTURN Thời gian giữa NEx cao đến NEx thấp (BUSTURN HCLK)

Khoảng thời gian của giai đoạn truy cập thứ hai (chu kỳ DATAST+1
15-8 DỮ LIỆU HCLK cho truy cập ghi, chu kỳ DATAST+3 HCLK cho truy cập ghi).

Giá trị này không thể là 0 (tối thiểu là 1).

7-4 THÊM không quan tâm

Khoảng thời gian của giai đoạn truy cập đầu tiên (chu kỳ ADDSET+1
3-0 THÊM[3:0]
HCLK) để truy cập ghi.

Ghi chú: Thanh ghi FSMC_BWTRx chỉ hợp lệ nếu chế độ mở rộng được đặt (chế độ B), nếu không thì tất cả nội dung của
nó sẽ không được quan tâm.

Chế độ C - NOR Flash - Chuyển đổi OE

Hình 194. Truy cập đọc chế độ C

Giao dịch bộ nhớ

A[25:0]

NADV

NEx

KHÔNG

Tây Bắc
Cao

điều khiển dữ liệu


D[15:0]
bằng trí nhớ

(THÊM +1) (DỮ LIỆU + 1) 2 chu kỳ

Chu kỳ HCLK Chu kỳ HCLK HCLK

Dữ liệu được lấy mẫu dữ liệu nhấp nháy

ai14725c

RM0008 Phiên bản 21 525/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Hình 195. Truy cập ghi ở chế độ C

Giao dịch bộ nhớ

A[25:0]

NADV

NEx

KHÔNG

1HCLK
Tây Bắc

D[15:0] dữ liệu được điều khiển bởi FSMC

(THÊM +1) (DỮ LIỆU + 1)


Chu kỳ HCLK Chu kỳ HCLK
ai14723b

Sự khác biệt so với chế độ 1 là việc chuyển đổi NOE và thời gian đọc và ghi độc lập.

Bảng 117. Trường bit FSMC_BCRx

Bit số Tên bit Giá trị cần đặt

31-20 Kín đáo 0x000

19 CBURSTRW 0x0 (không ảnh hưởng đến chế độ không đồng bộ)

18:16 CPSIZE 0x0 (không ảnh hưởng đến chế độ không đồng bộ)

Đặt thành 1 nếu bộ nhớ hỗ trợ tính năng này. Ngược lại giữ ở
15 CHỜ ĐỒNG BỘ
mức 0.

14 EXTMOD 0x1

13 CHỜ ĐỢI 0x0 (không ảnh hưởng đến chế độ không đồng bộ)

12 WREN Khi cần thiết

11 WAITCFG không quan tâm

10 WRAPMOD 0x0

9 WAITPOL Chỉ có ý nghĩa nếu bit 15 là 1

số 8 Bùng nổ 0x0

7 Kín đáo 0x1

6 MẶT NẠ 0x1

5-4 MWID Khi cần thiết

3-2 MTYP[0:1] 0x2 (Bộ nhớ Flash NOR)

526/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

Bảng 117. Các trường bit FSMC_BCRx (tiếp theo)

Bit số Tên bit Giá trị cần đặt

1 MUXEN 0x0

0 MBKEN 0x1

Bảng 118. Trường bit FSMC_BTRx

Chút
Tên bit Giá trị cần đặt
con số

31:30 Kín đáo 0x0

29-28 ACCMOD 0x2

27-24 DATLAT 0x0

23-20 CLKDIV 0x0

19-16 BUSTURN Thời gian giữa NEx cao đến NEx thấp (BUSTURN HCLK)

Khoảng thời gian của giai đoạn truy cập thứ hai (chu trình DATAST+3 HCLK) đối
15-8 DỮ LIỆU với truy cập đọc.

Giá trị này không thể là 0 (tối thiểu là 1).

7-4 THÊM không quan tâm

Khoảng thời gian của giai đoạn truy cập đầu tiên (chu trình ADDSET+1 HCLK)
3-0 THÊM[3:0]
cho các truy cập đọc.

Bảng 119. Các trường bit FSMC_BWTRx

Chút
Tên bit Giá trị cần đặt
con số

31:30 Kín đáo 0x0

29-28 ACCMOD 0x2

27-24 DATLAT không quan tâm

23-20 CLKDIV không quan tâm

19-16 BUSTURN Thời gian giữa NEx cao đến NEx thấp (BUSTURN HCLK)

Khoảng thời gian của giai đoạn truy cập thứ hai (chu kỳ DATAST+1
15-8 DỮ LIỆU HCLK cho truy cập ghi, chu kỳ DATAST+3 HCLK cho truy cập ghi).

Giá trị này không thể là 0 (tối thiểu là 1).

7-4 THÊM không quan tâm

Khoảng thời gian của giai đoạn truy cập đầu tiên (chu kỳ ADDSET+1
3-0 THÊM[3:0]
HCLK) để truy cập ghi.

RM0008 Phiên bản 21 527/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Chế độ D - truy cập không đồng bộ với địa chỉ mở rộng

Hình 196. Truy cập đọc chế độ D

Giao dịch bộ nhớ

A[25:0]

NADV

NEx

KHÔNG

Tây Bắc
Cao

dữ liệu được
D[15:0]
điều khiển bởi bộ nhớ

(THÊM +1) (DỮ LIỆU + 1) 2HCK


Chu kỳ HCLK Chu kỳ HCLK chu kỳ
(THÊM + 1)
Chu kỳ HCLK Dữ liệu được lấy mẫu dữ liệu nhấp nháy
ai14726c

Hình 197. Truy cập ghi chế độ D

Giao dịch bộ nhớ

A[25:0]

NADV

NEx

KHÔNG

1HCLK
Tây Bắc

D[15:0] dữ liệu được điều khiển bởi FSMC

(THÊM +1) (DỮ LIỆU + 1)


Chu kỳ HCLK Chu kỳ HCLK
(THÊM + 1)
Chu kỳ HCLK
ai14727c

528/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

Sự khác biệt với mode1 là việc chuyển đổi NOE tiếp tục chuyển đổi sau khi NADV thay đổi
và thời gian đọc và ghi độc lập.

Bảng 120. Trường bit FSMC_BCRx

Bit số Tên bit Giá trị cần đặt

31-20 Kín đáo 0x000

19 CBURSTRW 0x0 (không ảnh hưởng đến chế độ không đồng bộ)

18:16 CPSIZE 0x0 (không ảnh hưởng đến chế độ không đồng bộ)

Đặt thành 1 nếu bộ nhớ hỗ trợ tính năng này. Ngược lại giữ ở
15 CHỜ ĐỒNG BỘ
mức 0.

14 EXTMOD 0x1

13 CHỜ ĐỢI 0x0 (không ảnh hưởng đến chế độ không đồng bộ)

12 WREN Khi cần thiết

11 WAITCFG không quan tâm

10 WRAPMOD 0x0

9 WAITPOL Chỉ có ý nghĩa nếu bit 15 là 1

số 8 Bùng nổ 0x0

7 Kín đáo 0x1

6 MẶT NẠ Đặt theo hỗ trợ bộ nhớ

5-4 MWID Khi cần thiết

3-2 MTYP[0:1] Khi cần thiết

1 MUXEN 0x0

0 MBKEN 0x1

Bảng 121. Trường bit FSMC_BTRx

Bit số Tên bit Giá trị cần đặt

31:30 Kín đáo 0x0

29-28 ACCMOD 0x3

27-24 DATLAT không quan tâm

23-20 CLKDIV không quan tâm

19-16 BUSTURN Thời gian giữa NEx cao đến NEx thấp (BUSTURN HCLK)

Khoảng thời gian của giai đoạn truy cập thứ hai (chu trình DATAST+3 HCLK)
15-8 DỮ LIỆU
đối với truy cập đọc. Giá trị này không thể là 0 (tối thiểu là 1)

Khoảng thời gian của giai đoạn giữa của quá trình truy cập đọc (chu kỳ
7-4 THÊM
ADDHLD+1 HCLK)

Khoảng thời gian của giai đoạn truy cập đầu tiên (chu trình ADDSET+1 HCLK)
3-0 THÊM[3:0]
cho các truy cập đọc.

RM0008 Phiên bản 21 529/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Bảng 122. Các trường bit FSMC_BWTRx

Bit số Tên bit Giá trị cần đặt

31:30 Kín đáo 0x0

29-28 ACCMOD 0x3

27-24 DATLAT 0x0

23-20 CLKDIV 0x0

19-16 BUSTURN Thời gian giữa NEx cao đến NEx thấp (BUSTURN HCLK)

Khoảng thời gian của giai đoạn truy cập thứ hai (chu kỳ DATAST+3 HCLK)
15-8 DỮ LIỆU
để truy cập ghi. Giá trị này không thể là 0 (tối thiểu là 1)

Khoảng thời gian của giai đoạn giữa của quyền truy cập ghi (chu kỳ
7-4 THÊM
ADDHLD+1 HCLK)

Khoảng thời gian của giai đoạn truy cập đầu tiên (chu kỳ ADDSET+1
3-0 THÊM[3:0]
HCLK) để truy cập ghi.

Chế độ trộn - truy cập không đồng bộ được ghép kênh vào bộ nhớ NOR Flash

Hình 198. Truy cập đọc đa kênh


Giao dịch bộ nhớ

A[25:16]

NADV

NEx

KHÔNG

Tây Bắc
Cao

điều khiển dữ liệu


QUẢNG CÁO[15:0] Địa chỉ thấp hơn
bằng trí nhớ
chu trình 1HCLK

(THÊM +1) (DỮ LIỆU + 1) 2HCK (BUSTURN + 1)(1)

Chu kỳ HCLK Chu kỳ HCLK chu kỳ Chu kỳ HCLK


(THÊM + 1)
Chu kỳ HCLK
Dữ liệu được lấy mẫu dữ liệu nhấp nháy
ai14728c

1. Độ trễ quay vòng của bus (BUSTURN + 1) và độ trễ giữa các giao dịch song song trùng nhau nên BUSTURN
5 không ảnh hưởng.

530/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

Hình 199. Truy cập ghi đa kênh

Giao dịch bộ nhớ

A[25:16]

NADV

NEx

KHÔNG

1HCLK
Tây Bắc

QUẢNG CÁO[15:0] Địa chỉ thấp hơn dữ liệu được điều khiển bởi FSMC

(THÊM +1) THÊM (DỮ LIỆU + 2)


Chu kỳ HCLK Chu kỳ HCLK Chu kỳ HCLK
ai14729c

Sự khác biệt với chế độ D là ổ đĩa của (các) byte địa chỉ thấp hơn trên bus dữ liệu.

Bảng 123. Trường bit FSMC_BCRx

Bit số Tên bit Giá trị cần đặt

31-21 Kín đáo 0x000

19 CBURSTRW 0x0 (không ảnh hưởng đến chế độ không đồng bộ)

18:16 CPSIZE 0x0 (không ảnh hưởng đến chế độ không đồng bộ)

Đặt thành 1 nếu bộ nhớ hỗ trợ tính năng này. Ngược lại giữ ở mức
15 CHỜ ĐỒNG BỘ
0.

14 EXTMOD 0x0

13 CHỜ ĐỢI 0x0 (không ảnh hưởng đến chế độ không đồng bộ)

12 WREN Khi cần thiết

11 WAITCFG không quan tâm

10 WRAPMOD 0x0

9 WAITPOL Chỉ có ý nghĩa nếu bit 15 là 1

số 8 Bùng nổ 0x0

7 Kín đáo 0x1

6 MẶT NẠ 0x1

RM0008 Phiên bản 21 531/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Bảng 123. Các trường bit FSMC_BCRx (tiếp theo)

Bit số Tên bit Giá trị cần đặt

5-4 MWID Khi cần thiết

3-2 MTYP[0:1] 0x2 (Bộ nhớ Flash NOR)

1 MUXEN 0x1

0 MBKEN 0x1

Bảng 124. Trường bit FSMC_BTRx

Bit số Tên bit Giá trị cần đặt

31:30 Kín đáo 0x0

29-28 ACCMOD 0x0

27-24 DATLAT không quan tâm

23-20 CLKDIV không quan tâm

Khoảng thời gian của giai đoạn truy cập cuối cùng (BUSTURN+1 HCLK)
19-16 BẮT ĐẦU

Khoảng thời gian của giai đoạn truy cập thứ hai (chu trình DATAST+3
15-8 DỮ LIỆU HCLK cho truy cập đọc và chu trình DATAST+1 HCLK cho truy cập ghi).
Giá trị này không thể là 0 (tối thiểu là 1)

Khoảng thời gian của giai đoạn truy cập giữa (chu kỳ ADDHLD+1
7-4 THÊM
HCLK). Giá trị này không được bằng 0 (tối thiểu là 1).

3-0 ADDSET[3:0] Thời lượng của giai đoạn truy cập đầu tiên (chu kỳ ADDSET+1 HCLK).

Quản lý WAIT trong truy cập không đồng bộ

Nếu bộ nhớ không đồng bộ xác nhận tín hiệu WAIT để cho biết rằng nó chưa sẵn sàng chấp nhận hoặc
cung cấp dữ liệu thì bit ASYNCWAIT phải được đặt trong thanh ghi FSMC_BCRx.

Nếu tín hiệu WAIT đang hoạt động (cao hay thấp tùy thuộc vào bit WAITPOL), thì giai đoạn truy cập thứ
hai (Giai đoạn thiết lập dữ liệu) được lập trình bởi các bit DATAST sẽ được kéo dài cho đến
khi WAIT không hoạt động. Không giống như giai đoạn thiết lập dữ liệu, các giai đoạn truy cập đầu tiên
(giai đoạn thiết lập địa chỉ và giữ địa chỉ), được lập trình bởi các bit ADDSET[3:0] và ADDHLD, không
nhạy cảm với WAIT và do đó chúng không bị kéo dài.

Giai đoạn thiết lập dữ liệu (DATAST trong thanh ghi FSMC_BTRx) phải được lập trình sao cho tín hiệu
WAIT đáp ứng các điều kiện sau:

• Đối với truy cập đọc: WAIT có thể được phát hiện 4 chu kỳ HCLK trước khi dữ liệu được lấy mẫu hoặc 6
chu kỳ HCLK trước khi NOE được xác nhận lại (tham khảo Hình 200).

• Đối với quyền truy cập ghi: WAIT có thể được phát hiện 4 chu kỳ HCLK trước khi xác nhận lại NWE
(tham khảo Hình 201).

532/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

1. Bộ nhớ xác nhận tín hiệu WAIT được căn chỉnh theo NOE/NWE để chuyển đổi:

DỮ LIỆU 4 HCLK + max_wait_assertion_time

2. Bộ nhớ xác nhận tín hiệu WAIT được căn chỉnh theo NEx (hoặc NOE/NWE không chuyển đổi):
nếu như

max_wait_assertion_time địa chỉ_phase hold_phase +

sau đó

DỮ LIỆU 4 HCLK max_wait_assertion_time


+ address_phase – – hold_phase

nếu không thì

DỮ LIỆU 4 HCLK

trong đó max_wait_assertion_time là thời gian tối đa mà bộ nhớ sử dụng để xác nhận tín
hiệu WAIT khi NEx/NOE/NWE ở mức thấp.

Hình 200 và Hình 201 hiển thị số chu kỳ xung nhịp HCLK được thêm vào quyền truy cập bộ nhớ
sau khi WAIT được bộ nhớ không đồng bộ giải phóng (độc lập với các trường hợp trên).

Hình 200. Chờ không đồng bộ trong quá trình truy cập đọc

Giao dịch bộ nhớ

A[25:0]

giai đoạn địa chỉ giai đoạn thiết lập dữ liệu

NEx

CHỜ ĐỢI không quan tâm không quan tâm

KHÔNG

D[15:0] dữ liệu được điều khiển bởi bộ nhớ

4HCLK 2HCLK

Dữ liệu được lấy mẫu


ai15796c

1. Độ phân cực của NWAIT phụ thuộc vào cài đặt bit WAITPOL trong thanh ghi FSMC_BCRx.

RM0008 Phiên bản 21 533/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Hình 201. Chờ không đồng bộ trong quá trình truy cập ghi

Giao dịch bộ nhớ

A[25:0]

giai đoạn địa chỉ giai đoạn thiết lập dữ liệu

NEx

CHỜ ĐỢI không quan tâm không quan tâm

1HCLK

Tây Bắc

D[15:0] dữ liệu được điều khiển bởi FSMC

3HCLK

ai15797c

1. Độ phân cực của NWAIT phụ thuộc vào cài đặt bit WAITPOL trong thanh ghi FSMC_BCRx.

534/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

21.5.5 Giao dịch đồng bộ

Đồng hồ bộ nhớ, CLK, là ước số của HCLK theo giá trị của tham số CLKDIV.

Bộ nhớ Flash NOR chỉ định thời gian tối thiểu từ khi xác nhận NADV đến mức CLK cao. Để đáp ứng
ràng buộc này, FSMC không cấp xung nhịp cho bộ nhớ trong chu kỳ xung nhịp bên trong đầu tiên
của truy cập đồng bộ (trước khi xác nhận NADV). Điều này đảm bảo rằng cạnh lên của đồng hồ bộ
nhớ xảy ra ở giữa xung thấp NADV.

Độ trễ dữ liệu so với độ trễ NOR Flash

Độ trễ dữ liệu là số chu kỳ phải chờ trước khi lấy mẫu dữ liệu. Giá trị DATLAT phải nhất
quán với giá trị độ trễ được chỉ định trong thanh ghi cấu hình NOR Flash. FSMC không bao gồm
chu kỳ xung nhịp khi NADV có độ trễ dữ liệu thấp.

Thận trọng: Một số bộ nhớ NOR Flash bao gồm chu kỳ NADV Thấp trong số lần độ trễ dữ liệu, do đó, mối quan hệ
chính xác giữa độ trễ NOR Flash và tham số FMSC DATLAT có thể là:

• NOR Độ trễ flash = (DATLAT + 2) chu kỳ xung nhịp CLK

• NOR Độ trễ flash = (DATLAT + 3) chu kỳ xung nhịp CLK

Một số ký ức gần đây khẳng định NWAIT trong giai đoạn trễ. Trong những trường hợp như vậy DATLAT
có thể được đặt ở giá trị tối thiểu. Kết quả là FSMC lấy mẫu dữ liệu và đợi đủ lâu để đánh giá
xem dữ liệu có hợp lệ hay không. Do đó, FSMC phát hiện khi bộ nhớ hết độ trễ và dữ liệu thực
được lấy.

Các bộ nhớ khác không xác nhận NWAIT trong thời gian trễ. Trong trường hợp này, độ trễ phải
được đặt chính xác cho cả FSMC và bộ nhớ, nếu không, dữ liệu không hợp lệ sẽ bị nhầm thành dữ
liệu tốt hoặc dữ liệu hợp lệ sẽ bị mất trong giai đoạn đầu truy cập bộ nhớ.

Truyền một lần

Khi ngân hàng đã chọn được định cấu hình ở chế độ cụm để truy cập đồng bộ, ví dụ: nếu
giao dịch cụm đơn AHB được yêu cầu trên bộ nhớ 16 bit, thì FSMC sẽ thực hiện giao dịch
cụm có độ dài 1 (nếu truyền AHB là 16 bit), hoặc độ dài 2 (nếu truyền AHB là 32 bit) và hủy xác
nhận tín hiệu chọn chip khi dữ liệu cuối cùng được nhấp nháy.

Rõ ràng, việc truyền như vậy không hiệu quả nhất về mặt chu kỳ (so với việc đọc không
đồng bộ). Tuy nhiên, việc truy cập không đồng bộ ngẫu nhiên trước tiên sẽ yêu cầu lập trình lại
chế độ truy cập bộ nhớ, chế độ này sẽ tồn tại lâu hơn.

Trang xuyên ranh giới cho RAM di động 1.5

RAM di động 1.5 không cho phép truy cập hàng loạt vượt qua ranh giới trang. Bộ điều khiển
FSMC cho phép tự động phân chia quyền truy cập cụm khi đạt đến kích thước trang bộ nhớ
bằng cách định cấu hình các bit CPSIZE trong thanh ghi FSMC_BCR1 theo kích thước trang bộ nhớ.

Quản lý chờ

Đối với bộ nhớ NOR Flash đồng bộ, NWAIT được đánh giá sau khoảng thời gian trễ được lập trình,
(DATLAT+2) chu kỳ xung nhịp CLK.

RM0008 Phiên bản 21 535/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Nếu NWAIT được cảm nhận là đang hoạt động (mức thấp khi WAITPOL = 0, mức cao khi WAITPOL = 1),
trạng thái chờ sẽ được chèn cho đến khi NWAIT được cảm nhận là không hoạt động (mức cao khi WAITPOL
= 0, mức thấp khi WAITPOL = 1).

Khi NWAIT không hoạt động, dữ liệu được coi là hợp lệ ngay lập tức (bit WAITCFG = 1) hoặc trên cạnh
đồng hồ tiếp theo (bit WAITCFG = 0).

Trong quá trình chèn trạng thái chờ thông qua tín hiệu NWAIT, bộ điều khiển tiếp tục gửi các
xung đồng hồ đến bộ nhớ, giữ cho các tín hiệu cho phép lựa chọn và đầu ra của chip hợp lệ và không
coi dữ liệu là hợp lệ.

Có hai cấu hình định thời cho tín hiệu NOR Flash NWAIT ở chế độ truyền liên tục:

• Bộ nhớ flash xác nhận tín hiệu NWAIT một chu kỳ dữ liệu trước trạng thái chờ (mặc định
sau khi thiết lập lại)

• Bộ nhớ flash xác nhận tín hiệu NWAIT trong trạng thái chờ

Hai cấu hình trạng thái chờ NOR Flash này được FSMC hỗ trợ, riêng lẻ cho từng chip được chọn, nhờ
bit WAITCFG trong các thanh ghi FSMC_BCRx (x = 0..3).

Hình 202. Cấu hình chờ

Giao dịch bộ nhớ = cụm 4 nửa từ

HCLK

CLK

địa chỉ [25:16]


A[25:16]

NADV

CHỜ ĐỢI
(WAITCFG = 0)

CHỜ ĐỢI
(WAITCFG = 1)
trạng thái chờ được chèn

A/D[15:0] aaddr[15:0] dữ liệu dữ liệu dữ liệu

ai15798b

536/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

Hình 203. Chế độ đọc đa kênh đồng bộ - NOR, PSRAM (CRAM)


Giao dịch bộ nhớ = cụm 4 nửa từ

HCLK

CLK

A[25:16] địa chỉ [25:16]

NEx

KHÔNG

Cao
Tây Bắc

NADV

CHỜ ĐỢI

(WAITCFG=
0)

(DATLAT + 2) trạng thái chờ được chèn

Chu kỳ CLK

A/D[15:0] dữ liệu dữ liệu dữ liệu dữ liệu


Địa chỉ [15:0]

1 đồng hồ 1 đồng hồ

xe đạp xe đạp
Tủ dữ liệu Tủ dữ liệu
ai17723f

1. Đầu ra làn byte BL không được hiển thị; đối với quyền truy cập NOR, chúng được giữ ở mức cao và đối với quyền truy cập PSRAM (CRAM),
chúng được giữ ở mức thấp.

2. Phân cực NWAIT được đặt thành 0.

Bảng 125. Trường bit FSMC_BCRx

Bit số Tên bit Giá trị cần đặt

31-20 Kín đáo 0x000

19 CBURSTRW Không ảnh hưởng đến việc đọc đồng bộ

18-16 CPSIZE Khi cần (0x1 cho CRAM 1.5)

15 ASCYCWAIT 0x0

14 EXTMOD 0x0

13 CHỜ ĐỢI Đặt thành 1 nếu bộ nhớ hỗ trợ tính năng này, nếu không thì giữ ở mức 0.

12 WREN không ảnh hưởng đến việc đọc đồng bộ

11 WAITCFG được đặt theo bộ nhớ

10 WRAPMOD 0x0

9 WAITPOL được đặt theo bộ nhớ

số 8 Bùng nổ 0x1

7 Kín đáo 0x1

6 MẶT NẠ Đặt theo hỗ trợ bộ nhớ (bộ nhớ NOR Flash)

5-4 MWID Khi cần thiết

RM0008 Phiên bản 21 537/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Bảng 125. Các trường bit FSMC_BCRx (tiếp theo)

Bit số Tên bit Giá trị cần đặt

3-2 MTYP[0:1] 0x1 hoặc 0x2

1 MUXEN Khi cần thiết

0 MBKEN 0x1

Bảng 126. Các trường bit FSMC_BTRx

Bit số Tên bit Giá trị cần đặt

31:30 Kín đáo 0x0

29:28 ACCMOD 0x0

27-24 DATLAT Độ trễ dữ liệu

0x0 để nhận CLK = HCLK (không được hỗ trợ)


23-20 CLKDIV
0x1 được CLK = 2 × HCLK

19-16 BUSTURN không có hiệu lực

15-8 DỮ LIỆU không quan tâm

7-4 ADDHLD Đừng quan tâm

3-0 ADDSET[3:0] Đừng quan tâm

538/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

Hình 204. Chế độ ghi đa kênh đồng bộ - PSRAM (CRAM)

Giao dịch bộ nhớ = bùng nổ 2 nửa từ

HCLK

CLK

A[25:16] địa chỉ [25:16]

NEx

Hi-Z
KHÔNG

Tây Bắc

NADV

CHỜ ĐỢI

(WAITCFG = 0)

(DATLAT + 2) trạng thái chờ được chèn

Chu kỳ CLK

A/D[15:0] dữ liệu dữ liệu


Địa chỉ [15:0]

1 đồng hồ 1 đồng hồ ai14731f

1. Bộ nhớ phải phát tín hiệu NWAIT trước một chu kỳ, do đó WAITCFG phải được lập trình về 0.

2. Phân cực NWAIT được đặt thành 0.

3. Các đầu ra Byte Lane (NBL) không được hiển thị, chúng được giữ ở mức thấp trong khi NEx hoạt động.

Bảng 127. Trường bit FSMC_BCRx


Bit số Tên bit Giá trị cần đặt

31-20 Kín đáo 0x000

19 CBURSTRW 0x1

18-16 CPSIZE Khi cần (0x1 cho CRAM 1.5)

15 ASCYCWAIT 0x0

14 EXTMOD 0x0

13 CHỜ ĐỢI Đặt thành 1 nếu bộ nhớ hỗ trợ tính năng này, nếu không thì giữ ở mức 0.

12 WREN 0x1

11 WAITCFG 0x0

10 WRAPMOD 0x0

RM0008 Phiên bản 21 539/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Bảng 127. Các trường bit FSMC_BCRx (tiếp theo)

Bit số Tên bit Giá trị cần đặt

9 WAITPOL được đặt theo bộ nhớ

số 8
BURSTEN không ảnh hưởng đến việc ghi đồng bộ

7 Kín đáo 0x1

6 MẶT NẠ Đặt theo hỗ trợ bộ nhớ

5-4 MWID Khi cần thiết

3-2 MTYP[0:1] 0x1

1 MUXEN Khi cần thiết

0 MBKEN 0x1

Bảng 128. Trường bit FSMC_BTRx

Bit số Tên bit Giá trị cần đặt

31:30 Kín đáo 0x0

29:28 ACCMOD 0x0

27-24 DATLAT Độ trễ dữ liệu

0x0 để nhận CLK = HCLK (không được hỗ trợ)


23-20 CLKDIV
0x1 được CLK = 2 × HCLK

19-16 BUSTURN Thời gian giữa NEx cao đến NEx thấp (BUSTURN HCLK)

15-8 DỮ LIỆU không quan tâm

7-4 ADDHLD Đừng quan tâm

3-0 ADDSET[3:0] Đừng quan tâm

540/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

21.5.6 Thanh ghi điều khiển NOR/PSRAM

Các thanh ghi điều khiển NOR/PSRAM phải được truy cập bằng từ (32 bit).

Các thanh ghi điều khiển chọn chip SRAM/NOR-Flash 1..4 (FSMC_BCR1..4)

Độ lệch địa chỉ: 0xA000 0000 + 8 * (x – 1), x = 1...4

Giá trị đặt lại: 0x0000 30DB cho Ngân hàng1 và 0x0000 30D2 cho Ngân hàng 2 đến 4

Thanh ghi này chứa thông tin điều khiển của từng dãy bộ nhớ, được sử dụng cho các bộ nhớ
SRAM, PSRAM và NOR Flash.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

NERW
CSIZE[2:0]

NEKBM
NEXUM

C

ẶN
M
ỜỢ
DOMTXE

TẠ
I

LOPTIAW
GFCTIAW

]0:1[DIWM

]0:1[PYTM
ùn
B
Kín đáo

gnổ
DOMPARW
WRTSRUBC

TIAWCYCSA

íđ

o K
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31: 20 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 19 CBURSTRW: Cho phép ghi liên tục.

Đối với bộ nhớ RAM di động (PSRAM), bit này cho phép giao thức cụm đồng bộ trong quá trình ghi. Bit
cho phép truy cập đọc đồng bộ là bit BURSTEN trong thanh ghi FSMC_BCRx.

0: Thao tác ghi luôn được thực hiện ở chế độ không đồng bộ

1: Hoạt động ghi được thực hiện ở chế độ đồng bộ.

Bit 18: 16 CPSIZE[2:0]: Kích thước trang CRAM.


Chúng được sử dụng cho RAM di động 1.5 không cho phép truy cập hàng loạt để vượt qua

địa chỉ ranh giới giữa các trang. Khi các bit này được định cấu hình, bộ điều khiển FSMC sẽ

tự động phân chia quyền truy cập cụm khi đạt đến kích thước trang bộ nhớ (tham khảo biểu dữ liệu bộ

nhớ để biết kích thước trang).


000: Không phân tách cụm khi vượt qua ranh giới trang (mặc định sau khi đặt lại)

001: 128 byte

010: 256 byte

011: 512 byte

100: 1024 byte


Khác: dành riêng.

Bit 15 ASYNCWAIT: Tín hiệu chờ trong quá trình truyền không đồng bộ

Bit này cho phép/vô hiệu hóa FSMC sử dụng tín hiệu chờ ngay cả trong giao thức không đồng bộ.

0: Tín hiệu NWAIT không được tính đến khi chạy giao thức không đồng bộ (mặc định sau khi đặt
lại)

1: Tín hiệu NWAIT được tính đến khi chạy giao thức không đồng bộ

RM0008 Phiên bản 21 541/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Bit 14 EXTMOD: Bật chế độ mở rộng.

Bit này cho phép FSMC lập trình thời gian ghi cho các truy cập không đồng bộ không được
ghép kênh bên trong thanh ghi FSMC_BWTR, do đó tạo ra các thời gian khác nhau cho các hoạt động
đọc và ghi.

0: các giá trị bên trong thanh ghi FSMC_BWTR không được tính đến (mặc định sau khi đặt lại)

1: các giá trị bên trong thanh ghi FSMC_BWTR được tính đến

Lưu ý: Khi chế độ mở rộng bị tắt, FSMC có thể hoạt động ở Chế độ 1 hoặc Chế độ 2
như sau:

– Chế độ 1 là chế độ mặc định khi chọn loại bộ nhớ SRAM/PSRAM


(MTYP [0:1]=0x0 hoặc 0x01)

– Mode 2 là chế độ mặc định khi chọn loại bộ nhớ NOR


(MTYP [0:1]= 0x10).

Bit 13 WAITEN: Bit kích hoạt chờ.

Bit này bật/tắt tính năng chèn trạng thái chờ thông qua tín hiệu NWAIT khi truy cập bộ nhớ Flash ở chế
độ đồng bộ.

0: Tín hiệu NWAIT bị tắt (mức của nó không được tính đến, không có trạng thái chờ được chèn sau khoảng
thời gian chờ Flash được lập trình)

1: Tín hiệu NWAIT được bật (mức của nó được tính đến sau khoảng thời gian trễ Flash được lập trình
để chèn trạng thái chờ nếu được xác nhận) (mặc định sau khi đặt lại)

Bit 12 WREN: Ghi bit cho phép.

Bit này cho biết liệu hoạt động ghi có được bật/tắt trong ngân hàng hay không bởi
FSMC:

0: FSMC vô hiệu hóa hoạt động ghi trong ngân hàng, báo cáo lỗi AHB,

1: Hoạt động ghi được kích hoạt cho ngân hàng bởi FSMC (mặc định sau khi đặt lại).

Bit 11 WAITCFG: Cấu hình thời gian chờ.

Tín hiệu NWAIT cho biết liệu dữ liệu từ bộ nhớ có hợp lệ hay phải chèn trạng thái chờ khi truy cập bộ
nhớ Flash ở chế độ đồng bộ. Bit cấu hình này xác định xem NWAIT có được bộ nhớ xác nhận một
chu kỳ xung nhịp trước trạng thái chờ hay trong trạng thái chờ hay không:

0: Tín hiệu NWAIT đang hoạt động một chu kỳ dữ liệu trước trạng thái chờ (mặc định sau khi đặt lại),

1: Tín hiệu NWAIT hoạt động trong trạng thái chờ (không được sử dụng cho PRAM).

Bit 10 WRAPMOD: Hỗ trợ chế độ chụp liên tục.

Xác định xem bộ điều khiển có chia tách truy cập gói AHB thành hai truy cập tuyến tính hay không. Chỉ
hợp lệ khi truy cập bộ nhớ ở chế độ chụp liên tục

0: Cụm bao bọc trực tiếp không được bật (mặc định sau khi đặt lại),

1: Đã bật cụm gói trực tiếp.

Lưu ý: Bit này không có tác dụng vì CPU và DMA không thể tạo ra cụm gói
chuyển nhượng.

Bit 9 WAITPOL: Bit phân cực tín hiệu chờ.

Xác định cực tính của tín hiệu chờ từ bộ nhớ. Chỉ hợp lệ khi truy cập bộ nhớ ở chế độ chụp liên
tục:

0: NWAIT hoạt động ở mức thấp (mặc định sau khi reset),

1: NWAIT hoạt động ở mức cao.

Bit 8 BURSTEN: Bit cho phép chụp liên tục.

Bit này cho phép/vô hiệu hóa các truy cập đồng bộ trong quá trình đọc. Nó chỉ có hiệu lực đối với các
bộ nhớ đồng bộ hoạt động ở chế độ cụm:

0: Chế độ chụp liên tục bị tắt (mặc định sau khi đặt lại). Truy cập đọc được thực hiện ở
chế độ không đồng bộ.

1: Bật chế độ chụp liên tục. Truy cập đọc được thực hiện ở chế độ đồng bộ.

542/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

Bit 7 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 6 FACCEN: Cho phép truy cập flash

Cho phép hoạt động truy cập bộ nhớ NOR Flash.

0: Truy cập bộ nhớ NOR Flash tương ứng bị vô hiệu hóa

1: Truy cập bộ nhớ NOR Flash tương ứng được bật (mặc định sau khi đặt lại)

Bits 5:4 MWID[1:0]: Độ rộng bus dữ liệu bộ nhớ.

Xác định độ rộng của thiết bị bộ nhớ ngoài, hợp lệ cho tất cả các loại bộ nhớ.

00: 8 bit,

01: 16 bit (mặc định sau khi reset),

10: dành riêng, không sử dụng,

11: dành riêng, không sử dụng.

Bit 3:2 MTYP[1:0]: Loại bộ nhớ.

Xác định loại bộ nhớ ngoài được gắn vào ngân hàng bộ nhớ tương ứng:

00: SRAM (mặc định sau khi reset cho Bank 2...4)

01: PSRAM (CRAM)

10: NOR Flash (mặc định sau khi reset cho Bank 1) 11:
dành riêng

Bit 1 MUXEN: Bit cho phép ghép kênh địa chỉ/dữ liệu.

Khi bit này được đặt, các giá trị địa chỉ và dữ liệu sẽ được ghép kênh trên bus dữ liệu, chỉ hợp lệ với

bộ nhớ NOR và PSRAM:

0: Địa chỉ/Dữ liệu không được ghép kênh

1: Địa chỉ/Dữ liệu được ghép kênh trên databus (mặc định sau khi reset)

Bit 0 MBKEN: Bit kích hoạt ngân hàng bộ nhớ.

Kích hoạt ngân hàng bộ nhớ. Sau khi bật lại Bank1, tất cả những cái khác sẽ bị tắt.

Việc truy cập ngân hàng bị vô hiệu hóa sẽ gây ra LỖI trên xe buýt AHB.

0: Ngân hàng bộ nhớ tương ứng bị vô hiệu hóa 1: Ngân

hàng bộ nhớ tương ứng được kích hoạt

RM0008 Phiên bản 21 543/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Các thanh ghi thời gian chọn chip SRAM/NOR-Flash 1..4 (FSMC_BTR1..4)

Độ lệch địa chỉ: 0xA000 0000 + 0x04 + 8 * (x – 1), x = 1..4

Giá trị đặt lại: 0x0FFF FFFF

Các bit FSMC_BTRx được ghi bằng phần mềm để thêm độ trễ khi kết thúc giao dịch đọc/
ghi. Độ trễ này cho phép khớp thời gian tối thiểu giữa các giao dịch liên tiếp
(tEHEL từ NEx cao đến FSMC_NEx thấp) và thời gian tối đa mà bộ nhớ yêu cầu để giải phóng bus
dữ liệu sau khi truy cập đọc (tEHQZ).

Thanh ghi này chứa thông tin điều khiển của từng dãy bộ nhớ, được sử dụng cho các bộ nhớ
SRAM, PSRAM và NOR Flash. Nếu bit EXTMOD được đặt trong thanh ghi FSMC_BCRx thì thanh ghi
này được phân vùng để truy cập ghi và đọc, nghĩa là có sẵn 2 thanh ghi : một để định cấu
hình quyền truy cập đọc (thanh ghi này) và một để định cấu hình quyền truy cập ghi
(thanh ghi FSMC_BWTRx).

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
]0:3[VIDKLC
]0:3[TALTAD

ỮL
]0:7[UỆI D
íđ
K

]0:3[MÊHT
]0:3[MÊHT

]0:1[DOMCCA
o

]0:3[NRUTSUB

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:30 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 29:28 ACCMOD[1:0]: Chế độ truy cập

Chỉ định các chế độ truy cập không đồng bộ như được hiển thị trong sơ đồ thời gian. Các bit này chỉ được tính

đến khi bit EXTMOD trong thanh ghi FSMC_BCRx là 1.

00: chế độ truy cập A

01: chế độ truy cập B

10: chế độ truy cập C

11: chế độ truy cập D

Bit 27:24 DATLAT[3:0]: Độ trễ dữ liệu cho bộ nhớ NOR Flash đồng bộ (xem ghi chú bên dưới bảng mô tả bit)

Đối với bộ nhớ NOR Flash đồng bộ có bật chế độ liên tục, hãy xác định số chu kỳ xung nhịp bộ nhớ (+2)

để cấp cho bộ nhớ trước khi đọc/ghi dữ liệu đầu tiên.

Tham số thời gian này không được biểu thị bằng các khoảng thời gian HCLK mà ở các khoảng thời gian FSMC_CLK.

Trong trường hợp PSRAM (CRAM), trường này phải được đặt thành 0. Trong NOR Flash hoặc SRAM hoặc PSRAM 0000
không , giá trị này không quan tâm.

đồng bộ: Độ trễ dữ liệu của 2 chu kỳ xung nhịp CLK cho lần truy cập cụm đầu tiên

1111: Độ trễ dữ liệu của 17 chu kỳ xung nhịp CLK cho lần truy cập cụm đầu tiên (giá trị mặc định sau khi đặt lại)

Bit 23:20 CLKDIV[3:0]: Tỷ lệ phân chia đồng hồ (đối với tín hiệu FSMC_CLK)

Xác định khoảng thời gian của tín hiệu đầu ra đồng hồ FSMC_CLK, được biểu thị bằng số chu kỳ HCLK:

0000: Dự trữ

0001: Chu kỳ FSMC_CLK = 2 × chu kỳ HCLK

0010: Chu kỳ FSMC_CLK = 3 × chu kỳ HCLK

1111: Chu kỳ FSMC_CLK = 16 × chu kỳ HCLK (giá trị mặc định sau khi đặt lại)

Trong các truy cập NOR Flash, SRAM hoặc PSRAM không đồng bộ, giá trị này không được quan tâm.

544/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

Bit 19:16 BUSTURN[3:0]: Thời lượng giai đoạn quay vòng xe buýt

Các bit này được phần mềm ghi để thêm độ trễ khi kết thúc giao dịch ghi để đọc (và đọc để ghi). Độ trễ quay vòng bus

được lập trình được chèn giữa giao dịch đọc không đồng bộ (chế độ muxed hoặc D) hoặc giao dịch ghi và

bất kỳ hoạt động đọc hoặc ghi không đồng bộ/đồng bộ nào khác đến/từ ngân hàng tĩnh (đối với hoạt

động đọc, ngân hàng có thể giống hoặc khác; đối với thao tác ghi, ngân hàng có thể khác ngoại trừ ở chế độ r muxed hoặc

D).

Trong một số trường hợp, độ trễ quay vòng xe buýt được cố định, bất kể giá trị BUSTURN được lập trình:

– Không có độ trễ quay vòng bus nào được chèn vào giữa hai lần truyền ghi không đồng bộ liên tiếp

vào cùng một ngân hàng bộ nhớ tĩnh ngoại trừ ở chế độ muxed và D.

– Độ trễ quay vòng bus là 1 chu kỳ đồng hồ FSMC được chèn vào giữa:

– Hai lần truyền đọc không đồng bộ liên tiếp vào cùng một dãy bộ nhớ tĩnh ngoại trừ chế độ muxed và D.

– Đọc không đồng bộ thành ghi không đồng bộ hoặc ghi đồng bộ vào bất kỳ ngân hàng tĩnh nào

hoặc ngân hàng động ngoại trừ chế độ muxed và D.

– Thao tác đọc không đồng bộ (chế độ 1, 2, A, B hoặc C) và thao tác đọc từ chế độ khác
ngân hàng tĩnh.

– Độ trễ quay vòng bus gồm 2 chu kỳ đồng hồ FSMC được chèn vào giữa:

– Hai lần truy cập ghi đồng bộ liên tiếp (ở chế độ cụm hoặc chế độ đơn) vào cùng một
ngân hàng

– Truy cập ghi đồng bộ (chuỗi hoặc đơn) và ghi hoặc đọc không đồng bộ

chuyển đến hoặc từ ngân hàng bộ nhớ tĩnh (ngân hàng có thể giống hoặc khác nhau trong trường hợp thao tác

đọc).

– Hai truy cập đọc đồng bộ liên tiếp (ở chế độ cụm hoặc chế độ đơn), theo sau là bất kỳ thao tác đọc hoặc ghi đồng

bộ/không đồng bộ nào từ/đến một dãy bộ nhớ tĩnh khác.

– Độ trễ quay vòng bus gồm 3 chu kỳ đồng hồ FSMC được chèn vào giữa:

– Hai thao tác ghi đồng bộ liên tiếp (ở chế độ cụm hoặc chế độ đơn) sang các thao tác ghi khác nhau
ngân hàng tĩnh.

– Truy cập ghi đồng bộ (ở chế độ cụm hoặc chế độ đơn) và đọc đồng bộ
truy cập từ cùng một ngân hàng hoặc từ một ngân hàng khác.

0000: Thời lượng pha BUSTURN = 1 chu kỳ xung nhịp HCLK được thêm vào
...

1111: Thời lượng pha BUSTURN = 16 × chu kỳ xung nhịp HCLK (giá trị mặc định sau khi đặt lại)

RM0008 Phiên bản 21 545/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Bit 15:8 DATAST[7:0]: Khoảng thời gian của pha dữ liệu

Các bit này được viết bằng phần mềm để xác định khoảng thời gian của pha dữ liệu (tham khảo Hình 187

như Hình 199), được sử dụng trong các truy cập không đồng bộ:

0000 0000: Đặt trước

0000 0001: Thời lượng pha DATAST = 2 × chu kỳ xung nhịp HCLK

0000 0010: Thời lượng pha DATAST = 3 × chu kỳ xung nhịp HCLK
...

1111 1111: Thời lượng pha DATAST = 256 × chu kỳ xung nhịp HCLK (giá trị mặc định sau khi reset)

Đối với mỗi loại bộ nhớ và thời lượng pha dữ liệu của chế độ truy cập, hãy tham khảo hình tương ứng (Hình 187 đến

Hình 199).

Ví dụ: Mode1, truy cập đọc, DATAST=1: Thời lượng pha dữ liệu= DATAST+3 = 4 chu kỳ xung nhịp HCLK.

Lưu ý: Trong truy cập đồng bộ, giá trị này không được quan tâm.

Bit 7:4 ADDHLD[3:0]: Khoảng thời gian của giai đoạn giữ địa chỉ

Các bit này được viết bằng phần mềm để xác định khoảng thời gian của giai đoạn giữ địa chỉ (tham khảo phần

Hình 196 đến Hình 199), được sử dụng trong chế độ D và truy cập đa kênh:

0000: Dự trữ

0001: Thời lượng pha ADDHLD = 2 × chu kỳ xung nhịp HCLK

0010: Thời lượng pha ADDHLD = 3 × chu kỳ xung nhịp HCLK


...

1111: Thời lượng pha ADDHLD = 16 × chu kỳ xung nhịp HCLK (giá trị mặc định sau khi reset)

Đối với mỗi khoảng thời gian của giai đoạn giữ địa chỉ của chế độ truy cập, hãy tham khảo hình tương ứng (Hình 196

đến Hình 199).

Ví dụ: ModeD, quyền truy cập đọc, ADDHLD=1: Thời lượng pha giữ địa chỉ = ADDHLD + 1 =2 chu kỳ xung nhịp HCLK.

Lưu ý: Trong truy cập đồng bộ, giá trị này không được sử dụng, giai đoạn giữ địa chỉ luôn là khoảng thời gian 1

xung nhịp bộ nhớ.

Bits 3:0 ADDSET[3:0]: Thời lượng giai đoạn thiết lập địa chỉ

Các bit này được viết bằng phần mềm để xác định khoảng thời gian của giai đoạn thiết lập địa chỉ (tham khảo phần

Hình 187 đến Hình 199), được sử dụng trong SRAM, ROM và NOR Flash và PSRAM không đồng bộ
truy cập:

0000: Thời lượng pha ADDSET = 1 × chu kỳ xung nhịp HCLK


...

1111: Thời lượng pha ADDSET = × chu kỳ xung nhịp HCLK (giá trị mặc định sau khi đặt lại)

Đối với mỗi khoảng thời gian giai đoạn thiết lập địa chỉ chế độ truy cập, hãy tham khảo hình tương ứng (tham khảo

Hình 187 đến Hình 199).

Ví dụ: Mode2, truy cập đọc, ADDSET=1: Thời lượng giai đoạn thiết lập địa chỉ = ADDSET + 1 = 2 chu kỳ xung nhịp HCLK.

Lưu ý: Trong các truy cập NOR Flash và PSRAM đồng bộ, giá trị này không được quan tâm.

Ghi chú: PSRAM (CRAM) có độ trễ thay đổi do quá trình làm mới bên trong. Do đó, những bộ nhớ
này phát ra tín hiệu NWAIT trong toàn bộ giai đoạn trễ để kéo dài độ trễ nếu cần.

Với PSRAM (CRAM), trường DATLAT phải được đặt thành 0, để FSMC sớm thoát khỏi giai đoạn
trễ và bắt đầu lấy mẫu NWAIT từ bộ nhớ, sau đó bắt đầu đọc hoặc ghi khi bộ nhớ sẵn sàng.

Phương pháp này cũng có thể được sử dụng với thế hệ bộ nhớ Flash đồng bộ mới nhất phát ra
tín hiệu NWAIT, không giống như bộ nhớ Flash cũ hơn (kiểm tra biểu dữ liệu của bộ nhớ
Flash cụ thể đang được sử dụng).

546/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

Thanh ghi thời gian ghi SRAM/NOR-Flash 1..4 (FSMC_BWTR1..4)

Độ lệch địa chỉ: 0xA000 0000 + 0x104 + 8 * (x – 1), x = 1...4

Giá trị đặt lại: 0x0FFF FFFF

Thanh ghi này chứa thông tin điều khiển của từng dãy bộ nhớ, được sử dụng cho các bộ nhớ
SRAM, PSRAM và NOR Flash. Thanh ghi này chỉ hoạt động để truy cập ghi không đồng bộ khi bit
EXTMOD được đặt trong thanh ghi FSMC_BCRx.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

ACCM
BUSTURN[3:0] DỮ LIỆU[7:0] THÊM[3:0] THÊM[3:0]
Res. OD[2:0] Kín đáo
ồ ồ rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:30 Dự trữ, phải được giữ ở giá trị đặt lại.

Bits 29:28 ACCMOD[2:0]: Chế độ truy cập.

Chỉ định các chế độ truy cập không đồng bộ như được hiển thị trong sơ đồ thời gian tiếp theo. Các bit này chỉ
được tính đến khi bit EXTMOD trong thanh ghi FSMC_BCRx là 1.

00: chế độ truy cập A

01: chế độ truy cập B

10: chế độ truy cập C

11: chế độ truy cập D

Bit 27:20 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 19:16 BUSTURN[3:0]: Thời lượng giai đoạn quay vòng xe buýt

Độ trễ quay vòng bus được lập trình được chèn vào giữa quá trình truyền ghi không đồng bộ và bất kỳ hoạt động
truyền hoặc ghi không đồng bộ/đồng bộ nào khác đến/từ một ngân hàng tĩnh (đối với hoạt động đọc, ngân hàng
có thể giống hoặc khác nhau; đối với hoạt động ghi , dãy có thể khác ngoại trừ ở chế độ r muxed hoặc D).

Trong một số trường hợp, độ trễ quay vòng bus được cố định, bất kể giá trị BUSTURN được lập trình: – Không có độ

trễ quay vòng bus nào được chèn giữa hai lần truyền ghi không đồng bộ liên tiếp vào
cùng một ngân hàng bộ nhớ tĩnh ngoại trừ ở chế độ muxed và D.

– Độ trễ quay vòng bus gồm 2 chu kỳ đồng hồ FSMC được chèn vào giữa:

– Hai lần truy cập ghi đồng bộ liên tiếp (ở chế độ cụm hoặc chế độ đơn) vào cùng một dãy.

– Truyền ghi đồng bộ (ở chế độ cụm hoặc chế độ đơn) và truyền ghi hoặc đọc không đồng bộ đến/từ ngân hàng bộ
nhớ tĩnh.

– Độ trễ quay vòng bus gồm 3 chu kỳ đồng hồ FSMC được chèn vào giữa:

– Hai lần truy cập ghi đồng bộ liên tiếp (ở chế độ cụm hoặc chế độ đơn) vào các tĩnh khác nhau
các ngân hàng.

– Truyền ghi đồng bộ (ở chế độ cụm hoặc chế độ đơn) và đọc đồng bộ từ
cùng hoặc từ một ngân hàng khác.

0000: Thời lượng pha BUSTURN = 1 chu kỳ xung nhịp HCLK được thêm vào
...

1111: Thời lượng pha BUSTURN = 16 chu kỳ xung nhịp HCLK được thêm vào (giá trị mặc định sau khi đặt lại)

RM0008 Phiên bản 21 547/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Bit 15:8 DATAST[7:0]: Khoảng thời gian của pha dữ liệu.

Các bit này được viết bằng phần mềm để xác định khoảng thời gian của pha dữ liệu (tham khảo Hình 187 đến Hình 199), được

sử dụng trong truy cập bộ nhớ SRAM, PSRAM và NOR Flash không đồng bộ:

0000 0000: Đặt trước

0000 0001: Thời lượng pha DATAST = 2 × chu kỳ xung nhịp HCLK

0000 0010: Thời lượng pha DATAST = 3 × chu kỳ xung nhịp HCLK
...

1111 1111: Thời lượng pha DATAST = 16 × chu kỳ xung nhịp HCLK (giá trị mặc định sau khi reset)

Lưu ý: Trong truy cập đồng bộ, giá trị này không được quan tâm.

Bit 7:4 ADDHLD[3:0]: Khoảng thời gian của giai đoạn giữ địa chỉ.

Các bit này được viết bằng phần mềm để xác định khoảng thời gian của giai đoạn giữ địa chỉ (tham khảo Hình 196 đến

Hình 199), được sử dụng trong các truy cập ghép kênh không đồng bộ:

0000: Dự trữ

0001: Thời lượng pha ADDHLD = 2 × chu kỳ xung nhịp HCLK

0010: Thời lượng pha ADDHLD = 3 × chu kỳ xung nhịp HCLK


...

1111: Thời lượng pha ADDHLD = 16 × chu kỳ xung nhịp HCLK (giá trị mặc định sau khi reset)

Lưu ý: Trong truy cập NOR Flash đồng bộ, giá trị này không được sử dụng, giai đoạn giữ địa chỉ luôn là

1 Khoảng thời gian của đồng hồ flash.

Bits 3:0 ADDSET[3:0]: Thời lượng giai đoạn thiết lập địa chỉ.

Các bit này được viết bằng phần mềm để xác định khoảng thời gian của giai đoạn thiết lập địa chỉ trong chu kỳ HCLK (tham khảo

Hình 196 đến Hình 199), được sử dụng trong truy cập không đồng bộ:

0000: Thời lượng pha ADDSET = 1 × chu kỳ xung nhịp HCLK


...

1111: Thời lượng pha ADDSET = 16 × chu kỳ xung nhịp HCLK (giá trị mặc định sau khi đặt lại)

Lưu ý: Trong các truy cập NOR Flash và PSRAM đồng bộ, giá trị này không được quan tâm.

Bộ điều khiển thẻ nhớ flash/PC 21.6 NAND

FSMC tạo ra thời gian tín hiệu thích hợp để điều khiển các loại thiết bị sau:
• Flash NAND

- 8 bit

– 16-bit
• Các thiết bị tương thích với PC Card 16-bit

Bộ điều khiển Thẻ NAND/PC có thể kiểm soát ba ngân hàng bên ngoài. Ngân hàng 2 và ngân hàng 3 hỗ
trợ các thiết bị NAND Flash. Bank 4 hỗ trợ các thiết bị PC Card.

Mỗi ngân hàng được cấu hình bằng các thanh ghi chuyên dụng (Mục 21.6.8). Các tham
số bộ nhớ có thể lập trình bao gồm thời gian truy cập (được hiển thị trong Bảng 129) và cấu
hình ECC.

548/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

Bảng 129. Các thông số truy cập Card NAND/PC có thể lập trình

Tham số Chức năng Chế độ truy cập Đơn vị Tối thiểu. Tối đa.

Số chu kỳ xung nhịp (HCLK) để


Thời gian thiết lập Chu kỳ đồng hồ AHB
thiết lập địa chỉ trước khi xác Đọc viết 1 255
bộ nhớ (HCLK)
nhận lệnh

Thời lượng tối thiểu (chu kỳ xung Chu kỳ đồng hồ AHB


Bộ nhớ chờ Đọc viết 2 256
nhịp HCLK) của xác nhận lệnh (HCLK)

Số chu kỳ xung nhịp (HCLK) để giữ


địa chỉ (và dữ liệu trong trường hợp Chu kỳ đồng hồ AHB
Giữ bộ nhớ Đọc viết 1 254
có quyền truy cập ghi) sau khi (HCLK)
hủy xác nhận lệnh

Số chu kỳ xung nhịp (HCLK) trong


Bộ nhớ đó bus dữ liệu được giữ ở trạng Chu kỳ đồng hồ AHB
Viết 0 255
dữ liệu cao-Z thái Z cao sau khi bắt đầu truy cập (HCLK)
ghi

21.6.1 Tín hiệu giao diện bộ nhớ ngoài

Bảng sau liệt kê các tín hiệu thường được sử dụng để kết nối NAND Flash và PC Card.

Thận trọng: Khi sử dụng Thẻ PC hoặc CompactFlash ở chế độ I/O, chân đầu vào NIOS16 phải duy trì ở mức mặt đất trong
toàn bộ hoạt động, nếu không FSMC có thể không hoạt động bình thường.
Điều này có nghĩa là chân đầu vào NIOS16 không được kết nối với thẻ mà phải kết nối trực tiếp với
mặt đất (chỉ cho phép truy cập 16 bit).

Ghi chú: Tiền tố “N”. chỉ định tín hiệu liên quan là mức hoạt động thấp.

Flash NAND 8 bit


t

Bảng 130. Flash NAND 8 bit

Tên tín hiệu FSMC Vào/ra Chức năng

Một [17] ồ Tín hiệu kích hoạt chốt địa chỉ flash NAND (ALE)

Một [16] ồ Tín hiệu kích hoạt chốt lệnh NAND Flash (CLE)

D[7:0] Vào/ra
Bus địa chỉ/dữ liệu hai chiều, ghép kênh 8 bit

NCE[x] ồ Chọn chip, x = 2, 3

KHÔNG(= NRE) ồ Cho phép đầu ra (tên tín hiệu bộ nhớ: cho phép đọc, NRE)

Tây Bắc ồ Cho phép viết

NWAIT/INT[3:2] TÔI

Tín hiệu đầu vào bận/sẵn sàng của NAND Flash tới FSMC

Không có giới hạn năng lực về mặt lý thuyết vì FSMC có thể quản lý nhiều chu kỳ địa chỉ nếu cần.

RM0008 Phiên bản 21 549/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Flash NAND 16-bit

Bảng 131. Flash NAND 16-bit

Tên tín hiệu FSMC Vào/ra Chức năng

Một [17] O NAND Tín hiệu kích hoạt chốt địa chỉ flash (ALE)

Một [16] O Tín hiệu kích hoạt chốt lệnh Flash NAND (CLE)

D[15:0] Vào/ra
Bus địa chỉ/dữ liệu hai chiều, ghép kênh 16 bit

NCE[x] ồ Chọn chip, x = 2, 3

KHÔNG(= NRE) O Kích hoạt đầu ra (tên tín hiệu bộ nhớ: cho phép đọc, NRE)

Tây Bắc O Kích hoạt ghi

NWAIT/INT[3:2] TÔI

Tín hiệu đầu vào bận/sẵn sàng của NAND Flash tới FSMC

Không có giới hạn năng lực về mặt lý thuyết vì FSMC có thể quản lý nhiều chu kỳ địa chỉ nếu
cần.

Thẻ PC 16-bit

Bảng 132. Thẻ PC 16-bit

Tên tín hiệu FSMC I/O Chức năng

A[10:0] O Xe buýt địa chỉ

Truyền dữ liệu trong không gian I/O. Nó phải được rút ngắn về GND (chỉ truyền 16
NIOS16 TÔI

bit)

NIORD O Kích hoạt đầu ra cho không gian I/O

NIOWR O Cho phép ghi cho không gian I/O

NRE O Đăng ký tín hiệu cho biết quyền truy cập nằm trong không gian Chung hay Thuộc tính

D[15:0] Vào/ra Bus dữ liệu hai chiều

NCE4_1 O Chip chọn 1

NCE4_2 O Chip select 2 (cho biết quyền truy cập là 16 bit hay 8 bit)

KHÔNG O Kích hoạt đầu ra trong không gian Chung và trong không gian Thuộc tính

Tây Bắc O Kích hoạt ghi trong không gian Chung và trong không gian Thuộc tính

Thẻ PC chờ tín hiệu đầu vào tới FSMC (tên tín hiệu bộ nhớ
CHỜ ĐỢI TÔI

IORDY)

Thẻ PC ngắt tới FSMC (chỉ dành cho Thẻ PC có thể tạo ra ngắt)
INTR TÔI

Phát hiện sự hiện diện của Thẻ PC. Hoạt động cao. Nếu việc truy cập được thực
đĩa CD TÔI

hiện vào các ngân hàng Thẻ PC trong khi CD ở mức thấp thì sẽ xảy ra lỗi AHB.
Tham khảo Mục 21.3: Giao diện AHB

550/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

21.6.2 Bộ nhớ và giao dịch được hỗ trợ bởi NAND Flash / PC Card

Bảng 133 bên dưới hiển thị các thiết bị, chế độ truy cập và giao dịch được hỗ trợ.
Các giao dịch không được phép (hoặc không được hỗ trợ) bởi bộ điều khiển Thẻ NAND Flash / PC xuất hiện
màu xám.

Bảng 133. Bộ nhớ và giao dịch được hỗ trợ

Kích Kích thước Cho phép/


Thiết bị Cách thức R/W Bình luận
thước dữ liệu AHBdữ liệu bộ nhớ không cho phép

R 8 không đồng bộ số 8 Y

Không đồng bộ W 8 số 8 Y

R 16 không đồng bộ số 8 Y Chia thành 2 quyền truy cập FSMC


NAND 8-bit
Không đồng bộ W 16 số 8 Y Chia thành 2 quyền truy cập FSMC

R 32 không đồng bộ số 8 Y Chia thành 4 quyền truy cập FSMC

Không đồng bộ W 32 số 8 Y Chia thành 4 quyền truy cập FSMC

R 8 không đồng bộ 16 Y

Không đồng bộ W 8 16 N

R 16 không đồng bộ 16 Y
NAND 16-bit
Không đồng bộ W 16 16 Y

R 32 không đồng bộ 16 Y Chia thành 2 quyền truy cập FSMC

Không đồng bộ W 32 16 Y Chia thành 2 quyền truy cập FSMC

21.6.3 Sơ đồ định thời cho NAND và Card PC

Mỗi ngân hàng bộ nhớ PC Card/CompactFlash và NAND Flash được quản lý thông qua một bộ thanh ghi:

• Thanh ghi điều khiển: FSMC_PCRx


• Thanh ghi trạng thái ngắt: FSMC_SRx

• Thanh ghi ECC: FSMC_ECCRx

• Thanh ghi định thời cho không gian bộ nhớ chung: FSMC_PMEMx

• Thanh ghi định thời cho không gian bộ nhớ thuộc tính: FSMC_PATTx

• Thanh ghi định thời cho không gian I/O: FSMC_PIOx

Mỗi thanh ghi cấu hình thời gian chứa ba tham số được sử dụng để xác định số chu kỳ HCLK cho
ba giai đoạn của bất kỳ truy cập Thẻ PC/CompactFlash hoặc NAND Flash nào, cùng với một tham số
xác định thời gian để bắt đầu điều khiển bus dữ liệu trong trường hợp ghi. Hình 205 hiển thị
các định nghĩa tham số thời gian cho các truy cập bộ nhớ thông thường, biết rằng thời gian
truy cập không gian bộ nhớ Thuộc tính và I/O (chỉ dành cho Thẻ PC) là tương tự nhau.

RM0008 Phiên bản 21 551/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Hình 205. Định thời gian của bộ điều khiển Thẻ NAND/PC để truy cập bộ nhớ chung

HCLK

Địa chỉ

NCEx(2)

NRE, Cao
NIOW,
NIOR

MEMxSET + 1 MEMxWAIT + 1 MEMxHOLD + 1


Tây Bắc,

KHÔNG(1)

MEMxHIZ

ghi_dữ liệu

dữ liệu đọc Có hiệu lực

ai14732d

1. NOE vẫn ở mức cao (không hoạt động) trong quá trình truy cập ghi. NWE vẫn ở mức cao (không hoạt động) trong quá trình truy cập đọc.

2. NCEx xuống mức thấp ngay khi yêu cầu truy cập NAND và duy trì ở mức thấp cho đến khi có một ngân hàng bộ nhớ khác
đã truy cập.

21.6.4 Hoạt động của NAND Flash


Tín hiệu kích hoạt chốt lệnh (CLE) và kích hoạt chốt địa chỉ (ALE) của thiết bị NAND Flash
được điều khiển bởi một số tín hiệu địa chỉ của bộ điều khiển FSMC. Điều này có nghĩa là để
gửi lệnh hoặc địa chỉ tới bộ nhớ NAND Flash, CPU phải thực hiện ghi vào một địa chỉ nhất định
trong không gian bộ nhớ của nó.

Hoạt động đọc trang điển hình từ thiết bị NAND Flash như sau:

1. Lập trình và kích hoạt ngân hàng bộ nhớ tương ứng bằng cách định cấu hình các thanh ghi
FSMC_PCRx và FSMC_PMEMx (và đối với một số thiết bị, FSMC_PATTx, xem Phần 21.6.5)
theo các đặc điểm của NAND Flash (các bit PWID cho độ rộng bus dữ liệu của NAND Flash,
PTYP = 1, PWAITEN = 0 hoặc 1 nếu cần, xem Thanh ghi thời gian không gian bộ nhớ
chung 2..4 (FSMC_PMEM2..4) để biết cấu hình thời gian).

2. CPU thực hiện ghi byte trong không gian bộ nhớ chung, với byte dữ liệu bằng một byte lệnh
Flash (ví dụ: 0x00 đối với thiết bị Samsung NAND Flash). Đầu vào CLE của NAND Flash
hoạt động trong khi ghi nhấp nháy (xung thấp trên NWE), do đó byte được ghi được hiểu là
lệnh của NAND Flash. Sau khi lệnh được chốt bởi thiết bị NAND Flash, nó không cần phải
được ghi cho các hoạt động đọc trang tiếp theo.

3. CPU có thể gửi địa chỉ bắt đầu (STARTAD) cho thao tác đọc bằng cách ghi các byte cần
thiết (ví dụ: 4 byte hoặc 3 byte đối với các thiết bị có dung lượng nhỏ hơn),
STARTAD[7:0], STARTAD[15:8], STARTAD[ 23:16] và cuối cùng là STARTAD[25:24] cho 64 Mb
x 8 bit NAND Flash) trong bộ nhớ chung hoặc không gian thuộc tính. Đầu vào ALE của thiết
bị NAND Flash hoạt động trong khi nhấp nháy ghi (xung thấp trên NWE), do đó các byte
được ghi được hiểu là địa chỉ bắt đầu cho các hoạt động đọc. Sử dụng

552/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

Không gian bộ nhớ thuộc tính cho phép sử dụng cấu hình định thời khác của FSMC, cấu hình này
có thể được sử dụng để triển khai chức năng chờ trước cần thiết cho một số bộ nhớ NAND
Flash (xem chi tiết trong Phần 21.6.5).

4. Bộ điều khiển đợi NAND Flash sẵn sàng (tín hiệu R/NB ở mức cao) trở thành
hoạt động, trước khi bắt đầu truy cập mới (vào cùng một ngân hàng bộ nhớ hoặc ngân hàng bộ nhớ khác). Trong

khi chờ đợi, bộ điều khiển duy trì tín hiệu NCE hoạt động (thấp).

5. CPU sau đó có thể thực hiện các thao tác đọc byte trong không gian bộ nhớ chung để đọc
trang NAND Flash (trường dữ liệu + Trường dự phòng) theo từng byte.

6. Trang NAND Flash tiếp theo có thể được đọc mà không cần bất kỳ lệnh CPU hoặc thao tác ghi địa
chỉ nào, theo ba cách khác nhau:

– chỉ cần thực hiện thao tác được mô tả ở bước 5

– một địa chỉ ngẫu nhiên mới có thể được truy cập bằng cách khởi động lại thao tác ở bước 3

– lệnh mới có thể được gửi đến thiết bị NAND Flash bằng cách khởi động lại ở bước 2

21.6.5 Chức năng chờ trước của NAND Flash

Một số thiết bị NAND Flash yêu cầu rằng, sau khi ghi phần cuối cùng của địa chỉ, bộ điều
khiển sẽ đợi tín hiệu R/NB xuống mức thấp như trong Hình 206.

Hình 206. Truy cập vào NAND-Flash non 'CE don't care'

NCE phải ở mức thấp

NCE

SẠCH

ALE

Tây Bắc

Cao
KHÔNG

tR

Vào/ra[7:0] 0x00 A7-A0 A15-A8 A23-A16 A25-A14

tWB

R/NB

(1) (2) (3) (4) (5)

ai17733b

1. CPU đã ghi byte 0x00 tại địa chỉ 0x7001 0000.

2. CPU ghi byte A7-A0 tại địa chỉ 0x7002 0000.

3. CPU ghi byte A15-A8 tại địa chỉ 0x7002 0000.

4. CPU ghi byte A23-A16 tại địa chỉ 0x7002 0000.

5. CPU đã ghi byte A25-A24 tại địa chỉ 0x7802 0000: FSMC thực hiện truy cập ghi bằng FSMC_PATT2
định nghĩa thời gian, trong đó ATTHOLD 7 (với điều kiện (7+1) × HCLK = 112 ns > tWB max). Điều này đảm bảo
rằng NCE vẫn ở mức thấp cho đến khi R/NB xuống thấp và cao trở lại (chỉ được yêu cầu đối với bộ nhớ NAND
Flash mà NCE không quan tâm).

RM0008 Phiên bản 21 553/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Khi cần chức năng này, nó có thể được đảm bảo bằng cách lập trình giá trị MEMHOLD để đáp
ứng thời gian tWB . Tuy nhiên, quyền truy cập đọc của CPU vào bộ nhớ NAND Flash có độ trễ giữ
là (MEMHOLD + 2) x chu kỳ HCLK, trong khi quyền truy cập ghi của CPU có độ trễ giữ là
(MEMHOLD) x chu kỳ HCLK.

Để khắc phục hạn chế về thời gian này, không gian bộ nhớ thuộc tính có thể được
sử dụng bằng cách lập trình thanh ghi thời gian của nó với giá trị ATTHOLD đáp ứng thời
gian tWB và để giá trị MEMHOLD ở mức tối thiểu. Sau đó, CPU phải sử dụng không gian bộ nhớ
chung cho tất cả các truy cập đọc và ghi NAND Flash, ngoại trừ khi ghi byte địa chỉ cuối
cùng vào thiết bị NAND Flash, trong đó CPU phải ghi vào không gian bộ nhớ thuộc tính.

21.6.6 Tính toán mã sửa lỗi (ECC)


trong bộ nhớ NAND Flash

Bộ điều khiển Thẻ PC-FSMC bao gồm hai khối phần cứng tính toán mã sửa lỗi, mỗi khối cho
mỗi dãy bộ nhớ. Chúng được sử dụng để giảm khối lượng công việc của CPU chủ khi xử lý
mã sửa lỗi bằng phần mềm trong hệ thống.

Hai thanh ghi này giống hệt nhau và được liên kết tương ứng với ngân hàng 2 và ngân hàng 3.
Kết quả là không có tính toán ECC phần cứng nào cho các bộ nhớ được kết nối với ngân hàng 4.

Thuật toán mã sửa lỗi (ECC) được triển khai trong FSMC có thể thực hiện sửa lỗi 1 bit và phát
hiện lỗi 2 bit trên 256, 512, 1 024, 2 048, 4 096 hoặc 8 192 byte được đọc từ hoặc ghi vào
bộ nhớ NAND Flash . Nó dựa trên thuật toán mã hóa Hamming và bao gồm việc tính toán tính
chẵn lẻ của hàng và cột.

Các mô-đun ECC giám sát bus dữ liệu NAND Flash và các tín hiệu đọc/ghi (NCE và NWE) mỗi khi
ngân hàng bộ nhớ NAND Flash hoạt động.

Các hoạt động chức năng là:

• Khi truy cập vào NAND Flash được thực hiện tới ngân hàng 2 hoặc ngân hàng 3, dữ liệu
hiện có trên bus D[15:0] sẽ được chốt và sử dụng để

tính toán ECC. • Khi truy cập vào NAND Flash xảy ra ở bất kỳ địa chỉ nào khác, logic ECC ở
trạng thái rảnh và không thực hiện bất kỳ thao tác nào. Do đó, các thao tác ghi để
xác định lệnh hoặc địa chỉ vào NAND Flash không được tính đến khi tính toán ECC.

Khi số byte mong muốn đã được đọc/ghi vào NAND Flash bởi CPU chủ, các thanh ghi FSMC_ECCR2/3
phải được đọc để truy xuất giá trị được tính toán. Sau khi đọc, chúng sẽ bị xóa bằng cách
đặt lại bit ECCEN về 0. Để tính toán khối dữ liệu mới, bit ECCEN phải được đặt thành một trong
thanh ghi FSMC_PCR2/3.

Để thực hiện tính toán ECC:

554/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

1. Kích hoạt bit ECCEN trong thanh ghi FSMC_PCR2/3.

2. Ghi dữ liệu vào trang bộ nhớ NAND Flash. Trong khi trang NAND được viết, ECC
khối tính toán giá trị ECC.

3. Đọc giá trị ECC có sẵn trong thanh ghi FSMC_ECCR2/3 và lưu nó vào một
Biến đổi.

4. Xóa bit ECCEN rồi kích hoạt nó trong thanh ghi FSMC_PCR2/3 trước khi đọc lại dữ liệu đã
ghi từ trang NAND. Trong khi trang NAND được đọc, khối ECC sẽ tính giá trị ECC.

5. Đọc giá trị ECC mới có trong thanh ghi FSMC_ECCR2/3.


6. Nếu hai giá trị ECC giống nhau thì không cần sửa, nếu không sẽ xảy ra lỗi ECC và quy
trình sửa phần mềm sẽ trả về thông tin về việc lỗi có thể sửa được hay không.

21.6.7 Hoạt động của PC Card/CompactFlash

Không gian địa chỉ và truy cập bộ nhớ

FSMC hỗ trợ bộ lưu trữ Compact Flash hoặc Thẻ PC ở Chế độ bộ nhớ và Chế độ I/O (Chế độ True
IDE không được hỗ trợ).

Bộ lưu trữ Compact Flash và Thẻ PC được tạo thành từ 3 vùng bộ nhớ:

• Không gian bộ nhớ chung


• Không gian thuộc tính

• Không gian bộ nhớ I/O

Các chân nCE2 và nCE1 (FSMC_NCE4_2 và FSMC_NCE4_1 tương ứng) chọn thẻ và cho biết liệu một
thao tác byte hay word đang được thực hiện: nCE2 truy cập byte lẻ trên D15-8 và nCE1 truy cập
byte chẵn trên D7-0 nếu A0=0 hoặc byte lẻ trên D7-0 nếu A0=1. Từ đầy đủ được truy cập trên
D15-0 nếu cả nCE2 và nCE1 đều ở mức thấp.

Không gian bộ nhớ được chọn bằng cách xác nhận nOE thấp cho truy cập đọc hoặc nWE cho truy
cập ghi, kết hợp với xác nhận thấp của nCE2/nCE1 và nREG.
• Nếu chân nREG=1 trong quá trình truy cập bộ nhớ thì không gian bộ nhớ chung sẽ được chọn
• Nếu chân nREG=0 trong quá trình truy cập bộ nhớ, không gian bộ nhớ thuộc tính được chọn

Không gian I/O được chọn bằng cách xác nhận nIORD thấp cho truy cập đọc hoặc nIOWR cho truy
cập ghi [thay vì nOE/nWE cho không gian bộ nhớ], kết hợp với nCE2/nCE1. Lưu ý rằng nREG cũng
phải được xác nhận ở mức thấp trong quá trình truy cập vào Không gian I/O.

Ba loại quyền truy cập được phép cho Thẻ PC 16 bit:

• Truy cập vào Không gian bộ nhớ chung để lưu trữ dữ liệu có thể là truy cập 8 bit ở địa chỉ
chẵn hoặc truy cập AHB 16 bit.

Lưu ý rằng việc truy cập 8 bit tại các địa chỉ lẻ không được hỗ trợ và sẽ không dẫn đến
xác nhận nCE2 ở mức thấp. Yêu cầu AHB 32 bit được dịch sang hai bộ nhớ 16 bit
truy cập.

• Quyền truy cập vào Không gian bộ nhớ thuộc tính nơi Thẻ PC lưu trữ thông tin cấu
hình được giới hạn ở các quyền truy cập AHB 8 bit tại các địa chỉ chẵn.

Lưu ý rằng quyền truy cập AHB 16 bit sẽ được chuyển đổi thành một lần truyền bộ nhớ 8
bit: nCE1 sẽ được xác nhận ở mức thấp, nCE2 sẽ được xác nhận ở mức cao và chỉ Byte chẵn trên D7-
D0 sẽ có hiệu lực. Thay vào đó, quyền truy cập AHB 32 bit sẽ được chuyển đổi thành hai bộ nhớ 8 bit

RM0008 Phiên bản 21 555/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

truyền tại các địa chỉ chẵn: nCE1 sẽ được xác nhận ở mức thấp, NCE2 sẽ được xác nhận ở
mức cao và chỉ các byte chẵn mới hợp lệ.

• Việc truy cập vào Không gian I/O có thể được thực hiện thông qua truy cập AHB 8 bit hoặc 16 bit.

Bảng 134. Tín hiệu và loại truy cập PC-Card 16-bit

Được phép/không
9A

0A
01A

1-7A
Loại truy cập
2ECn

1ECn

GERn

Không gian
Cho phép
On
/EW

DW
/ R ROIn

1 0 1 0 1 XX XX X Đọc/ghi byte trên D7-D0 ĐÚNG


Chung
0 1 1 0 1 XX XX X Ký ức Đọc/ghi byte trên D15-D8 Không được hỗ trợ

Không gian
0 0 1 0 1 XX XX 0 Đọc/Ghi từ trên D15-D0 ĐÚNG

Đọc hoặc ghi các thanh ghi


X 0 0 0 1 0 1 XX 0 ĐÚNG
Thuộc tính cấu hình

Không gian
Đọc hoặc ghi CIS (Thẻ
X 0 0 0 1 0 0 XX 0 ĐÚNG
Cấu trúc thông tin)

Đọc hoặc ghi không hợp lệ


1 0 0 0 1 XX XX 1 ĐÚNG
Thuộc tính (địa chỉ lẻ)

Không gian
Đọc hoặc ghi không hợp lệ
0 1 0 0 1 XX XX x ĐÚNG
(địa chỉ lẻ)

1 0 0 1 0 XX XX 0 Đọc byte chẵn trên D7-0 ĐÚNG

1 0 0 1 0 XX XX 1 Đọc byte lẻ trên D7-0 ĐÚNG

1 0 0 1 0 XX XX 0 Viết byte chẵn trên D7-0 ĐÚNG

1 0 0 1 0 XX XX 1 Viết byte lẻ trên D7-0 ĐÚNG


Không gian vào/ra
0 0 0 1 0 XX XX 0 Đọc Word trên D15-0 ĐÚNG

0 0 0 1 0 XX XX 0 Viết chữ trên D15-0 ĐÚNG

0 1 0 1 0 XX XX X Đọc byte lẻ trên D15-8 Không được hỗ trợ

0 1 0 1 0 XX XX X Viết byte lẻ trên D15-8 Không được hỗ trợ

Ngân hàng FSMC 4 cấp quyền truy cập vào 3 không gian bộ nhớ đó như được mô tả trong Phần 21.4.2:
Ánh xạ địa chỉ Thẻ NAND/PC và Bảng 102: Các thanh ghi thời gian và ánh xạ bộ nhớ.

Tính năng chờ

Bộ lưu trữ CompactFlash hoặc Thẻ PC có thể yêu cầu FSMC kéo dài độ dài của giai đoạn truy cập
được lập trình bởi các bit MEMWAITx/ATTWAITx/IOWAITx, xác nhận tín hiệu nWAIT sau khi kích hoạt
nOE/nWE hoặc nIORD/nIOWR nếu tính năng chờ được bật thông qua bit PWAITEN trong sổ đăng ký
FSMC_PCRx. Để phát hiện xác nhận nWAIT một cách chính xác, các bit MEMWAITx/ATTWAITx/IOWAITx phải
được lập trình như sau:

556/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

xxWAITx >= 4 + max_wait_assertion_time/HCLK Trong đó

max_wait_assertion_time là thời gian tối đa mà NWAIT cần để xuống thấp khi nOE/nWE hoặc
nIORD/nIOWR ở mức thấp.

Sau khi hủy xác nhận nWAIT, FSMC mở rộng giai đoạn WAIT trong 4 chu kỳ xung nhịp HCLK.

21.6.8 Thanh ghi điều khiển thẻ NAND Flash/PC

Các thanh ghi điều khiển Thẻ NAND Flash/PC phải được truy cập bằng từ (32 bit).

Thanh ghi điều khiển thẻ PC/NAND Flash 2..4 (FSMC_PCR2..4)

Độ lệch địa chỉ: 0xA0000000 + 0x40 + 0x20 * (x – 1), x = 2..4

Giá trị đặt lại: 0x0000 0018

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

PYTP

NEKBP
ECCPS[2:0] TAR[2:0] TCLR[2:0]

NECCE


c
]0:1[TMCTN

ờợ
Kín đáo Res.

íđ

o K
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:20 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 19:17 ECCPS[2:0]: Kích thước trang ECC.

Xác định kích thước trang cho ECC mở rộng:

000: 256 byte

001: 512 byte

010: 1024 byte

011: 2048 byte

100: 4096 byte

101: 8192 byte

Bit 16:13 TAR[2:0]: Độ trễ ALE đến RE.

Đặt thời gian từ mức thấp ALE đến mức RE thấp theo số chu kỳ xung nhịp AHB (HCLK).
Thời gian là: t_ar = (TAR + SET + 4) × THCLK trong đó THCLK là chu kỳ đồng hồ HCLK

0000: 1 chu kỳ HCLK (mặc định)

1111: 16 chu kỳ HCLK Lưu

ý: SET là MEMSET hoặc ATTSET tùy theo không gian được đánh địa chỉ.

Bit 12:9 TCLR[2:0]: Độ trễ từ CLE đến RE.

Đặt thời gian từ mức CLE thấp đến mức RE thấp theo số chu kỳ xung nhịp AHB (HCLK).

Thời gian là t_clr = (TCLR + SET + 4) × THCLK trong đó THCLK là chu kỳ xung nhịp HCLK 0000: 1 chu

kỳ HCLK (mặc định)

1111: 16 chu kỳ HCLK Lưu

ý: SET là MEMSET hoặc ATTSET tùy theo không gian được đánh địa chỉ.

Bit 8:7 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 6 ECCEN: Cho phép logic tính toán ECC bit 0: Logic

ECC bị vô hiệu hóa và được đặt lại (mặc định sau khi đặt lại),

1: Logic ECC được bật.

RM0008 Phiên bản 21 557/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Bit 5:4 PWID[1:0]: Độ rộng của databus.

Xác định chiều rộng của thiết bị bộ nhớ ngoài.

00: 8 bit

01: 16 bit (mặc định sau khi reset). Giá trị này là bắt buộc đối với Thẻ PC.

10: dành riêng, không sử dụng

11: dành riêng, không sử dụng

Bit 3 PTYP: Loại bộ nhớ.

Xác định loại thiết bị được gắn vào ngân hàng bộ nhớ tương ứng:

0: Thẻ PC, CompactFlash, CF+ hoặc PCMCIA

1: NAND Flash (mặc định sau khi reset)

Bit 2 PBKEN: Bit kích hoạt ngân hàng bộ nhớ PC Card/NAND Flash.

Kích hoạt ngân hàng bộ nhớ. Truy cập ngân hàng bộ nhớ bị vô hiệu hóa gây ra LỖI trên bus AHB

0: Ngân hàng bộ nhớ tương ứng bị vô hiệu hóa (mặc định sau khi đặt lại)
1: Ngân hàng bộ nhớ tương ứng được bật

Bit 1 PWAITEN: Bit kích hoạt tính năng chờ.

Bật tính năng Chờ cho ngân hàng bộ nhớ PC Card/NAND Flash:

0: bị vô hiệu hóa

1: đã bật

Lưu ý: Đối với Thẻ PC, khi tính năng chờ được bật, MEMWAITx/ATTWAITx/IOWAITx

các bit phải được lập trình thành một giá trị như sau:
xxWAITx 4 + max_wait_assertion_time/HCLK

Trong đó max_wait_assertion_time là thời gian tối đa mà NWAIT cần để xuống mức thấp khi nOE/nWE hoặc
nIORD/nIOWR ở mức thấp.

Bit 0 Dành riêng, phải được giữ ở giá trị đặt lại.

Trạng thái FIFO và thanh ghi ngắt 2..4 (FSMC_SR2..4)

Độ lệch địa chỉ: 0xA000 0000 + 0x44 + 0x20 * (x-1), x = 2..4

Giá trị đặt lại: 0x0000 0040

Thanh ghi này chứa thông tin về trạng thái FIFO và ngắt. FSMC có FIFO được sử dụng khi ghi vào bộ
nhớ để lưu trữ tối đa 16 từ dữ liệu từ AHB.
Điều này được sử dụng để nhanh chóng ghi vào AHB và giải phóng nó để thực hiện các giao dịch với các
thiết bị ngoại vi khác ngoài FSMC, trong khi FSMC đang rút FIFO của nó vào bộ nhớ. Thanh ghi này có
một trong các bit cho biết trạng thái của FIFO, nhằm mục đích ECC.
ECC được tính toán trong khi dữ liệu được ghi vào bộ nhớ, vì vậy để đọc ECC chính xác, phần mềm
phải đợi cho đến khi FIFO trống.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SRI
NELI
UẾN

NERI
TPMEF
íđ

o K

r rw rw rw rw rw rw

558/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

Bit 31:7 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 6 FEMPT: FIFO trống.

Bit chỉ đọc cung cấp trạng thái của FIFO

0: FIFO không trống


1: FIFO trống

Bit 5 IFEN: Bit cho phép phát hiện cạnh rơi ngắt

0: Yêu cầu phát hiện cạnh rơi bị ngắt bị vô hiệu hóa


1: Đã bật yêu cầu phát hiện cạnh rơi xuống

Bit 4 ILEN: Bit cho phép phát hiện mức cao ngắt

0: Yêu cầu phát hiện mức cao bị ngắt bị vô hiệu hóa


1: Đã bật yêu cầu phát hiện mức cao ngắt

Bit 3 IREN: Bit cho phép phát hiện cạnh lên ngắt

0: Yêu cầu phát hiện cạnh lên bị ngắt bị vô hiệu hóa


1: Đã bật yêu cầu phát hiện cạnh tăng ngắt

Bit 2 IFS: Ngắt trạng thái cạnh xuống

Cờ được đặt bằng phần cứng và đặt lại bằng phần mềm.

0: Không xảy ra ngắt cạnh xuống


1: Xảy ra hiện tượng rơi cạnh xuống

Lưu ý: Bit này được thiết lập bằng cách lập trình nó thành 1 bằng phần mềm.

Bit 1 ILS: Ngắt trạng thái cấp cao

Cờ được đặt bằng phần cứng và đặt lại bằng phần mềm.

0: Không xảy ra ngắt cấp cao


1: Đã xảy ra ngắt cấp cao

Bit 0 IRS: Ngắt trạng thái cạnh lên

Cờ được đặt bằng phần cứng và đặt lại bằng phần mềm.

0: Không xảy ra ngắt cạnh lên


1: Đã xảy ra hiện tượng cạnh lên bị gián đoạn

Lưu ý: Bit này được thiết lập bằng cách lập trình nó thành 1 bằng phần mềm.

Thanh ghi thời gian không gian bộ nhớ chung 2..4 (FSMC_PMEM2..4)

Bù địa chỉ: Địa chỉ: 0xA000 0000 + 0x48 + 0x20 * (x – 1), x = 2..4

Giá trị đặt lại: 0xFCFC FCFC

Mỗi thanh ghi đọc/ghi FSMC_PMEMx (x = 2..4) chứa thông tin định thời cho Thẻ PC hoặc ngân
hàng bộ nhớ NAND Flash x, được sử dụng để truy cập vào không gian bộ nhớ chung của Thẻ PC/
CompactFlash 16-bit hoặc để truy cập vào NAND Flash để truy cập lệnh, ghi địa chỉ và truy
cập đọc/ghi dữ liệu.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

MEMHIZ[7:0] MEMHOLD[7:0] MEMWAIT[7:0] MEMSET[7:0]


rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

RM0008 Phiên bản 21 559/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Bit 31:24 MEMHIZx[7:0]: Bộ nhớ chung x databus Thời gian HiZ

Xác định số chu kỳ xung nhịp HCLK (+1 chỉ dành cho NAND) trong đó bus dữ liệu được giữ ở HiZ sau khi bắt
đầu truy cập ghi Thẻ PC/NAND Flash vào không gian bộ nhớ chung trên ổ cắm x. Chỉ hợp lệ cho giao dịch ghi:

0000 0000: 1 chu kỳ HCLK

1111 1110: 255 chu kỳ HCLK


1111 1111: Đặt trước

Bit 23:16 MEMHOLDx[7:0]: Bộ nhớ chung x thời gian lưu giữ

Đối với quyền truy cập đọc NAND Flash vào không gian bộ nhớ chung, các bit này xác định số chu kỳ
xung nhịp (HCLK+2) trong đó địa chỉ được giữ sau khi lệnh được xác nhận lại (NWE, NOE).

Đối với quyền truy cập ghi NAND Flash vào không gian bộ nhớ chung, các bit này xác định số chu kỳ
xung nhịp HCLK trong đó dữ liệu được lưu giữ sau khi lệnh được xác nhận lại (NWE, NOE).

0000 0000: Đặt trước

0000 0001: 1 chu kỳ HCLK cho truy cập ghi, 3 chu kỳ HCLK cho truy cập đọc
1111 1110: Chu kỳ 254 HCLK cho truy cập ghi, chu kỳ 256 HCLK cho truy cập đọc
1111 1111: Đặt trước

Bit 15:8 MEMWAITx[7:0]: Bộ nhớ chung x thời gian chờ

Xác định số chu kỳ xung nhịp HCLK (+1) tối thiểu để xác nhận lệnh (NWE, NOE), cho quyền truy cập đọc
hoặc ghi của Thẻ PC/NAND Flash vào không gian bộ nhớ chung trên ổ cắm x. Khoảng thời gian xác nhận lệnh
được kéo dài nếu tín hiệu chờ (NWAIT) hoạt động (thấp) ở cuối giá trị được lập trình của HCLK:

0000 0000: Đặt trước

0000 0001: 2 chu kỳ HCLK (+ chu kỳ chờ được giới thiệu bằng cách xác nhận lại NWAIT)
1111 1110: 255 chu kỳ HCLK (+ chu kỳ chờ được giới thiệu bằng cách xác nhận lại NWAIT)
1111 1111: Bảo lưu.

Bit 7:0 MEMSETx[7:0]: Bộ nhớ chung x thời gian thiết lập

Xác định số chu kỳ xung nhịp HCLK (+1 cho Thẻ PC, +2 cho NAND) để thiết lập địa chỉ trước khi xác nhận
lệnh (NWE, NOE), cho quyền truy cập đọc hoặc ghi của Thẻ PC/NAND Flash vào không gian bộ nhớ chung trên ổ
cắm x:

0000 0000: 1 chu kỳ HCLK


1111 1110: 255 chu kỳ HCLK
1111 1111: Đặt trước

Thanh ghi thời gian không gian bộ nhớ thuộc tính 2..4 (FSMC_PATT2..4)

Độ lệch địa chỉ: 0xA000 0000 + 0x4C + 0x20 * (x – 1), x = 2..4

Giá trị đặt lại: 0xFCFC FCFC

Mỗi thanh ghi đọc/ghi FSMC_PATTx (x = 2..4) chứa thông tin thời gian cho PC Card/
CompactFlash hoặc ngân hàng bộ nhớ NAND Flash x. Nó được sử dụng để truy cập 8 bit vào
không gian bộ nhớ thuộc tính của Thẻ PC/CompactFlash hoặc để truy cập NAND Flash cho lần truy
cập ghi địa chỉ cuối cùng nếu thời gian phải khác với thời gian của các lần truy cập
trước đó (để quản lý Sẵn sàng/Bận, hãy tham khảo Mục 21.6.5: Chức năng chờ trước của NAND Flash).

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

ATTHIZ[7:0] THAM GIA[7:0] ĐANG CHỜ [7:0] ATTSET[7:0]


rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

560/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

Bit 31:24 ATTHIZ[7:0]: Bộ nhớ thuộc tính x databus Thời gian HiZ

Xác định số chu kỳ xung nhịp HCLK trong đó bus dữ liệu được lưu giữ ở HiZ sau khi bắt đầu quyền truy cập
ghi PC CARD/NAND Flash vào không gian bộ nhớ thuộc tính trên ổ cắm x. Chỉ hợp lệ cho giao dịch ghi:

0000 0000: 0 chu kỳ HCLK

1111 1110: 255 chu kỳ HCLK


1111 1111: Bảo lưu.

Bit 23:16 ATTHOLD[7:0]: Bộ nhớ thuộc tính x thời gian lưu giữ

Đối với quyền truy cập đọc Thẻ PC/NAND Flash vào không gian bộ nhớ thuộc tính trên ổ cắm x, các bit này xác
định số chu kỳ xung nhịp HCLK (HCLK +2) trong đó địa chỉ được giữ sau khi lệnh được xác nhận lại (NWE, NOE).

Đối với quyền truy cập ghi của Thẻ PC/NAND Flash vào không gian bộ nhớ thuộc tính trên ổ cắm x, các bit này
xác định số chu kỳ xung nhịp HCLK trong đó dữ liệu được giữ sau khi lệnh được xác nhận lại (NWE, NOE).

0000 0000: đặt trước

0000 0001: 1 chu kỳ HCLK cho truy cập ghi, 3 chu kỳ HCLK cho truy cập đọc

1111 1110: Chu kỳ 254 HCLK cho truy cập ghi, chu kỳ 256 HCLK cho truy cập đọc
1111 1111: Đặt trước

Bit 15:8 ATTWAIT[7:0]: Bộ nhớ thuộc tính x thời gian chờ

Xác định số chu kỳ xung nhịp HCLK (+1) tối thiểu để xác nhận lệnh (NWE, NOE), cho quyền truy cập đọc
hoặc ghi của Thẻ PC/NAND Flash vào không gian bộ nhớ thuộc tính trên ổ cắm x.
Khoảng thời gian xác nhận lệnh được kéo dài nếu tín hiệu chờ (NWAIT) hoạt động (thấp) ở cuối giá trị được
lập trình của HCLK:
0000 0000: Đặt trước

0000 0001: 2 chu kỳ HCLK (+ chu kỳ chờ được giới thiệu bằng cách xác nhận lại NWAIT)

1111 1111: 255 chu kỳ HCLK (+ chu kỳ chờ được giới thiệu bằng cách xác nhận lại NWAIT)
1111 1111: Bảo lưu.

Bit 7:0 ATTSET[7:0]: Bộ nhớ thuộc tính x thời gian thiết lập

Xác định số chu kỳ xung nhịp HCLK (+1) để thiết lập địa chỉ trước khi xác nhận lệnh (NWE, NOE), cho
quyền truy cập đọc hoặc ghi của PC CARD/NAND Flash vào không gian bộ nhớ thuộc tính trên ổ cắm x:

0000 0000: 1 chu kỳ HCLK

1111 1110: 255 chu kỳ HCLK


1111 1111: Bảo lưu.

Thanh ghi thời gian không gian I/O 4 (FSMC_PIO4)

Độ lệch địa chỉ: 0xA000 0000 + 0xB0


Đặt lại giá trị: 0xFCFCFCFC

Các thanh ghi đọc/ghi FSMC_PIO4 chứa thông tin về thời gian được sử dụng để truy cập vào
không gian I/O của Thẻ PC/CompactFlash 16 bit.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

IOHIZ[7:0] IOHOLD[7:0] IOWAIT[7:0] IOSET[7:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

RM0008 Phiên bản 21 561/1136

565
Machine Translated by Google

Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC) RM0008

Bit 31:24 IOHIZ[7:0]: I/O x databus Thời gian HiZ

Xác định số chu kỳ xung nhịp HCLK trong đó bus dữ liệu được lưu giữ ở HiZ sau khi bắt đầu truy cập ghi Thẻ PC
vào không gian I/O trên ổ cắm x. Chỉ hợp lệ cho giao dịch ghi:

0000 0000: 0 chu kỳ HCLK

1111 1111: 255 chu kỳ HCLK (giá trị mặc định sau khi reset)

Bit 23:16 IOHOLD[7:0]: I/O x thời gian lưu giữ

Xác định số chu kỳ xung nhịp HCLK để giữ địa chỉ (và dữ liệu để truy cập ghi) sau khi xác nhận lại lệnh (NWE,
NOE), cho quyền truy cập đọc hoặc ghi của Thẻ PC vào không gian I/O trên ổ cắm
x:

0000 0000: đặt trước

0000 0001: 1 chu kỳ HCLK

1111 1111: 255 chu kỳ HCLK (giá trị mặc định sau khi reset)

Bit 15:8 IOWAIT[7:0]: I/O x thời gian chờ

Xác định số chu kỳ xung nhịp HCLK (+1) tối thiểu để xác nhận lệnh (SMNWE, SMNOE), cho quyền truy cập đọc
hoặc ghi của Thẻ PC vào không gian I/O trên ổ cắm x. Khoảng thời gian xác nhận lệnh được kéo dài nếu
tín hiệu chờ (NWAIT) hoạt động (thấp) ở cuối giá trị được lập trình của HCLK:

0000 0000: dành riêng, không sử dụng giá trị này

0000 0001: 2 chu kỳ HCLK (+ chu kỳ chờ được giới thiệu bằng cách xác nhận lại NWAIT)

1111 1111: 256 chu kỳ HCLK (+ chu kỳ chờ do Thẻ xác nhận lại NWAIT) (giá trị mặc định sau khi đặt lại)

Bit 7:0 IOSET[7:0]: I/O x thời gian thiết lập

Xác định số chu kỳ xung nhịp HCLK (+1) để thiết lập địa chỉ trước khi xác nhận lệnh (NWE, NOE), để truy
cập đọc hoặc ghi Thẻ PC vào không gian I/O trên ổ cắm x:

0000 0000: 1 chu kỳ HCLK

1111 1111: 256 chu kỳ HCLK (giá trị mặc định sau khi reset)

Thanh ghi kết quả ECC 2/3 (FSMC_ECCR2/3)

Độ lệch địa chỉ: 0xA000 0000 + 0x54 + 0x20 * (x – 1), x = 2 hoặc 3

Giá trị đặt lại: 0x0000 0000

Các thanh ghi này chứa giá trị mã sửa lỗi hiện tại được tính toán bởi các mô-đun tính toán
ECC của bộ điều khiển FSMC (một mô-đun cho mỗi ngân hàng bộ nhớ NAND Flash).
Khi CPU đọc dữ liệu từ trang bộ nhớ NAND Flash theo đúng địa chỉ (tham khảo Phần 21.6.6: Tính
toán mã sửa lỗi (ECC) trong bộ nhớ NAND Flash), dữ liệu được đọc từ hoặc ghi vào NAND Flash
được xử lý tự động bởi mô-đun tính toán ECC. Khi kết thúc quá trình đọc X byte (theo trường
ECCPS trong thanh ghi FSMC_PCRx), CPU phải đọc giá trị ECC được tính toán từ các thanh ghi
FSMC_ECCx, sau đó xác minh xem dữ liệu chẵn lẻ được tính toán này có giống với giá
trị chẵn lẻ được ghi trong thanh ghi FSMC_ECCx hay không. diện tích còn trống, để xác định xem
một trang có hợp lệ hay không và sửa nó nếu có. Các thanh ghi FSMC_ECCRx phải được xóa sau khi
đọc bằng cách đặt bit ECCEN về 0. Để tính toán một khối dữ liệu mới, bit ECCEN phải được đặt
thành một.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

ECCx[31:0]
r

562/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

Bit 31:0 ECCx[31:0]: Kết quả ECC


Trường này cung cấp giá trị được tính toán bằng logic tính toán ECC. Bảng 135 sau đây mô
tả nội dung của các trường bit này.

Bảng 135. Các bit liên quan đến kết quả ECC

ECCPS[2:0] Kích thước trang tính bằng byte Bit ECC

000 256 ECC[21:0]

001 512 ECC[23:0]

010 1024 ECC[25:0]

011 2048 ECC[27:0]

100 4096 ECC[29:0]

101 8192 ECC[31:0]

RM0008 Phiên bản 21 563/1136

565
010C
0104

564/1136
0018 FSMC_BCR4
0010 FSMC_BCR3
0008 FSMC_BCR2
0000 FSMC_BCR1
Đăng ký bù đắp

FSMC_BWTR 2
FSMC_BWTR 1
12
0
9 3
Machine Translated by Google

Res.
Res.
Độ phân giải 001C FSMC_BTR4.
Độ phân giải 000C FSMC_BTR2.

Độ phân giải 0014 FSMC_BTR3.


Độ phân giải 0004 FSMC_BTR1.

MOD
MOD
]0:1[DOMCCA ]0:1[DOMCCA ]0:1[DOMCCA ]0:1[DOMCCA

ACC
ACC

[1:0]
[1:0]
82
72
6
21.6.9 Bản đồ đăng ký FSMC

]0:3[TALTAD ]0:3[TALTAD ]0:3[TALTAD ]0:3[TALTAD

Kín đáo
Kín đáo
Kín đáo
Kín đáo

52
4
3
2

Res.
Res.
Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

]0:3[VIDKLC ]0:3[VIDKLC ]0:3[VIDKLC ]0:3[VIDKLC

12

WRTSRUBC WRTSRUBC WRTSRUBC WRTSRUBC


92
8
0 1
Bảng sau đây tóm tắt các thanh ghi FSMC.

]0:3[NRUTSUB ]0:3[NRUTSUB ]0:3[NRUTSUB ]0:3[NRUTSUB ]0:3[NRUTSUB ]0:3[NRUTSUB

]0:2[EZISC ]0:2[EZISC ]0:2[EZISC ]0:2[EZISC


71

RM0008 Phiên bản 21


61
GN
ỜỒHĐ
C GN
ỜỒHĐ
C GN
ỜỒHĐ
C GN
ỜỒHĐ
C
51
Bảng 136. Sơ đồ đăng ký FSMC

DOMTXE DOMTXE DOMTXE DOMTXE


41
ỜỢ
I HĐ
C ỜỢ
I HĐ
C ỜỢ
I HĐ
C ỜỢ
I HĐ
C

31
NERW NERW NERW NERW
21
]0:7[UỆI
ỮLD ]0:7[UỆI
ỮLD ]0:7[UỆI
ỮLD ]0:7[UỆI
ỮLD ]0:7[UỆI
ỮLD ]0:7[UỆI
ỮLD
GFCTIAW GFCTIAW GFCTIAW GFCTIAW
11
DOMPARW DOMPARW DOMPARW DOMPARW
01
LOPTIAW LOPTIAW LOPTIAW LOPTIAW
8
9
gnổ
ùnB gnổ
ùn
B gnổ
ùn
B gnổ
ùn
B


o íđ
K ná
o íđ
K ná
o íđ
K ná
o íđ
K
7
TẠ
ẶNM TẠ
ẶNM TẠ
ẶN
M TẠ
ẶN
M

]0:3[MÊHT ]0:3[MÊHT ]0:3[MÊHT ]0:3[MÊHT ]0:3[MÊHT ]0:3[MÊHT


5
6
]0:1[DIWM ]0:1[DIWM ]0:1[DIWM ]0:1[DIWM

4
]1:0[PYTM ]1:0[PYTM ]1:0[PYTM ]1:0[PYTM
3
]0:3[MÊHT ]0:3[MÊHT
2
NEXUM NEXUM NEXUM NEXUM

THÊM[3:0]
THÊM[3:0]
THÊM[3:0]
THÊM[3:0]

1
RM0008

NEKBM NEKBM NEKBM NEKBM


0
Machine Translated by Google

RM0008 Bộ điều khiển bộ nhớ tĩnh linh hoạt (FSMC)

Bảng 136. Sơ đồ đăng ký FSMC (tiếp theo)

1
5
ố8
s

7
6

0
3
9

2
4
11
Đăng ký bù đắp

13

12
ACC
0114 FSMC_BWTR Res. MOD Res.
3
[1:0]

ỮL
D

]0:3[MÊHT
]0:3[MÊHT
]0:7[UỆI
]0:3[NRUTSUB
ACC
011C FSMC_BWTR Res. MOD Res.
4
[1:0]

ỮL
D

]0:3[MÊHT
]0:3[MÊHT
]0:7[UỆI
]0:3[NRUTSUB
0xA000
FSMC_PCR2 Kín đáo Res.
0060

PYTP

NEKBP
NECCE
]0:2[RAT

íđ
K

c
]0:1[TMCTN
]0:2[RLCT


ờợ
]0:2[SPCCE

o
i
0xA000
FSMC_PCR3 Kín đáo Res.
0080

PYTP

NEKBP
NECCE
]0:2[RAT

íđ
K

c
]0:1[TMCTN
]0:2[RLCT


ờợ
]0:2[SPCCE

o
i
0xA000
FSMC_PCR4 Kín đáo Res.
00A0

PYTP

NEKBP
NECCE
]0:2[RAT

íđ
K

c
]0:1[TMCTN
]0:2[RLCT


ờợ
]0:2[SPCCE

o
i
0xA000
FSMC_SR2 Kín đáo

SRI
0064

NELI
UẾN

NERI
TPMEF
0xA000
FSMC_SR3 Kín đáo

SRI
0084

NELI
UẾN

NERI
TPMEF
0xA000
FSMC_SR4 Kín đáo

SRI
00A4

NELI
UẾN

NERI
TPMEF

0xA000 FSMC_PMEM
0068 2 MEMHIZ[7:0] MEMHOLD[7:0] MEMWAIT[7:0] MEMSET[7:0]

0xA000 FSMC_PMEM
0088 3 MEMHIZ[7:0] MEMHOLD[7:0] MEMWAIT[7:0] MEMSET[7:0]

0xA000 FSMC_PMEM
00A8 4 MEMHIZ[7:0] MEMHOLD[7:0] MEMWAIT[7:0] MEMSET[7:0]

0xA000
006C FSMC_PATT2 ATTHIZ[7:0] THAM GIA[7:0] ĐANG CHỜ [7:0] ATTSET[7:0]

0xA000
008C FSMC_PATT3 ATTHIZ[7:0] THAM GIA[7:0] ĐANG CHỜ [7:0] ATTSET[7:0]

0xA000
00AC FSMC_PATT4 ATTHIZ[7:0] THAM GIA[7:0] ĐANG CHỜ [7:0] ATTSET[7:0]

0xA000
00B0 FSMC_PIO4 IOHIZ[7:0] IOHOLD[7:0] IOWAIT[7:0] IOSET[7:0]

0xA000
0074 FSMC_ECCR2 ECC[31:0]

0xA000
0094 FSMC_ECCR3 ECC[31:0]

Tham khảo Bảng 3 trên trang 50 để biết địa chỉ biên của thanh ghi.

RM0008 Phiên bản 21 565/1136

565
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

22 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

Các thiết bị mật độ thấp là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

Các thiết bị có mật độ trung bình là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 64 đến 128 Kbyte.

Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ
nhớ Flash nằm trong khoảng từ 256 đến 512 Kbyte.

Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ


bộ nhớ Flash nằm trong khoảng từ 768 Kbyte đến 1 Mbyte.

Các thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

Phần này chỉ áp dụng cho các thiết bị dòng hiệu suất mật độ cao và mật độ XL.

Các tính năng chính của 22.1 SDIO

Giao diện máy chủ thẻ SD/SDIO MMC (SDIO) cung cấp giao diện giữa bus ngoại vi AHB và
MultiMediaCards (MMC), thẻ nhớ SD, thẻ SDIO và thiết bị CE-ATA.

Thông số kỹ thuật của hệ thống MultiMediaCard có sẵn trên trang web của Hiệp hội
MultiMediaCard tại www.mmca.org, do ủy ban kỹ thuật MMCA xuất bản.

Thông số kỹ thuật của thẻ nhớ SD và hệ thống thẻ SD I/O có sẵn trên trang web của Hiệp hội
thẻ SD tại www.sdcard.org.

Thông số kỹ thuật của hệ thống CE-ATA có sẵn trên trang web của nhóm làm việc CE-ATA
tại www.ce-ata.org.

Các tính năng của SDIO bao gồm:


• Tuân thủ đầy đủ Thông số kỹ thuật hệ thống MultiMediaCard Phiên bản 4.2. Hỗ trợ thẻ
cho ba chế độ databus khác nhau: 1-bit (mặc định), 4-bit và 8-bit
• Khả năng tương thích hoàn toàn với các phiên bản trước của MultiMediaCards (khả năng tương thích về phía trước)

• Tuân thủ đầy đủ các thông số kỹ thuật của thẻ nhớ SD Phiên bản 2.0
• Tuân thủ đầy đủ Thông số kỹ thuật thẻ SD I/O phiên bản 2.0: hỗ trợ thẻ cho hai chế
độ cơ sở dữ liệu khác nhau: 1 bit (mặc định) và 4 bit
• Hỗ trợ đầy đủ các tính năng CE-ATA (tuân thủ đầy đủ giao thức kỹ thuật số CE-ATA
Rev1.1)

• Truyền dữ liệu lên tới 48 MHz cho chế độ 8 bit

• Dữ liệu và lệnh đầu ra cho phép tín hiệu điều khiển trình điều khiển hai chiều bên ngoài.

Ghi chú: SDIO không có chế độ giao tiếp tương thích với SPI.

Giao thức thẻ nhớ SD là tập hợp siêu của giao thức MultiMediaCard như được xác định trong
thông số kỹ thuật hệ thống MultiMediaCard V2.11. Một số lệnh cần thiết cho thiết bị bộ nhớ
SD không được hỗ trợ bởi thẻ chỉ I/O SD hoặc phần I/O của thẻ kết hợp.
Một số lệnh này không được sử dụng trong các thiết bị I/O SD, chẳng hạn như lệnh xóa và do
đó không được hỗ trợ trong SDIO. Ngoài ra, một số lệnh khác nhau giữa thẻ nhớ SD và thẻ I/O
SD và do đó không được hỗ trợ trong SDIO. Để biết chi tiết, hãy tham khảo Thông số kỹ thuật
thẻ SD I/O Phiên bản 1.0. CE-ATA được hỗ trợ trên MMC điện

566/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

giao diện sử dụng giao thức sử dụng các nguyên tắc truy cập MMC hiện có. Định nghĩa giao diện
điện và tín hiệu được xác định trong tài liệu tham khảo MMC.

Bus MultiMediaCard/SD kết nối thẻ với bộ điều khiển.

Phiên bản hiện tại của SDIO chỉ hỗ trợ một thẻ SD/SDIO/MMC4.2 tại một thời điểm và một chồng thẻ
MMC4.1 trở về trước.

Cấu trúc liên kết bus 22.2 SDIO


Truyền thông qua bus dựa trên lệnh và truyền dữ liệu.

Giao dịch cơ bản trên bus I/O MultiMediaCard/SD/SD là giao dịch lệnh/phản hồi. Các loại giao
dịch bus này truyền thông tin của chúng trực tiếp trong cấu trúc lệnh hoặc phản hồi. Ngoài ra,
một số hoạt động có mã thông báo dữ liệu.

Việc truyền dữ liệu đến/từ thẻ nhớ SD/SDIO được thực hiện trong các khối dữ liệu. Việc truyền dữ liệu
đến/từ MMC được thực hiện bằng các khối hoặc luồng dữ liệu. Việc truyền dữ liệu đến/từ Thiết bị CE-ATA được
thực hiện trong các khối dữ liệu.

Hình 207. Hoạt động SDIO “không có phản hồi” và “không có dữ liệu”

Từ máy chủ đến (các) thẻ Từ máy chủ đến thẻ Từ thẻ đến máy chủ

SDIO_CMD Yêu cầu Yêu cầu Phản ứng

SDIO_D

Hoạt động (không có phản hồi) Hoạt động (không có dữ liệu)

ai14734

Hình 208. Thao tác đọc khối SDIO (nhiều)

Từ máy chủ đến thẻ Từ thẻ đến máy chủ

dữ liệu từ thẻ đến máy chủ


Lệnh dừng
dừng truyền dữ liệu

SDIO_CMD Phản hồi lệnh Phản hồi lệnh

SDIO_D crc khối dữ liệu crc khối dữ liệu crc khối dữ liệu

Chặn hoạt động đọc

Hoạt động dừng dữ liệu


Hoạt động đọc nhiều khối

ai14735

RM0008 Phiên bản 21 567/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

Hình 209. Thao tác ghi khối SDIO (nhiều)

Từ máy chủ đến thẻ Từ thẻ đến máy chủ


Lệnh dừng
dừng truyền dữ liệu
Dữ liệu từ máy chủ đến thẻ

Phản hồi lệnh Phản hồi lệnh


SDIO_CMD

SDIO_D Bận Khối dữ liệu crc Bận Khối dữ liệu crc bận

Thẻ tùy chọn Bận.


Hoạt động dừng dữ liệu
Cần thiết cho CE-ATA Chặn hoạt động ghi

Thao tác ghi nhiều khối

ai14737

Ghi chú: SDIO sẽ không gửi bất kỳ dữ liệu nào miễn là tín hiệu Bận được xác nhận (SDIO_D0 ở mức
thấp).

Hình 210. Thao tác đọc tuần tự SDIO

Từ máy chủ đến


thẻ) Từ thẻ đến máy chủ
Lệnh dừng
dừng truyền dữ liệu
Dữ liệu từ thẻ tới máy chủ

Phản hồi lệnh Phản hồi lệnh


SDIO_CMD

SDIO_D Dòng dữ liệu

Hoạt động dừng dữ liệu


Hoạt động truyền dữ liệu

ai14738

Hình 211. Thao tác ghi tuần tự SDIO

Từ máy chủ đến


thẻ) Từ thẻ đến máy chủ
Lệnh dừng
dừng truyền dữ liệu
Dữ liệu từ máy chủ đến thẻ

Phản hồi lệnh Phản hồi lệnh


SDIO_CMD

SDIO_D Dòng dữ liệu

Hoạt động dừng dữ liệu


Hoạt động truyền dữ liệu

ai14739

568/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

22.3 Mô tả chức năng SDIO


SDIO bao gồm hai phần:

• Khối bộ điều hợp SDIO cung cấp tất cả các chức năng dành riêng cho thẻ I/O MMC/SD/SD như
bộ tạo đồng hồ, lệnh và truyền dữ liệu.

• Giao diện AHB truy cập vào các thanh ghi bộ điều hợp SDIO và tạo ra ngắt và
Tín hiệu yêu cầu DMA.

Hình 212. Sơ đồ khối SDIO

SDIO
SDIO_CK

Ngắt và
SDIO_CMD
Yêu cầu DMA

AHB SDIO
SDIO_D[7:0]
giao diện bộ chuyển đổi

xe buýt AHB

HCLK/2 SDIOCLK
ai14740

Theo mặc định SDIO_D0 được sử dụng để truyền dữ liệu. Sau khi khởi tạo, máy chủ có thể thay đổi độ
rộng của databus.

Nếu MultiMediaCard được kết nối với bus, SDIO_D0, SDIO_D[3:0] hoặc SDIO_D[7:0] có thể được sử
dụng để truyền dữ liệu. MMC V3.31 trở về trước, chỉ hỗ trợ 1 bit dữ liệu nên chỉ sử dụng được
SDIO_D0.

Nếu thẻ I/O SD hoặc SD được kết nối với bus, máy chủ có thể định cấu hình truyền dữ liệu để sử
dụng SDIO_D0 hoặc SDIO_D[3:0]. Tất cả các dòng dữ liệu đều hoạt động ở chế độ kéo đẩy.

SDIO_CMD có hai chế độ hoạt động:

• Mở cống để khởi tạo (chỉ dành cho MMCV3.31 hoặc phiên bản cũ hơn)
• Kéo đẩy để truyền lệnh (Thẻ I/O SD/SD MMC4.2 cũng sử dụng trình điều khiển kéo đẩy để khởi
tạo)

SDIO_CK là đồng hồ vào thẻ: một bit được truyền trên cả dòng lệnh và dòng dữ liệu với mỗi chu
kỳ đồng hồ. Tần số xung nhịp có thể thay đổi từ 0 MHz đến 20 MHz (đối với MultiMediaCard
V3.31), từ 0 đến 48 MHz đối với MultiMediaCard V4.0/4.2 hoặc từ 0 đến 25 MHz (đối với thẻ I/O SD/
SD ).

SDIO sử dụng hai tín hiệu đồng hồ:

• Đồng hồ bộ điều hợp SDIO (SDIOCLK = HCLK)

• Đồng hồ xe buýt AHB (HCLK/2)

Tần số xung nhịp PCLK2 và SDIO_CK phải tuân theo điều kiện sau:

3
Tần số PCLK2 Tần số SDIO_CK --
số 8

Các tín hiệu hiển thị trong Bảng 137 được sử dụng trên bus thẻ I/O MultiMediaCard/SD/SD.

RM0008 Phiên bản 21 569/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

Bảng 137. Định nghĩa I/O SDIO

Ghim Phương hướng Sự miêu tả

Đồng hồ thẻ MultiMediaCard/SD/SDIO. Chân này là đồng hồ từ máy


SDIO_CK đầu ra
chủ đến thẻ.

Lệnh thẻ MultiMediaCard/SD/SDIO. Chân này là tín hiệu lệnh/


SDIO_CMD hai chiều
phản hồi hai chiều.

Dữ liệu thẻ MultiMediaCard/SD/SDIO. Các chân này là cơ sở


SDIO_D[7:0] hai chiều
dữ liệu hai chiều.

Bộ chuyển đổi SDIO 22.3.1

Hình 213 hiển thị sơ đồ khối đơn giản của bộ điều hợp SDIO.

Hình 213. Bộ chuyển đổi SDIO

Bộ chuyển đổi SDIO

Bộ điều khiển SDIO_CK

Yêu cầu
SDIO_CMD
con đường
Bộ chuyển đổi

ýh
tẻ et
u X
b
sổ đăng ký

tới AHB
giao diện Đường dẫn dữ liệu
SDIO_D[7:0]
FIFO

HCLK/2 SDIOCLK

ai14740

Bộ điều hợp SDIO là bus thẻ nhớ kỹ thuật số an toàn/đa phương tiện cung cấp giao diện cho ngăn xếp
thẻ đa phương tiện hoặc thẻ nhớ kỹ thuật số an toàn. Nó bao gồm năm tiểu đơn vị:

• Khối thanh ghi bộ chuyển đổi


• Bộ điều khiển

• Đường dẫn lệnh

• Đường dẫn dữ liệu

• Dữ liệu FIFO

Ghi chú: Các thanh ghi bộ điều hợp và FIFO sử dụng miền đồng hồ bus AHB (HCLK/2). Đơn vị điều khiển, đường
dẫn lệnh và đường dẫn dữ liệu sử dụng miền đồng hồ của bộ điều hợp SDIO (SDIOCLK).

Khối thanh ghi bộ điều hợp

Khối thanh ghi bộ điều hợp chứa tất cả các thanh ghi hệ thống. Khối này cũng tạo ra các tín
hiệu xóa cờ tĩnh trong thẻ đa phương tiện. Các tín hiệu rõ ràng được tạo ra khi 1 được ghi vào
vị trí bit tương ứng trong thanh ghi SDIO Clear.

570/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

Bộ điều khiển

Bộ điều khiển chứa các chức năng quản lý nguồn điện và bộ chia xung nhịp cho đồng hồ thẻ
nhớ.

Có ba giai đoạn năng lượng:

• tắt nguồn

• bật nguồn

• bật nguồn

Hình 214. Bộ điều khiển

Bộ điều khiển

Quản lý năng lượng

Cái đồng hồ
Bộ chuyển đổi SDIO_CK
sự quản lý
sổ đăng ký

Để lệnh và đường dẫn dữ liệu

ai14804

Bộ điều khiển được minh họa trong Hình 214. Nó bao gồm một bộ phận con quản lý nguồn và một
bộ phận con quản lý đồng hồ.

Bộ phận quản lý nguồn sẽ vô hiệu hóa tín hiệu đầu ra bus thẻ trong giai đoạn tắt nguồn và
bật nguồn.

Tiểu đơn vị quản lý đồng hồ tạo và điều khiển tín hiệu SDIO_CK. Đầu ra SDIO_CK có thể sử dụng
chế độ chia xung nhịp hoặc bỏ qua xung nhịp. Đầu ra đồng hồ không hoạt động:

• sau khi thiết lập lại

• trong giai đoạn tắt nguồn hoặc bật nguồn


• nếu chế độ tiết kiệm năng lượng được bật và bus thẻ ở trạng thái Không hoạt động (tám chu kỳ xung nhịp
sau khi cả đơn vị con đường dẫn lệnh và đường dẫn dữ liệu bước vào giai đoạn Không hoạt động)

Đường dẫn lệnh

Đơn vị đường dẫn lệnh gửi lệnh đến và nhận phản hồi từ thẻ.

RM0008 Phiên bản 21 571/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

Hình 215. Đường dẫn lệnh của bộ điều hợp SDIO

Đến đơn vị điều khiển Trạng thái Điều khiển Yêu cầu
lá cờ Hợp lý hẹn giờ

Thanh ghi bộ chuyển đổi

SDIO_CMDin
CMD

Lý lẽ
CRC SDIO_CMDout

Sự thay đổi

CMD đăng ký

Đến giao diện AHB


Phản ứng
sổ đăng ký

ai14805

• Máy trạng thái đường dẫn lệnh (CPSM)

– Khi thanh ghi lệnh được ghi vào và bit kích hoạt được thiết lập, quá trình truyền lệnh
bắt đầu. Khi lệnh đã được gửi, máy trạng thái đường dẫn lệnh (CPSM) sẽ đặt các cờ
trạng thái và chuyển sang trạng thái Không hoạt động nếu không cần phản hồi. Nếu cần có
phản hồi, nó sẽ đợi phản hồi (xem Hình 216).
Khi nhận được phản hồi, mã CRC nhận được và mã được tạo nội bộ sẽ được so sánh
và các cờ trạng thái thích hợp sẽ được đặt.

572/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

Hình 216. Máy trạng thái đường dẫn lệnh (CPSM)

Lệnh CE-ATA
Khi đặt lại
Tín hiệu hoàn thành
nhận được hoặc Đợi_CPL
CPSM bị vô hiệu hóa hoặc

Lệnh CRC không thành công

Đã bật CPSM và Nhàn rỗi


Đã nhận được phản hồi hoặc
lệnh đang chờ xử lý Đã nhận được phản hồi trong CE-ATA
bị vô hiệu hóa hoặc lệnh
chế độ và không bị gián đoạn và
CRC không thành công
CPSM chờ lệnh CE-ATA
tàn tật Đã bật tín hiệu hoàn thành

chờ xử lý

Đã bật và
CPSM bị vô hiệu hóa hoặc
lệnh bắt đầu
CPSM bị vô hiệu hóa hoặc lệnh hết thời gian Nhận được

không có phản hồi


Dữ liệu cuối cùng

Phản ứng
đã bắt đầu
Gửi

Chờ phản hồi Chờ đợi

Đã nhận được phản hồi ở chế độ CE-ATA và


không bị gián đoạn và chờ CE-ATA
Tín hiệu hoàn thành lệnh bị vô hiệu hóa ai14806b

Khi trạng thái Chờ được nhập, bộ hẹn giờ lệnh sẽ bắt đầu chạy. Nếu đạt đến thời gian chờ trước khi
CPSM chuyển sang trạng thái Nhận, cờ hết thời gian chờ được đặt và trạng thái Không hoạt động
được nhập vào.

Ghi chú: Thời gian chờ lệnh có giá trị cố định là 64 chu kỳ đồng hồ SDIO_CK.

Nếu bit ngắt được đặt trong thanh ghi lệnh, bộ định thời sẽ bị vô hiệu hóa và CPSM chờ yêu cầu ngắt
từ một trong các thẻ. Nếu một bit đang chờ xử lý được đặt trong thanh ghi lệnh, CPSM sẽ chuyển sang
trạng thái Chờ và chờ tín hiệu CmdPend từ tiểu đơn vị đường dẫn dữ liệu. Khi phát hiện thấy
CmdPend, CPSM sẽ chuyển sang trạng thái Gửi. Điều này cho phép bộ đếm dữ liệu kích hoạt việc truyền
lệnh dừng.

Ghi chú: CPSM vẫn ở trạng thái Không hoạt động trong ít nhất tám khoảng thời gian SDIO_CK để đáp ứng các ràng
buộc về thời gian NCC và NRC . NCC là độ trễ tối thiểu giữa hai lệnh máy chủ và NRC là độ trễ tối
thiểu giữa lệnh máy chủ và phản hồi của thẻ.

RM0008 Phiên bản 21 573/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

Hình 217. Truyền lệnh SDIO

ít nhất 8 chu kỳ SDIO_CK

Yêu cầu Phản ứng Yêu cầu


SDIO_CK

Tình trạng Nhàn rỗi Gửi Chờ đợi Nhận được Nhàn rỗi Gửi

SDIO_CMD Hi-Z Bộ điều khiển ổ đĩa Hi-Z Ổ đĩa thẻ Ổ đĩa điều khiển Hi-Z

ai14707

• Dạng lệnh

– Lệnh: lệnh là mã thông báo bắt đầu một thao tác. Lệnh được gửi từ máy chủ đến một thẻ
đơn (lệnh có địa chỉ) hoặc tới tất cả các thẻ được kết nối (lệnh phát sóng có sẵn
cho MMC V3.31 hoặc phiên bản cũ hơn). Các lệnh được truyền tuần tự trên dòng CMD. Tất
cả các lệnh có độ dài cố định là 48 bit. Định dạng chung cho mã thông báo lệnh dành
cho MultiMediaCards, thẻ SD-Memory và SDIO-Cards được hiển thị trong Bảng 138. Các
lệnh CE-ATA là phần mở rộng của các lệnh MMC V4.2 và do đó có cùng định dạng.

Đường dẫn lệnh hoạt động ở chế độ bán song công, do đó các lệnh và phản hồi có
thể được gửi hoặc nhận. Nếu CPSM không ở trạng thái Gửi thì đầu ra SDIO_CMD ở trạng
thái Hi-Z, như trong Hình 217. Dữ liệu trên SDIO_CMD đồng bộ với cạnh lên
của SDIO_CK. Bảng 138 cho thấy định dạng lệnh.

Bảng 138. Dạng lệnh

Vị trí bit Chiều rộng Giá trị Sự miêu tả

47 1 0 Bit bắt đầu

46 1 1 Bit truyền

6 - Chỉ mục lệnh


[45:40]

32 -
[39:8] Lý lẽ

7 - CRC7
[7:1]

0 1 1 Bit cuối

– Phản hồi: phản hồi là mã thông báo được gửi từ thẻ có địa chỉ (hoặc
đồng bộ từ tất cả các thẻ được kết nối cho MMC V3.31 trở về trước), đến máy chủ
dưới dạng câu trả lời cho lệnh đã nhận trước đó. Các phản hồi được chuyển nối
tiếp trên đường CMD.

SDIO hỗ trợ hai loại phản hồi. Cả hai đều sử dụng tính năng kiểm tra lỗi CRC:
• Phản hồi ngắn 48 bit
• Phản hồi dài 136 bit

Ghi chú: Nếu phản hồi không chứa CRC (phản hồi CMD1), trình điều khiển thiết bị phải bỏ qua trạng thái
CRC không thành công.

574/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

Bảng 139. Dạng phản hồi ngắn

Vị trí bit Chiều rộng Giá trị Sự miêu tả

47 1 0 Bit bắt đầu

46 1 0 Bit truyền

6 - Chỉ mục lệnh


[45:40]

32 -
[39:8] Lý lẽ

7 -
[7:1] CRC7(hoặc 1111111)

0 1 1 Bit cuối

Bảng 140. Định dạng phản hồi dài

Vị trí bit Chiều rộng Giá trị Sự miêu tả

135 1 0 Bit bắt đầu

134 1 0 Bit truyền

[133:128] 6 111111 Kín đáo

127 -
[127:1] CID hoặc CSD (bao gồm CRC7 nội bộ)

0 1 1 Bit cuối

Thanh ghi lệnh chứa chỉ mục lệnh (sáu bit được gửi tới thẻ) và loại lệnh. Những điều này xác định xem

lệnh có yêu cầu phản hồi hay không và phản hồi có dài 48 hay 136 bit hay không (xem Phần 22.9.4). Đường dẫn lệnh

thực hiện các cờ trạng thái được hiển thị trong Bảng 141:

Bảng 141. Cờ trạng thái đường dẫn lệnh

Lá cờ Sự miêu tả

CMDREND Đặt nếu CRC phản hồi ổn.

THẤT BẠI Đặt nếu CRC phản hồi không thành công.

CMDSENT Đặt khi lệnh (không yêu cầu phản hồi) được gửi

CTIMEOUT Hết thời gian phản hồi.

CMDACT Đang chuyển lệnh.

Bộ tạo CRC tính toán tổng kiểm tra CRC cho tất cả các bit trước mã CRC. Điều này bao gồm bit bắt đầu, bit

phát, chỉ mục lệnh và đối số lệnh (hoặc trạng thái thẻ). Tổng kiểm tra CRC được tính cho 120 bit đầu tiên

của CID hoặc CSD cho định dạng phản hồi dài. Lưu ý rằng bit bắt đầu, bit phát và sáu bit dự trữ không được sử

dụng trong tính toán CRC.

Tổng kiểm tra CRC là giá trị 7 bit:

CRC[6:0] = Số dư [(M(x) * x7) / G(x)]

G(x) = x7 + x3 + 1

M(x) = (bit bắt đầu) * x39 + ... + (bit cuối cùng trước CRC) * x0, hoặc

M(x) = (bit bắt đầu) * x119 + ... + (bit cuối cùng trước CRC) * x0

RM0008 Phiên bản 21 575/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

Đường dẫn dữ liệu

Tiểu đơn vị đường dẫn dữ liệu truyền dữ liệu đến và từ thẻ. Hình 218 hiển thị sơ đồ khối của đường dẫn dữ
liệu.

Hình 218. Đường dẫn dữ liệu

Đường dẫn dữ liệu

Đến đơn vị điều khiển Trạng thái Điều khiển Dữ liệu

lá cờ Hợp lý hẹn giờ

Dữ liệu FIFO

SDIO_Din[7:0]

Chuyển giao

CRC SDIO_Dout[7:0]

Sự thay đổi

đăng ký

Nhận được

ai14808

Độ rộng bus dữ liệu thẻ có thể được lập trình bằng thanh ghi điều khiển đồng hồ. Nếu chế độ bus rộng 4 bit
được bật, dữ liệu sẽ được truyền ở bốn bit trên mỗi chu kỳ xung nhịp trên tất cả bốn tín hiệu dữ liệu
(SDIO_D[3:0]). Nếu chế độ bus rộng 8 bit được bật, dữ liệu sẽ được truyền ở tốc độ 8 bit trên mỗi chu
kỳ xung nhịp trên tất cả 8 tín hiệu dữ liệu (SDIO_D[7:0]). Nếu chế độ bus rộng không được bật, chỉ một
bit trên mỗi chu kỳ đồng hồ được truyền qua SDIO_D0.

Tùy thuộc vào hướng truyền (gửi hoặc nhận), máy trạng thái đường dẫn dữ liệu (DPSM) chuyển sang trạng thái
Wait_S hoặc Wait_R khi được bật:

• Gửi: DPSM chuyển sang trạng thái Wait_S. Nếu có dữ liệu trong FIFO truyền, DPSM sẽ chuyển sang trạng
thái Gửi và tiểu đơn vị đường dẫn dữ liệu bắt đầu gửi dữ liệu tới thẻ.

• Nhận: DPSM chuyển sang trạng thái Wait_R và chờ bit bắt đầu. Khi nó
nhận được bit bắt đầu, DPSM chuyển sang trạng thái Nhận và tiểu đơn vị đường dẫn dữ liệu bắt đầu
nhận dữ liệu từ thẻ.

Máy trạng thái đường dẫn dữ liệu (DPSM)

DPSM hoạt động ở tần số SDIO_CK. Dữ liệu trên tín hiệu bus thẻ được đồng bộ với cạnh lên của SDIO_CK. DPSM
có sáu trạng thái, như trong Hình 219.

576/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

Hình 219. Máy trạng thái đường dẫn dữ liệu (DPSM)

Khi đặt lại


DPSM bị vô hiệu hóa

DPSM được kích hoạt và Đọc Đợi


Đọc Chờ đã bắt đầu

và bật chế độ SD I/O

Bị vô hiệu hóa hoặc chạy thiếu FIFO hoặc


Nhàn rỗi
hết dữ liệu hoặc CRC bị lỗi

Bị vô hiệu hóa hoặc CRC không thành công

hoặc hết thời gian chờ


Kích hoạt và không gửi

ĐọcĐợi Dừng
Bị vô hiệu hóa hoặc

kết thúc dữ liệu

Bị vô hiệu hóa hoặc

Bận Rx FIFO trống hoặc hết thời gian chờ hoặc


lỗi bit bắt đầu

Không bận rộn


Kích hoạt và gửi
Dữ liệu nhận được và

Đợi_R Đọc Đợi bắt đầu và

Đã bật chế độ SD I/O

Kết thúc gói

Đợi_S
Kết thúc gói hoặc
kết thúc dữ liệu hoặc

tràn FIFO

Bị vô hiệu hóa hoặc CRC không thành công

Bit bắt đầu


Dữ liệu đã sẵn sàng

Gửi

Nhận được

ai14809b

• Nhàn rỗi: đường dẫn dữ liệu không hoạt động và đầu ra SDIO_D[7:0] ở dạng Hi-Z. Khi thanh ghi
điều khiển dữ liệu được ghi và bit kích hoạt được thiết lập, DPSM sẽ tải bộ đếm dữ liệu
với một giá trị mới và tùy thuộc vào bit hướng dữ liệu, sẽ chuyển sang trạng thái Wait_S
hoặc Wait_R.

• Wait_R: nếu bộ đếm dữ liệu bằng 0, DPSM chuyển sang trạng thái Idle khi
nhận FIFO trống. Nếu bộ đếm dữ liệu khác 0, DPSM sẽ đợi bit bắt đầu trên SDIO_D. DPSM chuyển
sang trạng thái Nhận nếu nó nhận được bit bắt đầu trước khi hết thời gian chờ và tải bộ
đếm khối dữ liệu. Nếu nó đạt đến thời gian chờ trước khi phát hiện bit bắt đầu hoặc xảy ra
lỗi bit bắt đầu, nó sẽ chuyển sang trạng thái Không hoạt động và đặt cờ trạng thái hết thời
gian chờ.

• Nhận: dữ liệu nối tiếp nhận được từ thẻ được đóng gói theo byte và ghi vào dữ liệu
FIFO. Tùy thuộc vào bit chế độ truyền trong thanh ghi điều khiển dữ liệu, chế độ truyền dữ
liệu có thể là khối hoặc luồng:

– Ở chế độ khối, khi bộ đếm khối dữ liệu về 0, DPSM đợi cho đến khi nhận được mã CRC. Nếu mã
nhận được khớp với mã CRC được tạo nội bộ, DPSM sẽ chuyển sang trạng thái Wait_R.
Nếu không, cờ trạng thái lỗi CRC được đặt và DPSM chuyển sang trạng thái Chờ.

– Ở chế độ luồng, DPSM nhận dữ liệu trong khi bộ đếm dữ liệu khác 0. Khi bộ đếm bằng 0, dữ
liệu còn lại trong thanh ghi dịch được ghi vào dữ liệu FIFO và DPSM chuyển sang
trạng thái Wait_R.

Nếu xảy ra lỗi tràn FIFO, DPSM sẽ đặt cờ lỗi FIFO và chuyển sang trạng thái Idle:

• Wait_S: DPSM chuyển sang trạng thái Idle nếu bộ đếm dữ liệu bằng 0. Nếu không, nó sẽ đợi cho
đến khi cờ trống FIFO dữ liệu được xác nhận lại và chuyển sang trạng thái Gửi.

RM0008 Phiên bản 21 577/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

Ghi chú: DPSM duy trì ở trạng thái Wait_S trong ít nhất hai chu kỳ xung nhịp để đáp ứng các yêu cầu về thời gian
NWR , trong đó NWR là số chu kỳ xung nhịp từ lúc nhận phản hồi thẻ đến khi bắt đầu truyền dữ liệu từ
máy chủ.

• Gửi: DPSM bắt đầu gửi dữ liệu tới thẻ. Tùy thuộc vào bit chế độ truyền trong thanh ghi điều khiển
dữ liệu, chế độ truyền dữ liệu có thể là khối hoặc luồng:

– Ở chế độ khối, khi bộ đếm khối dữ liệu đạt đến 0, DPSM sẽ gửi mã CRC và bit kết thúc được
tạo nội bộ và chuyển sang trạng thái Bận.

– Ở chế độ luồng, DPSM gửi dữ liệu đến thẻ trong khi bit kích hoạt ở mức cao và bộ đếm dữ liệu
không bằng 0. Sau đó nó chuyển sang trạng thái Idle.

Nếu xảy ra lỗi chạy ngầm FIFO, DPSM sẽ đặt cờ lỗi FIFO và chuyển sang trạng thái Không hoạt động.

• Bận: DPSM chờ cờ trạng thái CRC:

– Nếu nó không nhận được trạng thái CRC dương, nó sẽ chuyển sang trạng thái Không hoạt động và
đặt cờ trạng thái lỗi CRC.

– Nếu nó nhận được trạng thái CRC dương, nó sẽ chuyển sang trạng thái Wait_S nếu không có SDIO_D0
thấp (thẻ không bận).

Nếu thời gian chờ xảy ra trong khi DPSM ở trạng thái Bận, nó sẽ đặt cờ hết thời gian chờ dữ liệu và chuyển
sang trạng thái Không hoạt động.

Bộ hẹn giờ dữ liệu được bật khi DPSM ở trạng thái Wait_R hoặc Bận và tạo ra lỗi hết thời
gian chờ dữ liệu:

– Khi truyền dữ liệu, thời gian chờ xảy ra nếu DPSM vẫn ở trạng thái Bận trong
dài hơn khoảng thời gian chờ được lập trình

– Khi nhận dữ liệu, thời gian chờ sẽ xảy ra nếu phần cuối của dữ liệu không đúng và nếu DPSM duy
trì ở trạng thái Wait_R lâu hơn khoảng thời gian chờ được lập trình.

• Dữ liệu: dữ liệu có thể được truyền từ thẻ sang máy chủ hoặc ngược lại. Dữ liệu là

được truyền qua các đường dữ liệu. Chúng được lưu trữ trong FIFO gồm 32 từ, mỗi từ có chiều rộng
32 bit.

Bảng 142. Định dạng mã thông báo dữ liệu

Sự miêu tả Bit bắt đầu Dữ liệu CRC16 Bit cuối

Chặn dữ liệu 0 - Đúng 1

Truyền dữ liệu 0 - KHÔNG 1

Dữ liệu FIFO

Tiểu đơn vị dữ liệu FIFO (vào trước ra trước) là một bộ đệm dữ liệu có bộ truyền và bộ nhận.

FIFO chứa bộ đệm dữ liệu sâu 32 từ, rộng 32 bit và logic truyền và nhận.
Bởi vì dữ liệu FIFO hoạt động trong miền đồng hồ AHB (HCLK/2), tất cả tín hiệu từ các đơn vị con
trong miền đồng hồ SDIO (SDIOCLK) đều được đồng bộ lại.

578/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

Tùy thuộc vào cờ TXACT và RXACT, FIFO có thể bị vô hiệu hóa, kích hoạt truyền hoặc kích hoạt nhận. TXACT và RXACT

được điều khiển bởi tiểu đơn vị đường dẫn dữ liệu và loại trừ lẫn nhau:

– FIFO truyền đề cập đến logic truyền và bộ đệm dữ liệu khi TXACT được kích hoạt.
khẳng định

– FIFO nhận đề cập đến logic nhận và bộ đệm dữ liệu khi RXACT được kích hoạt
khẳng định

• Truyền FIFO:

Dữ liệu có thể được ghi vào FIFO truyền thông qua giao diện AHB khi SDIO được bật để truyền.

FIFO truyền có thể truy cập được thông qua 32 địa chỉ tuần tự. FIFO truyền chứa một thanh ghi đầu

ra dữ liệu chứa từ dữ liệu được trỏ tới bởi con trỏ đọc.

Khi tiểu đơn vị đường dẫn dữ liệu đã tải thanh ghi dịch của nó, nó sẽ tăng con trỏ đọc và đẩy dữ liệu mới
ra ngoài.

Nếu FIFO truyền bị vô hiệu hóa, tất cả các cờ trạng thái sẽ được xác nhận lại. Tiểu đơn vị đường dẫn
dữ liệu xác nhận TXACT khi nó truyền dữ liệu.

Bảng 143. Truyền cờ trạng thái FIFO

Lá cờ Sự miêu tả

TXFIFOF Đặt ở mức cao khi tất cả 32 từ FIFO truyền đều chứa dữ liệu hợp lệ.

TXFFOOE Đặt ở mức cao khi FIFO truyền không chứa dữ liệu hợp lệ.

Đặt ở mức cao khi có 8 từ FIFO truyền trở lên trống. Cờ này có thể được sử dụng
TXFIFOHE
làm yêu cầu DMA.

Đặt ở mức cao khi FIFO truyền chứa dữ liệu hợp lệ. Cờ này là nghịch đảo của cờ
TXDAVL
TXFIFOE.

Đặt ở mức cao khi xảy ra lỗi chạy ngầm. Cờ này được xóa bằng cách ghi vào
TXUNDERR
thanh ghi SDIO Clear.

• Nhận FIFO

Khi tiểu đơn vị đường dẫn dữ liệu nhận được một từ dữ liệu, nó sẽ điều khiển dữ liệu trên bus dữ liệu

ghi. Con trỏ ghi được tăng lên sau khi thao tác ghi hoàn tất. Về phía đọc, nội dung của từ FIFO được trỏ

đến bởi giá trị hiện tại của con trỏ đọc sẽ được đưa vào bus dữ liệu đã đọc. Nếu FIFO nhận bị vô hiệu

hóa, tất cả các cờ trạng thái sẽ được xác nhận lại và các con trỏ đọc và ghi sẽ được đặt lại. Tiểu đơn vị

đường dẫn dữ liệu xác nhận RXACT khi nó nhận được dữ liệu. Bảng 144 liệt kê các cờ trạng thái nhận

FIFO.

FIFO nhận có thể truy cập được thông qua 32 địa chỉ tuần tự.

RM0008 Phiên bản 21 579/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

Bảng 144. Nhận cờ trạng thái FIFO

Lá cờ Sự miêu tả

RXFIFOF Đặt ở mức cao khi tất cả 32 từ nhận FIFO đều chứa dữ liệu hợp lệ

RXFIFOE Đặt ở mức cao khi FIFO nhận không chứa dữ liệu hợp lệ.

Đặt ở mức cao khi nhận được 8 từ FIFO trở lên chứa dữ liệu hợp lệ. Cờ này có thể
RXFIFOHF
được sử dụng làm yêu cầu DMA.

Đặt ở mức cao khi FIFO nhận không trống. Cờ này là nghịch đảo của cờ RXFIFOE.
RXDAVL

Đặt ở mức cao khi xảy ra lỗi tràn. Cờ này được xóa bằng cách ghi vào thanh ghi
RXOVERR
SDIO Clear.

22.3.2 Giao diện SDIO AHB

Giao diện AHB tạo ra các yêu cầu ngắt và DMA, đồng thời truy cập vào các thanh ghi bộ điều
hợp SDIO và FIFO dữ liệu. Nó bao gồm một đường dẫn dữ liệu, bộ giải mã thanh ghi và logic
ngắt/DMA.

SDIO ngắt

Logic ngắt tạo ra tín hiệu yêu cầu ngắt được xác nhận khi có ít nhất một trong các cờ trạng thái
được chọn ở mức cao. Một thanh ghi mặt nạ được cung cấp để cho phép lựa chọn các điều kiện sẽ
tạo ra ngắt. Cờ trạng thái tạo yêu cầu ngắt nếu cờ mặt nạ tương ứng được đặt.

Giao diện SDIO/DMA: quy trình truyền dữ liệu giữa SDIO và bộ nhớ

Trong ví dụ hiển thị, quá trình truyền được thực hiện từ bộ điều khiển máy chủ SDIO sang MMC (512
byte sử dụng CMD24 (WRITE_BLOCK). SDIO FIFO được lấp đầy bởi dữ liệu được lưu trữ trong bộ nhớ bằng
bộ điều khiển DMA.

580/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

1. Thực hiện quá trình nhận dạng thẻ

2. Tăng tần số SDIO_CK

3. Chọn thẻ bằng cách gửi CMD7

4. Cấu hình DMA2 như sau:

a) Kích hoạt bộ điều khiển DMA2 và xóa mọi ngắt đang chờ xử lý

b) Lập trình thanh ghi địa chỉ nguồn DMA2_Channel4 với địa chỉ cơ sở của vị trí bộ nhớ
và thanh ghi địa chỉ đích DMA2_Channel4 với địa chỉ thanh ghi SDIO_FIFO

c) Thanh ghi điều khiển chương trình DMA2_Channel4 (tăng bộ nhớ, không phải thiết bị ngoại vi
tăng, chiều rộng ngoại vi và nguồn là kích thước từ)

d) Kích hoạt DMA2_Channel4

5. Gửi CMD24 (WRITE_BLOCK) như sau:

a) Lập trình thanh ghi độ dài dữ liệu SDIO (thanh ghi bộ đếm thời gian dữ liệu
SDIO phải được lập trình trước quá trình nhận dạng thẻ)

b) Lập trình thanh ghi đối số SDIO với vị trí địa chỉ của thẻ nơi dữ liệu sẽ được truyền

c) Lập trình thanh ghi lệnh SDIO: CmdIndex với 24 (WRITE_BLOCK);


WaitResp với '1' (máy chủ thẻ SDIO chờ phản hồi); CPSMEN với '1' (máy chủ thẻ SDIO
được bật để gửi lệnh). Các trường khác có giá trị đặt lại.

d) Đợi SDIO_STA[6] = CMDREND ngắt, sau đó lập trình thanh ghi điều khiển dữ liệu SDIO:
DTEN với '1' (máy chủ thẻ SDIO được kích hoạt để gửi dữ liệu); DTDIR bằng
'0' (từ bộ điều khiển đến thẻ); DTMODE với '0' (chặn truyền dữ liệu); DMAEN với
'1' (đã bật DMA); DBLOCKSIZE với 0x9 (512 byte). Các lĩnh vực khác không quan tâm.

e) Đợi SDIO_STA[10] = DBCKEND

6. Kiểm tra xem không có kênh nào vẫn được bật bằng cách thăm dò Trạng thái kênh đã bật DMA
đăng ký.

22.4 Mô tả chức năng thẻ

22.4.1 Chế độ nhận dạng thẻ

Khi ở chế độ nhận dạng thẻ, máy chủ sẽ đặt lại tất cả các thẻ, xác thực dải điện áp hoạt
động, nhận dạng thẻ và đặt địa chỉ thẻ tương đối (RCA) cho mỗi thẻ trên xe buýt. Tất cả các
giao tiếp dữ liệu ở chế độ nhận dạng thẻ chỉ sử dụng dòng lệnh (CMD).

22.4.2 Đặt lại thẻ

Lệnh GO_IDLE_STATE (CMD0) là lệnh đặt lại phần mềm và nó đặt bộ nhớ MultiMediaCard và SD
ở trạng thái Không hoạt động. Lệnh IO_RW_DIRECT (CMD52) đặt lại thẻ I/O SD. Sau khi bật nguồn
hoặc CMD0, tất cả các trình điều khiển bus đầu ra của thẻ đều ở trạng thái trở kháng cao và
các thẻ được khởi tạo với địa chỉ thẻ tương đối mặc định (RCA=0x0001) và với cài
đặt đăng ký giai đoạn trình điều khiển mặc định (tốc độ thấp nhất, khả năng điều khiển hiện
tại cao nhất ).

RM0008 Phiên bản 21 581/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

22.4.3 Xác nhận dải điện áp hoạt động


Tất cả các thẻ đều có thể giao tiếp với máy chủ thẻ SDIO bằng bất kỳ điện áp hoạt động nào trong phạm vi

thông số kỹ thuật. Các giá trị VDD tối thiểu và tối đa được hỗ trợ được xác định trong thanh ghi điều kiện
hoạt động (OCR) trên thẻ.

Thẻ lưu trữ số nhận dạng thẻ (CID) và dữ liệu cụ thể của thẻ (CSD) trong bộ nhớ tải trọng chỉ có thể truyền

đạt thông tin này theo VDD truyền dữ liệu


điều kiện. Khi mô-đun máy chủ thẻ SDIO và thẻ có phạm vi VDD không tương thích , thẻ không thể hoàn thành chu
trình nhận dạng và không thể gửi dữ liệu CSD. Với mục đích này, các lệnh đặc biệt, SEND_OP_COND (CMD1),
SD_APP_OP_COND (ACMD41 cho Bộ nhớ SD) và IO_SEND_OP_COND (CMD5 cho SD I/O), được thiết kế để cung cấp cơ
chế xác định và từ chối các thẻ không phù hợp với phạm vi VDD mong muốn của máy chủ thẻ SDIO. Máy chủ thẻ

SDIO gửi cửa sổ điện áp VDD cần thiết làm toán hạng của các lệnh này. Thẻ không thể thực hiện truyền dữ
liệu trong phạm vi được chỉ định sẽ ngắt kết nối khỏi bus và chuyển sang trạng thái không hoạt động.

Bằng cách sử dụng các lệnh này mà không bao gồm dải điện áp làm toán hạng, máy chủ thẻ SDIO có thể truy
vấn từng thẻ và xác định dải điện áp chung trước khi đặt các thẻ ngoài phạm vi ở trạng thái không hoạt động.
Truy vấn này được sử dụng khi máy chủ thẻ SDIO có thể chọn dải điện áp chung hoặc khi người dùng yêu cầu
thông báo rằng thẻ không thể sử dụng được.

22.4.4 Quy trình nhận dạng thẻ


Quá trình nhận dạng thẻ khác nhau đối với thẻ MultiMediaCard và thẻ SD. Đối với thẻ

MultiMediaCard, quá trình nhận dạng bắt đầu ở tốc độ xung nhịp Fod. Trình điều khiển đầu ra dòng SDIO_CMD
là cống mở và cho phép vận hành thẻ song song trong quá trình này. Quá trình đăng ký được thực hiện như sau:

1. Xe buýt được kích hoạt.

2. Máy chủ thẻ SDIO phát sóng SEND_OP_COND (CMD1) để nhận thao tác
điều kiện.

3. Phản hồi là hoạt động có dây AND của các thanh ghi điều kiện hoạt động từ tất cả
thẻ.

4. Thẻ không tương thích được đặt ở trạng thái không hoạt động.

5. Máy chủ thẻ SDIO phát sóng ALL_SEND_CID (CMD2) tới tất cả các thẻ đang hoạt động.

6. Các thẻ đang hoạt động đồng thời gửi số CID nối tiếp. Thẻ có bit CID gửi đi không khớp với các bit trên
dòng lệnh sẽ dừng truyền và phải đợi chu kỳ nhận dạng tiếp theo. Một thẻ truyền thành công CID đầy đủ
đến máy chủ thẻ SDIO và chuyển sang trạng thái Nhận dạng.

7. Máy chủ thẻ SDIO phát hành SET_RELATIVE_ADDR (CMD3) cho thẻ đó. Địa chỉ mới này được gọi là địa chỉ
thẻ tương đối (RCA); nó ngắn hơn CID và ghi địa chỉ của thẻ. Thẻ được chỉ định chuyển sang trạng
thái Chờ, nó không phản ứng với các chu kỳ nhận dạng tiếp theo và đầu ra của nó chuyển từ thoát mở sang
kéo đẩy.

8. Máy chủ thẻ SDIO lặp lại các bước từ 5 đến 7 cho đến khi nhận được điều kiện hết thời gian chờ.

Đối với thẻ SD, quá trình nhận dạng bắt đầu ở tốc độ xung nhịp Fod và các ổ đĩa đầu ra dòng SDIO_CMD là trình
điều khiển kéo đẩy thay vì thoát nước mở. Quá trình đăng ký được thực hiện như sau:

582/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

1. Xe buýt được kích hoạt.

2. Máy chủ thẻ SDIO phát sóng SD_APP_OP_COND (ACMD41).

3. Các thẻ phản hồi với nội dung của thanh ghi điều kiện hoạt động của chúng.

4. Các thẻ không tương thích sẽ được đặt ở trạng thái không hoạt động.

5. Máy chủ thẻ SDIO phát sóng ALL_SEND_CID (CMD2) tới tất cả các thẻ đang hoạt động.

6. Các thẻ gửi lại mã số nhận dạng thẻ (CID) duy nhất của mình và nhập
Trạng thái nhận dạng.

7. Máy chủ thẻ SDIO phát hành SET_RELATIVE_ADDR (CMD3) cho thẻ đang hoạt động có địa chỉ. Địa chỉ mới này
được gọi là địa chỉ thẻ tương đối (RCA); nó ngắn hơn CID và ghi địa chỉ của thẻ. Thẻ được chỉ định
chuyển sang trạng thái Chờ. Máy chủ thẻ SDIO có thể phát lại lệnh này để thay đổi RCA. RCA của thẻ là
giá trị được gán cuối cùng.

8. Máy chủ thẻ SDIO lặp lại các bước từ 5 đến 7 với tất cả các thẻ đang hoạt động.

Đối với thẻ SD I/O, quá trình đăng ký được thực hiện như sau:

1. Xe buýt được kích hoạt.

2. Máy chủ thẻ SDIO gửi IO_SEND_OP_COND (CMD5).

3. Các thẻ phản hồi với nội dung của thanh ghi điều kiện hoạt động của chúng.

4. Các thẻ không tương thích được đặt ở trạng thái không hoạt động.

5. Máy chủ thẻ SDIO phát hành SET_RELATIVE_ADDR (CMD3) cho thẻ đang hoạt động có địa chỉ. Địa chỉ mới
này được gọi là địa chỉ thẻ tương đối (RCA); nó ngắn hơn CID và ghi địa chỉ của thẻ. Thẻ được chỉ
định chuyển sang trạng thái Chờ. Máy chủ thẻ SDIO có thể phát lại lệnh này để thay đổi RCA. RCA của
thẻ là giá trị được gán cuối cùng.

22.4.5 Ghi khối

Trong quá trình ghi khối (CMD24 - 27), một hoặc nhiều khối dữ liệu được máy chủ chuyển từ máy chủ sang thẻ
với CRC được máy chủ gắn vào cuối mỗi khối. Thẻ hỗ trợ ghi khối luôn có thể chấp nhận khối dữ liệu được xác
định bởi WRITE_BL_LEN. Nếu CRC bị lỗi, thẻ sẽ chỉ ra lỗi trên dòng SDIO_D và dữ liệu được truyền sẽ bị
loại bỏ và không được ghi, đồng thời tất cả các khối được truyền tiếp theo (ở chế độ ghi nhiều khối) đều
bị bỏ qua.

Nếu máy chủ sử dụng các khối một phần có chiều dài tích lũy không được căn chỉnh khối và không được
phép căn chỉnh sai khối (tham số CSD WRITE_BLK_MISALIGN không được đặt), thẻ sẽ phát hiện lỗi căn chỉnh
sai khối trước khi bắt đầu khối bị sai lệch đầu tiên.
(Bit lỗi ADDRESS_ERROR được đặt trong thanh ghi trạng thái). Hoạt động ghi cũng sẽ bị hủy bỏ nếu máy chủ
cố gắng ghi trên vùng được bảo vệ chống ghi. Tuy nhiên, trong trường hợp này, thẻ sẽ đặt bit WP_VIOLATION.

Việc lập trình các thanh ghi CID và CSD không yêu cầu cài đặt độ dài khối trước đó.
Dữ liệu được truyền cũng được bảo vệ CRC. Nếu một phần của thanh ghi CSD hoặc CID được lưu trữ trong ROM
thì phần không thể thay đổi này phải khớp với phần tương ứng của bộ đệm nhận.
Nếu việc so khớp này không thành công thì thẻ sẽ báo lỗi và không thay đổi bất kỳ nội dung đăng ký nào.
Một số thẻ có thể yêu cầu thời gian dài và không thể đoán trước để ghi một khối dữ liệu. Sau khi
nhận được một khối dữ liệu và hoàn thành kiểm tra CRC, thẻ bắt đầu ghi và giữ dòng SDIO_D ở mức thấp nếu
bộ đệm ghi của nó đầy và không thể chấp nhận dữ liệu mới từ lệnh WRITE_BLOCK mới . Máy chủ có thể
thăm dò trạng thái của thẻ bằng SEND_STATUS
lệnh (CMD13) bất cứ lúc nào và thẻ sẽ phản hồi với trạng thái của nó. Bit trạng thái
READY_FOR_DATA cho biết thẻ có thể chấp nhận dữ liệu mới hay quá trình ghi vẫn đang được tiến hành. Máy
chủ có thể bỏ chọn thẻ bằng cách phát hành CMD7 (để

RM0008 Phiên bản 21 583/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

chọn một thẻ khác), thao tác này sẽ đặt thẻ ở trạng thái Ngắt kết nối và giải phóng (các) dòng
SDIO_D mà không làm gián đoạn thao tác ghi. Khi chọn lại thẻ, nó sẽ kích hoạt lại chỉ báo bận
bằng cách kéo SDIO_D xuống mức thấp nếu việc lập trình vẫn đang được tiến hành và bộ đệm ghi
không khả dụng.

22.4.6 Đọc khối

Trong chế độ Đọc khối, đơn vị truyền dữ liệu cơ bản là khối có kích thước tối đa được xác định

trong CSD (READ_BL_LEN). Nếu READ_BL_PARTIAL được đặt, các khối nhỏ hơn có địa chỉ bắt đầu và kết
thúc hoàn toàn nằm trong một khối vật lý (như được xác định bởi READ_BL_LEN) cũng có
thể được truyền đi. CRC được thêm vào cuối mỗi khối, đảm bảo tính toàn vẹn khi truyền dữ liệu.
CMD17 (READ_SINGLE_BLOCK) bắt đầu đọc khối và sau khi hoàn tất quá trình chuyển, thẻ sẽ trở về
trạng thái Chuyển.

CMD18 (READ_MULTIPLE_BLOCK) bắt đầu chuyển một số khối liên tiếp.

Máy chủ có thể hủy bỏ việc đọc bất kỳ lúc nào, trong phạm vi thao tác nhiều khối, bất kể loại của
nó. Việc hủy bỏ giao dịch được thực hiện bằng cách gửi lệnh dừng truyền.

Nếu thẻ phát hiện lỗi (ví dụ: ngoài phạm vi, sai địa chỉ hoặc lỗi nội bộ) trong quá trình đọc
nhiều khối (cả hai loại), thẻ sẽ dừng truyền dữ liệu và vẫn ở trạng thái dữ liệu. Máy chủ phải hủy
bỏ hoạt động bằng cách gửi lệnh dừng truyền. Lỗi đọc được báo cáo khi phản hồi lệnh dừng
truyền.

Nếu máy chủ gửi lệnh dừng truyền sau khi thẻ truyền khối cuối cùng của thao tác nhiều khối với số
khối được xác định trước thì lệnh đó sẽ được phản hồi là lệnh bất hợp pháp vì thẻ không còn ở trạng
thái dữ liệu. Nếu máy chủ sử dụng các khối một phần có độ dài tích lũy không được căn chỉnh theo
khối và không được phép căn chỉnh sai khối, thẻ sẽ phát hiện tình trạng lỗi sai lệch khối ở đầu
khối bị sai lệch đầu tiên (bit lỗi ADDRESS_ERROR được đặt trong thanh ghi trạng thái).

22.4.7 Truy cập luồng, ghi luồng và đọc luồng (chỉ MultiMediaCard)

Ở chế độ luồng, dữ liệu được truyền theo byte và không có CRC nào được thêm vào cuối mỗi khối.

Ghi luồng (chỉ MultiMediaCard)

WRITE_DAT_UNTIL_STOP (CMD20) bắt đầu truyền dữ liệu từ máy chủ thẻ SDIO sang thẻ, bắt đầu tại địa
chỉ được chỉ định và tiếp tục cho đến khi máy chủ thẻ SDIO đưa ra lệnh dừng. Khi các khối một
phần được cho phép (tham số CSD WRITE_BL_PARTIAL được đặt), luồng dữ liệu có thể bắt đầu và dừng
ở bất kỳ địa chỉ nào trong không gian địa chỉ thẻ, nếu không, nó chỉ có thể bắt đầu và dừng ở
ranh giới khối. Vì lượng dữ liệu cần truyền không được xác định trước nên không thể sử dụng CRC.
Khi đạt đến cuối phạm vi bộ nhớ trong khi gửi dữ liệu và không có lệnh dừng nào được máy chủ
thẻ SD gửi, mọi dữ liệu được truyền bổ sung sẽ bị loại bỏ.

584/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

Tần số xung nhịp tối đa cho thao tác ghi luồng được đưa ra bởi các trường phương trình
sau của thanh ghi dữ liệu dành riêng cho thẻ:

8 2writebllen –NSAC
Tốc độ tối đa MIN TRANSPEED = (, )
------------------------------------------ -----------------------------
TAAC R2WFACTOR

• Tốc độ tối đa = tần số ghi tối đa


• TRANSPEED = tốc độ truyền dữ liệu tối đa

• writebllen = độ dài khối dữ liệu ghi tối đa

• NSAC = thời gian truy cập đọc dữ liệu 2 trong chu kỳ CLK
• TAAC = thời gian truy cập đọc dữ liệu 1

• R2WFACTOR = hệ số tốc độ ghi

Nếu máy chủ cố gắng sử dụng tần số cao hơn, thẻ có thể không xử lý được dữ liệu và dừng lập
trình, đặt bit lỗi OVERRUN trong thanh ghi trạng thái và trong khi bỏ qua tất cả việc truyền
dữ liệu tiếp theo, hãy đợi (ở trạng thái nhận dữ liệu) cho lệnh dừng. Hoạt động ghi cũng
bị hủy bỏ nếu máy chủ cố gắng ghi lên vùng được bảo vệ chống ghi. Tuy nhiên, trong trường
hợp này, thẻ đặt bit WP_VIOLATION.

Đọc luồng (chỉ MultiMediaCard)

READ_DAT_UNTIL_STOP (CMD11) kiểm soát việc truyền dữ liệu theo hướng luồng.

Lệnh này hướng dẫn thẻ gửi dữ liệu của nó, bắt đầu từ một địa chỉ được chỉ định, cho đến khi
máy chủ thẻ SDIO gửi STOP_TRANSMISSION (CMD12). Lệnh dừng có độ trễ thực thi do truyền
lệnh nối tiếp và quá trình truyền dữ liệu dừng sau bit kết thúc của lệnh dừng. Khi đạt đến
cuối phạm vi bộ nhớ trong khi gửi dữ liệu và không có lệnh dừng nào được gửi bởi máy chủ
thẻ SDIO, mọi dữ liệu được gửi tiếp theo đều được coi là không xác định.

Tần số xung nhịp tối đa cho hoạt động đọc luồng được tính theo phương trình sau và sử
dụng các trường của thanh ghi dữ liệu cụ thể của thẻ.

8 2readbllen –NSAC
Tốc độ tối đa MIN TRANSPEED = (, )
------------------------------------------ ----------------------------
TAAC R2WFACTOR

• Tốc độ tối đa = tần số đọc tối đa


• TRANSPEED = tốc độ truyền dữ liệu tối đa

• readbllen = độ dài khối dữ liệu đọc tối đa


• writebllen = độ dài khối dữ liệu ghi tối đa

• NSAC = thời gian truy cập đọc dữ liệu 2 trong chu kỳ CLK
• TAAC = thời gian truy cập đọc dữ liệu 1

• R2WFACTOR = hệ số tốc độ ghi

Nếu máy chủ cố gắng sử dụng tần số cao hơn, thẻ sẽ không thể duy trì việc truyền dữ liệu. Nếu
điều này xảy ra, thẻ sẽ đặt bit lỗi UNDERRUN trong thanh ghi trạng thái, hủy bỏ quá
trình truyền và chờ lệnh dừng ở trạng thái dữ liệu.

22.4.8 Xóa: xóa nhóm và xóa khu vực


Đơn vị có thể xóa được của MultiMediaCard là nhóm xóa. Nhóm xóa được đo bằng khối ghi, là đơn
vị có thể ghi cơ bản của thẻ. Kích thước của nhóm xóa là tham số dành riêng cho thẻ và được
xác định trong CSD.

RM0008 Phiên bản 21 585/1136


621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

Máy chủ có thể xóa một phạm vi Nhóm Xóa liền kề. Bắt đầu quá trình xóa là một chuỗi ba bước.

Đầu tiên, máy chủ xác định địa chỉ bắt đầu của phạm vi bằng cách sử dụng ERASE_GROUP_START
(CMD35), tiếp theo, nó xác định địa chỉ cuối cùng của dải ô bằng lệnh
ERASE_GROUP_END (CMD36) và cuối cùng, nó bắt đầu quá trình xóa bằng cách đưa ra lệnh ERASE (CMD38).
Trường địa chỉ trong các lệnh xóa là địa chỉ Nhóm Xóa theo đơn vị byte. Thẻ bỏ qua tất cả các
LSB dưới kích thước Nhóm Xóa, làm tròn địa chỉ xuống ranh giới Nhóm Xóa một cách hiệu quả.

Nếu lệnh xóa được nhận không theo trình tự, thẻ sẽ đặt bit ERASE_SEQ_ERROR trong thanh ghi trạng
thái và đặt lại toàn bộ trình tự.

Nếu nhận được lệnh không theo trình tự (cả hai lệnh xóa, ngoại trừ SEND_STATUS), thẻ sẽ đặt bit
trạng thái ERASE_RESET trong thanh ghi trạng thái, đặt lại trình tự xóa và thực thi lệnh cuối cùng.

Nếu phạm vi xóa bao gồm các khối được bảo vệ ghi, chúng sẽ được giữ nguyên và chỉ các khối không
được bảo vệ mới bị xóa. Bit trạng thái WP_ERASE_SKIP trong thanh ghi trạng thái được đặt.

Thẻ cho biết quá trình xóa đang diễn ra bằng cách giữ SDIO_D ở mức thấp. Thời gian xóa thực tế
có thể khá lâu và máy chủ có thể phát lệnh CMD7 để bỏ chọn thẻ.

22.4.9 Lựa chọn hoặc bỏ chọn bus rộng

Chế độ hoạt động bus rộng (độ rộng bus 4 bit) được chọn hoặc bỏ chọn bằng cách
sử dụng SET_BUS_WIDTH (ACMD6). Độ rộng bus mặc định sau khi bật nguồn hoặc GO_IDLE_STATE (CMD0)
là 1 bit. SET_BUS_WIDTH (ACMD6) chỉ hợp lệ ở trạng thái truyền, có nghĩa là độ rộng bus chỉ có
thể được thay đổi sau khi thẻ được chọn bởi
CHỌN/DESELECT_CARD (CMD7).

22.4.10 Quản lý bảo vệ

Ba phương pháp bảo vệ ghi cho thẻ được hỗ trợ trong mô-đun máy chủ thẻ SDIO:

1. Bảo vệ ghi thẻ nội bộ (trách nhiệm thẻ)

2. Công tắc bảo vệ ghi cơ học (chỉ chịu trách nhiệm về mô-đun máy chủ thẻ SDIO)

3. hoạt động khóa thẻ được bảo vệ bằng mật khẩu

Bảo vệ ghi thẻ nội bộ

Dữ liệu thẻ có thể được bảo vệ chống ghi và xóa. Bằng cách thiết lập các bit chống ghi vĩnh viễn
hoặc tạm thời trong CSD, toàn bộ thẻ có thể được nhà sản xuất hoặc nhà cung cấp nội dung bảo
vệ ghi vĩnh viễn. Đối với các thẻ hỗ trợ bảo vệ ghi của các nhóm khu vực bằng cách đặt bit
WP_GRP_ENABLE trong CSD, các phần của dữ liệu có thể được bảo vệ và ứng dụng có thể thay
đổi bảo vệ ghi. Bảo vệ ghi được tính theo đơn vị của các cung WP_GRP_SIZE như được chỉ định trong
CSD. Các lệnh SET_WRITE_PROT và CLR_WRITE_PROT kiểm soát việc bảo vệ nhóm được đánh địa chỉ.
Lệnh SEND_WRITE_PROT tương tự như lệnh đọc một khối. Thẻ gửi một khối dữ liệu chứa 32
bit bảo vệ ghi (đại diện cho 32 nhóm bảo vệ ghi bắt đầu từ địa chỉ được chỉ định) theo sau là 16
bit CRC. Trường địa chỉ trong lệnh bảo vệ ghi là địa chỉ nhóm tính theo đơn vị byte.

Thẻ bỏ qua tất cả các LSB dưới kích thước nhóm.

586/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

Công tắc bảo vệ ghi cơ học

Một tab trượt cơ học ở bên cạnh thẻ cho phép người dùng đặt hoặc xóa chức năng chống ghi
trên thẻ. Khi tab trượt được đặt ở vị trí có cửa sổ mở, thẻ sẽ được bảo vệ chống ghi và khi
đóng cửa sổ, nội dung thẻ có thể được thay đổi. Một công tắc phù hợp ở phía ổ cắm sẽ báo
cho mô-đun máy chủ thẻ SDIO biết rằng thẻ được bảo vệ chống ghi. Mô-đun máy chủ thẻ SDIO có

nhiệm vụ bảo vệ thẻ. Mạch bên trong của thẻ không xác định được vị trí của công tắc bảo vệ
ghi.

Bảo vệ mật khẩu

Tính năng bảo vệ bằng mật khẩu cho phép mô-đun máy chủ thẻ SDIO khóa và mở khóa thẻ bằng mật
khẩu. Mật khẩu được lưu trong thanh ghi PWD 128 bit và kích thước của nó được đặt trong thanh
ghi PWD_LEN 8 bit. Các thanh ghi này không biến đổi nên chu kỳ nguồn không xóa chúng. Thẻ bị
khóa phản hồi và thực hiện một số lệnh nhất định. Điều này có nghĩa là mô-đun máy chủ thẻ SDIO
được phép đặt lại, khởi tạo, chọn và truy vấn trạng thái, tuy nhiên không được phép truy
cập dữ liệu trên thẻ. Khi mật khẩu được đặt (như được biểu thị bằng giá trị khác 0 của PWD_LEN),
thẻ sẽ tự động bị khóa sau khi bật nguồn. Giống như các lệnh ghi thanh ghi CSD và CID, các lệnh
khóa/mở khóa chỉ khả dụng ở trạng thái truyền. Ở trạng thái này, lệnh không bao gồm đối số địa
chỉ và thẻ phải được chọn trước khi sử dụng. Lệnh khóa/mở thẻ có cấu trúc và kiểu giao dịch
bus của lệnh ghi một khối thông thường. Khối dữ liệu được truyền bao gồm tất cả thông
tin cần thiết cho lệnh (chế độ cài đặt mật khẩu, bản thân PWD và khóa/mở khóa thẻ).
Kích thước khối dữ liệu lệnh được xác định bởi mô-đun máy chủ thẻ SDIO trước khi nó gửi
lệnh khóa/mở khóa thẻ và có cấu trúc như trong Bảng 158.

Các cài đặt bit như sau:

• ERASE: thiết lập nó buộc thực hiện thao tác xóa. Tất cả các bit khác phải bằng 0 và chỉ byte
lệnh được gửi

• LOCK_UNLOCK: cài đặt để khóa thẻ. LOCK_UNLOCK có thể được đặt đồng thời
với SET_PWD, tuy nhiên không phải với CLR_PWD

• CLR_PWD: thiết lập nó sẽ xóa dữ liệu mật khẩu

• SET_PWD: cài đặt nó lưu dữ liệu mật khẩu vào bộ nhớ

• PWD_LEN: xác định độ dài của mật khẩu tính bằng byte

• PWD: mật khẩu (mới hoặc đang sử dụng, tùy theo lệnh)

Các phần sau đây liệt kê các chuỗi lệnh để đặt/đặt lại mật khẩu, khóa/mở khóa thẻ và buộc xóa.

Đặt mật khẩu

1. Chọn một thẻ (SELECT/DESELECT_CARD, CMD7), nếu chưa có thẻ nào được chọn.

2. Xác định độ dài khối (SET_BLOCKLEN, CMD16) để gửi, được cung cấp bởi thẻ 8 bit
chế độ khóa/mở khóa, PWD_LEN 8 bit và số byte của mật khẩu mới.
Khi việc thay thế mật khẩu được thực hiện, kích thước khối phải tính đến việc cả mật khẩu
cũ và mật khẩu mới đều được gửi cùng với lệnh.

3. Gửi LOCK/UNLOCK (CMD42) với kích thước khối dữ liệu phù hợp trên dòng dữ liệu bao gồm CRC
16 bit. Khối dữ liệu cho biết chế độ (SET_PWD = 1), độ dài (PWD_LEN) và chính mật khẩu
(PWD). Khi việc thay thế mật khẩu được thực hiện, giá trị độ dài (PWD_LEN) bao gồm độ dài
của cả hai mật khẩu, mật khẩu cũ và

RM0008 Phiên bản 21 587/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

cái mới và trường PWD bao gồm mật khẩu cũ (hiện đang được sử dụng), sau đó là mật khẩu mới.

4. Khi mật khẩu trùng khớp, mật khẩu mới và kích thước của nó sẽ được lưu tương ứng vào các
trường PWD và PWD_LEN. Khi mật khẩu cũ được gửi không tương ứng (về kích thước và/hoặc
nội dung) với mật khẩu dự kiến, bit lỗi LOCK_UNLOCK_FAILED được đặt trong thanh ghi trạng
thái thẻ và mật khẩu không được thay đổi.

Trường độ dài mật khẩu (PWD_LEN) cho biết mật khẩu hiện có được đặt hay không. Khi trường này
khác 0, nghĩa là thẻ đã được đặt mật khẩu và thẻ sẽ tự khóa sau khi bật nguồn. Có thể khóa
thẻ ngay trong phiên cấp nguồn hiện tại bằng cách đặt bit LOCK_UNLOCK (trong khi
đặt mật khẩu) hoặc gửi lệnh bổ sung để khóa thẻ.

Đặt lại mật khẩu

1. Chọn một thẻ (SELECT/DESELECT_CARD, CMD7), nếu chưa có thẻ nào được chọn.

2. Xác định độ dài khối (SET_BLOCKLEN, CMD16) để gửi, được cung cấp bởi thẻ 8 bit
chế độ khóa/mở khóa, PWD_LEN 8 bit và số byte trong mật khẩu hiện đang sử dụng.

3. Gửi LOCK/UNLOCK (CMD42) với kích thước khối dữ liệu phù hợp trên dòng dữ liệu bao gồm
CRC 16 bit. Khối dữ liệu cho biết chế độ (CLR_PWD = 1), độ dài (PWD_LEN) và chính mật
khẩu (PWD). Bit LOCK_UNLOCK bị bỏ qua.

4. Khi mật khẩu khớp, trường PWD sẽ bị xóa và PWD_LEN được đặt thành 0.
Khi mật khẩu được gửi không tương ứng (về kích thước và/hoặc nội dung) với mật khẩu dự
kiến, bit lỗi LOCK_UNLOCK_FAILED được đặt trong thanh ghi trạng thái thẻ và mật khẩu
không được thay đổi.

Khóa thẻ

1. Chọn một thẻ (SELECT/DESELECT_CARD, CMD7), nếu chưa có thẻ nào được chọn.

2. Xác định độ dài khối (SET_BLOCKLEN, CMD16) để gửi, được cung cấp bởi thẻ 8 bit
chế độ khóa/mở khóa (byte 0 trong Bảng 158), PWD_LEN 8 bit và số byte của mật khẩu hiện
tại.

3. Gửi LOCK/UNLOCK (CMD42) với kích thước khối dữ liệu phù hợp trên dòng dữ liệu
bao gồm cả CRC 16 bit. Khối dữ liệu cho biết chế độ (LOCK_UNLOCK = 1), độ dài (PWD_LEN)
và chính mật khẩu (PWD).

4. Khi mật khẩu khớp, thẻ sẽ bị khóa và bit trạng thái CARD_IS_LOCKED được đặt trong thanh ghi
trạng thái thẻ. Khi mật khẩu được gửi không tương ứng (về kích thước và/hoặc nội dung)
với mật khẩu dự kiến, bit lỗi LOCK_UNLOCK_FAILED được đặt trong thanh ghi trạng thái thẻ
và khóa không thành công.

Có thể đặt mật khẩu và khóa thẻ theo cùng một trình tự. Trong trường hợp này, mô-đun máy chủ
thẻ SDIO thực hiện tất cả các bước cần thiết để đặt mật khẩu (xem Đặt mật khẩu), tuy nhiên
cần đặt bit LOCK_UNLOCK ở Bước 3 khi lệnh mật khẩu mới được gửi.

Khi mật khẩu được đặt trước đó (PWD_LEN khác 0), thẻ sẽ tự động bị khóa sau khi bật lại nguồn.
Nỗ lực khóa thẻ bị khóa hoặc khóa thẻ không có mật khẩu không thành công và bit lỗi
LOCK_UNLOCK_FAILED được đặt trong thanh ghi trạng thái thẻ.

588/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

Mở khóa thẻ
1. Chọn một thẻ (SELECT/DESELECT_CARD, CMD7), nếu chưa có thẻ nào được chọn.

2. Xác định độ dài khối (SET_BLOCKLEN, CMD16) để gửi, được cho bởi 8-bit
chế độ khóa thẻ/mở khóa (byte 0 trong Bảng 158), PWD_LEN 8 bit và số byte của mật khẩu hiện
tại.

3. Gửi LOCK/UNLOCK (CMD42) với kích thước khối dữ liệu phù hợp trên dòng dữ liệu
bao gồm cả CRC 16 bit. Khối dữ liệu cho biết chế độ (LOCK_UNLOCK = 0), độ dài (PWD_LEN) và chính
mật khẩu (PWD).

4. Khi mật khẩu trùng khớp, thẻ sẽ được mở khóa và CARD_IS_LOCKED


bit trạng thái sẽ bị xóa trong thanh ghi trạng thái thẻ. Khi mật khẩu được gửi không đúng về kích
thước và/hoặc nội dung và không tương ứng với mật khẩu dự kiến, bit lỗi
LOCK_UNLOCK_FAILED được đặt trong thanh ghi trạng thái thẻ và thẻ vẫn bị khóa.

Chức năng mở khóa chỉ có hiệu lực đối với phiên cấp nguồn hiện tại. Khi trường PWD không rõ ràng, thẻ
sẽ tự động bị khóa vào lần bật nguồn tiếp theo.

Nỗ lực mở khóa thẻ đã mở khóa không thành công và bit lỗi LOCK_UNLOCK_FAILED được đặt trong thanh ghi
trạng thái thẻ.

Buộc xóa
Nếu người dùng quên mật khẩu (nội dung NKT) thì có thể truy cập vào thẻ sau khi xóa toàn bộ dữ liệu
trên thẻ. Thao tác xóa cưỡng bức này sẽ xóa tất cả dữ liệu thẻ và tất cả dữ liệu mật khẩu.

1. Chọn một thẻ (SELECT/DESELECT_CARD, CMD7), nếu chưa có thẻ nào được chọn.

2. Đặt độ dài khối (SET_BLOCKLEN, CMD16) thành 1 byte. Chỉ có thẻ 8 bit
byte khóa/mở khóa (byte 0 trong Bảng 158) được gửi.

3. Gửi LOCK/UNLOCK (CMD42) với byte dữ liệu phù hợp trên dòng dữ liệu bao gồm CRC 16 bit. Khối dữ liệu
cho biết chế độ (ERASE = 1). Tất cả các bit khác phải được
số không.

4. Khi bit ERASE là bit duy nhất được đặt trong trường dữ liệu, tất cả nội dung thẻ sẽ bị xóa, bao
gồm các trường PWD và PWD_LEN và thẻ không còn bị khóa nữa. Khi bất kỳ bit nào khác được đặt,
bit lỗi LOCK_UNLOCK_FAILED được đặt trong thanh ghi trạng thái thẻ và thẻ sẽ giữ lại tất
cả dữ liệu của nó và vẫn bị khóa.

Nỗ lực sử dụng chức năng xóa cưỡng bức trên thẻ đã mở khóa không thành công và bit lỗi LOCK_UNLOCK_FAILED
được đặt trong thanh ghi trạng thái thẻ.

22.4.11 Đăng ký trạng thái thẻ

Định dạng phản hồi R1 chứa trường 32 bit có tên trạng thái thẻ. Trường này nhằm mục đích truyền thông
tin trạng thái thẻ (có thể được lưu trữ trong thanh ghi trạng thái cục bộ) đến máy chủ. Nếu không
được chỉ định khác, các mục trạng thái luôn liên quan đến lệnh đã ban hành trước đó.

Bảng 145 xác định các mục khác nhau của trạng thái. Các trường loại và điều kiện rõ ràng trong bảng
được viết tắt như sau:

RM0008 Phiên bản 21 589/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

Kiểu:
• E: bit lỗi
• S: bit trạng thái

• R: được phát hiện và thiết lập cho phản hồi lệnh thực tế
• X: được phát hiện và thiết lập trong quá trình thực thi lệnh. Máy chủ thẻ SDIO phải thăm dò
thẻ bằng cách đưa ra lệnh trạng thái để đọc các bit này.

Điều kiện rõ ràng:

• A: theo trạng thái hiện tại của thẻ


• B: luôn liên quan đến lệnh trước đó. Việc tiếp nhận một lệnh hợp lệ sẽ xóa nó (với
độ trễ một lệnh)

• C: xóa bằng cách đọc

Bảng 145. Trạng thái thẻ

Điều
Chút ít Mã định danh Kiểu Giá trị Sự miêu tả
kiện rõ ràng

Đối số địa chỉ lệnh nằm ngoài phạm vi cho


phép đối với thẻ này.
'0'= không có lỗi
ĐỊA CHỈ_ Hoạt động đọc/ghi nhiều khối hoặc
31 ERX C
OUT_OF_RANGE '1'= lỗi luồng là (mặc dù được bắt đầu ở một địa
chỉ hợp lệ) đang cố gắng đọc hoặc
ghi vượt quá dung lượng thẻ.

Đối số địa chỉ lệnh (theo độ dài khối


hiện được đặt) định vị khối dữ liệu đầu
tiên được căn chỉnh sai với các khối
vật lý thẻ.
'0'= không có lỗi
- Hoạt động đọc/ghi nhiều khối (mặc dù C
30 ĐỊA CHỈ_MISALIGN
'1'= lỗi được bắt đầu bằng tổ hợp địa
chỉ/độ dài khối hợp lệ) đang cố gắng
đọc hoặc ghi một khối dữ liệu không được
căn chỉnh với các khối vật lý của thẻ.

Đối số của lệnh


SET_BLOCKLEN vượt quá giá trị tối đa được
phép đối với thẻ hoặc độ dài khối được

'0'= không có lỗi


xác định trước đó là bất hợp pháp đối
- C
29 BLOCK_LEN_ERROR với lệnh hiện tại (ví dụ: máy chủ đưa ra
'1'= lỗi
lệnh ghi, độ dài khối hiện tại nhỏ hơn giá
trị tối đa được phép đối với thẻ và không
được phép ghi khối một phần)

-
'0'= không có lỗi Đã xảy ra lỗi trong chuỗi lệnh xóa.
28 ERASE_SEQ_ERROR C
'1'= lỗi

'0'= không có Đã xảy ra lựa chọn nhóm xóa không hợp


27 ERASE_PARAM BÁN TẠI C
lỗi '1'= có lỗi lệ để xóa.

'0'= không có Cố gắng lập trình một khối được bảo vệ


26 WP_VIOLATION BÁN TẠI C
lỗi '1'= có lỗi chống ghi.

590/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

Bảng 145. Trạng thái thẻ (tiếp theo)

Điều
Chút ít Mã định danh Kiểu Giá trị Sự miêu tả
kiện rõ ràng

'0' = thẻ
Khi đặt sẽ báo hiệu thẻ đã bị chủ nhà khóa
25 THẺ_IS_LOCKED SR đã được mở khóa MỘT

'1' = thẻ bị khóa

Đặt khi phát hiện lỗi trình tự hoặc mật


KHÓA MỞ KHÓA_ '0'= không có
24 BÁN TẠI khẩu trong lệnh khóa/mở khóa thẻ C
THẤT BẠI lỗi '1'= có lỗi

'0'= không có Việc kiểm tra CRC của lệnh trước đó không
23 COM_CRC_ERROR phòng cấp cứu B
lỗi '1'= có lỗi thành công.

'0'= không có
22 BẤT HỢP PHÁP_COMMAND phòng cấp cứu
Lệnh không hợp pháp đối với trạng thái thẻ B
lỗi '1'= có lỗi

'0'= thành công ECC nội bộ của thẻ đã được áp dụng nhưng
21 CARD_ECC_FAILED BÁN TẠI C
'1'= thất bại không thể sửa dữ liệu.

(Không được xác định theo tiêu chuẩn) Đã


'0'= không có lỗi
20 CC_ERROR phòng cấp cứu
xảy ra lỗi thẻ, lỗi này không liên quan đến C
'1'= lỗi
lệnh máy chủ.

(Không được xác định theo tiêu chuẩn) Một


'0'= không có lỗi thẻ chung liên quan đến việc thực thi
LỖI 19 BÁN TẠI C
lỗi '1'= có lỗi (và được phát hiện trong quá trình)
lệnh máy chủ cuối cùng (ví dụ: lỗi đọc hoặc ghi).

18 Dự trữ

17 Dự trữ

Có thể là một trong các lỗi sau:

– Thanh ghi CID đã được ghi sẵn và không


thể ghi đè được
'0'= không có lỗi '1'=
– Phần read-only của CSD không khớp với nội C
16 CID/CSD_OVERWRITE EX
lỗi dung thẻ

– Một nỗ lực đảo ngược các bit sao chép (được đặt

làm bản gốc) hoặc các bit WP

(không được bảo vệ) cố định đã được thực hiện

'0'= không được bảo vệ Đặt khi chỉ một phần không gian địa chỉ
15 WP_ERASE_SKIP BÁN TẠI C
'1'= được bảo vệ bị xóa do ghi hiện tại

'0'= đã bật Lệnh đã được thực thi mà không


14 CARD_ECC_DISABLED SX MỘT
'1'= bị vô hiệu hóa sử dụng ECC nội bộ.

Một chuỗi xóa đã bị xóa trước khi thực thi


vì đã nhận được lệnh hết trình tự xóa
'0'= đã xóa
- C
13 ERASE_RESET (các lệnh không phải là CMD35, CMD36,
'1'= đặt

CMD38 hoặc CMD13)

RM0008 Phiên bản 21 591/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

Bảng 145. Trạng thái thẻ (tiếp theo)


Điều
Chút ít Mã định danh Kiểu Giá trị Sự miêu tả
kiện rõ ràng

0 = Nhàn rỗi

1 = Sẵn sàng
2 = Nhận dạng
Trạng thái của thẻ khi nhận lệnh. Nếu việc
3 = Stby
thực thi lệnh gây ra thay đổi trạng
4 = Trần
thái, trạng thái đó sẽ hiển thị với máy chủ
12:9 CURRENT_STATE SR 5 = Dữ liệu B
trong phản hồi của lệnh tiếp theo. Bốn
6 = Rcv
bit được hiểu là số nhị phân trong khoảng từ
7 = Prg
0 đến 15.
8 = Dis
9 = Btst
10-15 = dành riêng

'0'= chưa sẵn sàng '1' Tương ứng với bộ đệm tín hiệu trống trên xe -
8 READY_FOR_DATA SR
= sẵn sàng buýt

Nếu được đặt, thẻ không chuyển sang


'0'= không có lỗi
7 SWITCH_ERROR BÁN TẠI
chế độ dự kiến theo yêu cầu của B
'1'= lỗi chuyển đổi
Lệnh CHUYỂN ĐỔI

6 Đặt trước

Thẻ sẽ mong đợi ACMD hoặc một dấu


'0' = Đã tắt
5 APP_CMD SR hiệu cho thấy lệnh đã được thực hiện C
'1' = Đã bật
được hiểu là ACMD

4 Dành riêng cho thẻ I/O SD

'0'= không có Lỗi trong trình tự của quá


3 AKE_SEQ_ERROR phòng cấp cứu C
lỗi '1'= có lỗi trình xác thực

2 Dành riêng cho các lệnh cụ thể của ứng dụng

1
Dành riêng cho chế độ thử nghiệm của nhà sản xuất
0

22.4.12 Thanh ghi trạng thái SD

Trạng thái SD chứa các bit trạng thái có liên quan đến các tính năng độc quyền của thẻ nhớ
SD và có thể được sử dụng cho mục đích sử dụng dành riêng cho ứng dụng trong tương lai. Kích
thước của Trạng thái SD là một khối dữ liệu 512 bit. Nội dung của thanh ghi này được truyền
đến máy chủ thẻ SDIO nếu ACMD13 được gửi (CMD55 theo sau là CMD13). ACMD13 chỉ có thể được gửi
tới thẻ ở trạng thái truyền (thẻ được chọn).

Bảng 146 xác định các mục khác nhau của thanh ghi trạng thái SD. Các trường loại và điều
kiện rõ ràng trong bảng được viết tắt như sau:

Kiểu:
• E: bit lỗi
• S: bit trạng thái

• R: được phát hiện và thiết lập cho phản hồi lệnh thực tế
• X: được phát hiện và thiết lập trong quá trình thực thi lệnh. Máy chủ thẻ SDIO phải thăm dò
thẻ bằng cách đưa ra lệnh trạng thái để đọc các bit này

592/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

Điều kiện rõ ràng:

• A: theo trạng thái hiện tại của thẻ


• B: luôn liên quan đến lệnh trước đó. Việc tiếp nhận một lệnh hợp lệ sẽ xóa nó (với
độ trễ một lệnh)

• C: xóa bằng cách đọc

Bảng 146. Trạng thái SD

Điều
Chút ít Mã định danh Kiểu Giá trị Sự miêu tả
kiện rõ ràng

Hiển thị chiều rộng bus dữ liệu


'00'= 1 (mặc định)
hiện được xác định được
'01'= dành riêng
511: 510 DAT_BUS_WIDTH SR xác định bởi MỘT
'10'= chiều rộng 4 bit
Lệnh SET_BUS_WIDTH
'11'= dành riêng

Thẻ đang ở Chế độ hoạt động Bảo


'0'= Không ở chế độ
509 SECURED_MODE SR mật (tham khảo “Thông số Bảo MỘT
'1'= Ở Chế độ Bảo mật
mật SD”).

508: 496 Dự trữ

Trong tương lai, 8 LSB sẽ '00xxh'=

Thẻ nhớ SD được sử dụng để xác định các định nghĩa khác nhau trong Thông
số vật lý Ver1.01- các biến thể của bộ nhớ SD 2.00
('x'= không quan tâm). Thẻ (mỗi bit sẽ xác định các thẻ sau hiện là
495: 480 SD_CARD_TYPE SR loại SD khác nhau). 8 được xác định: MỘT

MSB sẽ được sử dụng để xác định

'0000'= Thẻ SD RD/WR thông thường. Thẻ SD không tuân thủ '0001'= Thẻ
SD ROM với đặc tả lớp vật lý SD
hiện tại.

SIZE_OF_PROTE Kích thước của khu vực được bảo vệ (Xem


479: 448 SR (Xem bên dưới) MỘT

CT ED_AREA bên dưới)

Cấp tốc độ của thẻ (Xem bên dưới)


447: 440 TỐC ĐỘ_LỚP SR (Xem bên dưới) MỘT

Hiệu suất di chuyển được biểu thị bằng


HIỆU SUẤT_
439: 432 SR bước 1 [MB/s]. (Xem bên dưới) MỘT
DI CHUYỂN
(Xem bên dưới)

Kích thước của Úc

431:428 AU_SIZE SR (Xem bên dưới) MỘT

(Xem bên dưới)

427:424 Đã đặt trước

Số lượng AU bị xóa cùng một lúc


423:408 ERASE_SIZE SR (Xem bên dưới) MỘT

Giá trị thời gian chờ để xóa các vùng

407:402 ERASE_TIMEOUT SR được chỉ định bởi (Xem bên dưới) MỘT

ĐƠN VỊ_OF_ERASE_AU

Đã sửa giá trị offset được thêm vào để xóa


401:400 ERASE_OFFSET SR (Xem bên dưới) MỘT
thời gian.

399:312 Đã đặt trước

311:0 Dành riêng cho nhà sản xuất

RM0008 Phiên bản 21 593/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

SIZE_OF_PROTECTED_AREA
Việc thiết lập trường này khác nhau giữa thẻ tiêu chuẩn và thẻ dung lượng cao. Đối với thẻ
có dung lượng tiêu chuẩn, dung lượng vùng bảo vệ được tính như sau:

Khu vực được bảo vệ = SIZE_OF_PROTECTED_AREA_* MULT * BLOCK_LEN.

SIZE_OF_PROTECTED_AREA được đơn vị chỉ định trong MULT*BLOCK_LEN.

Trong trường hợp thẻ dung lượng cao, dung lượng của khu vực được bảo vệ được chỉ định trong trường này:

Khu vực được bảo vệ = SIZE_OF_PROTECTED_AREA

SIZE_OF_PROTECTED_AREA được đơn vị chỉ định theo byte.

TỐC ĐỘ_CLASS

Trường 8 bit này cho biết loại tốc độ và giá trị có thể được tính bằng PW/2 (trong đó PW là hiệu
suất ghi).

Bảng 147. Trường mã lớp tốc độ

TỐC ĐỘ_CLASS Định nghĩa giá trị

00h Lớp 0

01h Lớp 2

02h Lớp 4

03h lớp 6

04h – FFh Kín đáo

PERFORMANCE_MOVE
Trường 8 bit này biểu thị Pm (di chuyển hiệu suất) và giá trị có thể được đặt theo bước 1 [MB/
giây]. Nếu thẻ không di chuyển RU đã sử dụng (đơn vị ghi), Pm sẽ được coi là vô cùng. Đặt trường
thành FFh có nghĩa là vô cùng.

Bảng 148. Trường di chuyển hiệu suất

PERFORMANCE_MOVE Định nghĩa giá trị

00h Không xác định

01h 1 [MB/giây]

02h 02h 2 [MB/giây]

--------- ---------

FEh 254 [MB/giây]

FFh vô hạn

AU_SIZE
Trường 4 bit này cho biết kích thước AU và giá trị có thể được chọn theo lũy thừa 2 cơ sở từ 16
KB.

594/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

Bảng 149. Trường AU_SIZE

AU_SIZE Định nghĩa giá trị

00h Không xác định

01h 16 KB

02h 32 KB

03h 64 KB

04h 128 KB

05h 256 KB

06h 512 KB

07h 1 MB

08h 2 MB

09h 4 MB

À – Fh Kín đáo

Kích thước AU tối đa, phụ thuộc vào dung lượng thẻ, được xác định trong Bảng 150. Thẻ có thể được
đặt thành bất kỳ kích thước AU nào giữa kích thước RU và kích thước AU tối đa.

Bảng 150. Kích thước AU tối đa

Dung tích 16-64MB 128-256MB 512 MB 1-32GB

Kích thước AU tối đa 512 KB 1 MB 2 MB 4 MB

ERASE_SIZE
Trường 16 bit này biểu thị NERASE. Khi số NERASE của AU bị xóa, giá trị thời gian chờ được chỉ
định bởi ERASE_TIMEOUT (Tham khảo ERASE_TIMEOUT). Máy chủ nên xác định số lượng AU thích hợp sẽ
bị xóa trong một thao tác để máy chủ có thể hiển thị tiến trình của thao tác xóa. Nếu trường này
được đặt thành 0 thì tính toán thời gian chờ xóa sẽ không được hỗ trợ.

Bảng 151. Xóa trường kích thước

ERASE_SIZE Định nghĩa giá trị

0000 giờ Tính toán thời gian chờ xóa không được hỗ trợ.

0001 giờ 1 AU

0002h 2 AU

0003h 3 AU

--------- ---------

FFFFh 65535 Úc

ERASE_TIMEOUT
Trường 6 bit này biểu thị TERASE và giá trị biểu thị thời gian chờ xóa khỏi offset khi nhiều AU bị

xóa như được chỉ định bởi ERASE_SIZE. Phạm vi của

RM0008 Phiên bản 21 595/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

ERASE_TIMEOUT có thể được xác định là tối đa 63 giây và nhà sản xuất thẻ có thể chọn bất kỳ
kết hợp ERASE_SIZE và ERASE_TIMEOUT nào tùy thuộc vào việc triển khai. Việc xác định
ERASE_TIMEOUT sẽ xác định ERASE_SIZE.

Bảng 152. Xóa trường hết thời gian chờ

ERASE_TIMEOUT Định nghĩa giá trị

00 Tính toán thời gian chờ xóa không được hỗ trợ.

01 1 [giây]

02 2 giây]

03 3 [giây]

--------- ---------

63 63 [giây]

ERASE_OFFSET

Trường 2 bit này biểu thị TOFFSET và có thể chọn một trong bốn giá trị. Trường này vô nghĩa

nếu trường ERASE_SIZE và ERASE_TIMEOUT được đặt thành 0.

Bảng 153. Xóa trường offset

ERASE_OFFSET Định nghĩa giá trị

0 giờ
0 [giây]

1 giờ
1 [giây]

2 giờ
2 giây]

3 giờ
3 [giây]

Chế độ I/O 22.4.13 SD

Ngắt I/O SD

Để cho phép thẻ SD I/O làm gián đoạn mô-đun MultiMediaCard/SD, chức năng ngắt có sẵn trên một chốt
trên giao diện SD. Chân 8, được sử dụng làm SDIO_D1 khi hoạt động ở chế độ SD 4 bit, báo hiệu các
thẻ ngắt tới mô-đun MultiMediaCard/SD. Việc sử dụng ngắt là tùy chọn đối với mỗi thẻ hoặc chức
năng trong thẻ. Ngắt I/O SD có độ nhạy cao, có nghĩa là đường ngắt phải được giữ ở trạng thái
hoạt động (thấp) cho đến khi nó được mô-đun MultiMediaCard/SD nhận dạng và xử lý hoặc được
xác nhận lại do kết thúc khoảng thời gian ngắt. Sau khi mô-đun MultiMediaCard/SD xử lý ngắt, bit
trạng thái ngắt sẽ bị xóa thông qua thao tác ghi I/O vào bit thích hợp trong các thanh ghi bên
trong của thẻ I/O SD. Đầu ra ngắt của tất cả các thẻ I/O SD đang hoạt động ở mức thấp và ứng
dụng phải cung cấp điện trở kéo lên bên ngoài trên tất cả các đường dữ liệu (SDIO_D[3:0]). Mô-đun
MultiMediaCard/SD chỉ lấy mẫu mức chân 8 (SDIO_D/IRQ) vào bộ phát hiện ngắt trong
khoảng thời gian ngắt. Vào mọi thời điểm khác, mô-đun MultiMediaCard/SD sẽ bỏ qua giá trị này.

Khoảng thời gian ngắt được áp dụng cho cả hoạt động bộ nhớ và I/O. Định nghĩa về khoảng thời gian
ngắt đối với các hoạt động với các khối đơn khác với định nghĩa đối với việc truyền dữ liệu nhiều
khối.

596/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

SD I/O tạm dừng và tiếp tục

Trong I/O SD đa chức năng hoặc thẻ có cả chức năng I/O và bộ nhớ, có nhiều thiết bị (I/O và
bộ nhớ) chia sẻ quyền truy cập vào bus MMC/SD. Để chia sẻ quyền truy cập vào mô-đun MMC/SD giữa
nhiều thiết bị, thẻ I/O SD và thẻ combo tùy chọn triển khai khái niệm tạm dừng/tiếp tục. Khi
thẻ hỗ trợ tạm dừng/tiếp tục, mô-đun MMC/SD có thể tạm thời dừng hoạt động truyền dữ liệu đến
một chức năng hoặc bộ nhớ (tạm dừng) để giải phóng bus cho việc truyền có mức độ ưu tiên cao hơn
sang chức năng hoặc bộ nhớ khác. Sau khi quá trình truyền có mức độ ưu tiên cao hơn này hoàn tất,
quá trình truyền ban đầu sẽ được tiếp tục (bắt đầu lại) ở nơi nó đã dừng lại. Hỗ trợ tạm dừng/tiếp
tục là tùy chọn trên cơ sở mỗi thẻ. Để thực hiện hoạt động tạm dừng/tiếp tục trên bus MMC/
SD, mô-đun MMC/SD thực hiện các bước sau:

1. Xác định hàm hiện đang sử dụng (các) dòng SDIO_D [3:0]

2. Yêu cầu tạm dừng giao dịch có mức độ ưu tiên thấp hơn hoặc chậm hơn

3. Chờ giao dịch tạm dừng hoàn tất

4. Bắt đầu giao dịch có mức độ ưu tiên cao hơn

5. Chờ hoàn thành giao dịch có mức độ ưu tiên cao hơn

6. Khôi phục giao dịch bị đình chỉ

Đọc I/O SDĐợi

Hoạt động ReadWait (RW) tùy chọn chỉ được xác định cho chế độ SD 1 bit và 4 bit. Hoạt động ReadWait
cho phép mô-đun MMC/SD báo hiệu cho thẻ rằng nó đang đọc nhiều thanh ghi (IO_RW_EXTENDED, CMD53)
để tạm thời ngừng truyền dữ liệu trong khi cho phép mô-đun MMC/SD gửi lệnh đến bất kỳ chức năng nào
trong thiết bị I/O SD . Để xác định khi nào thẻ hỗ trợ giao thức ReadWait, mô-đun MMC/SD phải
kiểm tra các bit khả năng trong thanh ghi thẻ bên trong. Thời gian cho ReadWait dựa trên khoảng
thời gian gián đoạn.

22.4.14 Lệnh và phản hồi

Các lệnh chung và dành riêng cho ứng dụng

Hệ thống mô-đun máy chủ thẻ SD được thiết kế để cung cấp giao diện chuẩn cho nhiều loại ứng dụng.
Trong môi trường này, cần có các tính năng ứng dụng/khách hàng cụ thể. Để triển khai các tính
năng này, hai loại lệnh chung được xác định trong tiêu chuẩn: lệnh dành riêng cho ứng dụng (ACMD)
và lệnh chung (GEN_CMD).

Khi thẻ nhận được lệnh APP_CMD (CMD55), thẻ sẽ mong đợi lệnh tiếp theo là lệnh dành riêng cho
ứng dụng. ACMD có cấu trúc giống như các lệnh MultiMediaCard thông thường và có thể có cùng
số CMD. Thẻ nhận dạng nó là ACMD vì nó xuất hiện sau APP_CMD (CMD55). Khi lệnh ngay sau
APP_CMD (CMD55) không phải là lệnh dành riêng cho ứng dụng được xác định thì lệnh tiêu chuẩn sẽ
được sử dụng. Ví dụ: khi thẻ có định nghĩa cho SD_STATUS (ACMD13) và nhận được CMD13 ngay
sau APP_CMD (CMD55), điều này được hiểu là SD_STATUS (ACMD13). Tuy nhiên, khi thẻ nhận được CMD7
ngay sau APP_CMD (CMD55) và thẻ không có định nghĩa cho ACMD7, thì điều này được hiểu là CMD7
(SELECT/DESELECT_CARD) tiêu chuẩn.

Để sử dụng một trong các ACMD dành riêng cho nhà sản xuất, Máy chủ thẻ SD phải thực hiện
các bước sau:

RM0008 Phiên bản 21 597/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

1. Gửi APP_CMD (CMD55)


Thẻ phản hồi với mô-đun MultiMediaCard/SD, cho biết rằng bit APP_CMD đã được đặt và ACMD hiện
được mong đợi.

2. Gửi ACMD được yêu cầu


Thẻ phản hồi với mô-đun MultiMediaCard/SD, cho biết rằng bit APP_CMD đã được đặt và lệnh được
chấp nhận được hiểu là ACMD. Khi một nonACMD được gửi đi, nó sẽ được thẻ xử lý như một lệnh
MultiMediaCard thông thường và bit APP_CMD trong thanh ghi trạng thái thẻ vẫn trống.

Khi một lệnh không hợp lệ được gửi (không phải ACMD hay CMD), lệnh đó được xử lý như một lỗi
lệnh bất hợp pháp MultiMediaCard tiêu chuẩn.

Giao dịch bus cho GEN_CMD giống như các lệnh đọc hoặc ghi khối đơn (WRITE_BLOCK, CMD24
hoặc READ_SINGLE_BLOCK,CMD17). Trong trường hợp này, đối số biểu thị hướng truyền dữ liệu chứ không
phải địa chỉ và khối dữ liệu có định dạng và ý nghĩa dành riêng cho nhà cung cấp.

Thẻ phải được chọn (ở trạng thái truyền) trước khi gửi GEN_CMD (CMD56). Kích thước khối dữ liệu
được xác định bởi SET_BLOCKLEN (CMD16). Phản hồi tới GEN_CMD (CMD56) có định dạng R1b.

Các loại lệnh

Cả lệnh chung và lệnh dành riêng cho ứng dụng đều được chia thành bốn loại sau:

• lệnh quảng bá (BC): gửi tới tất cả các thẻ; không có phản hồi nào được trả lại

• Lệnh phát có phản hồi (BCR): gửi tới tất cả các thẻ; phản hồi nhận được
từ tất cả các thẻ cùng một lúc

• Lệnh có địa chỉ (điểm-điểm) (AC): gửi tới thẻ đã được chọn; làm
không bao gồm việc truyền dữ liệu trên (các) đường SDIO_D

• Lệnh truyền dữ liệu có địa chỉ (điểm-điểm) (ADTC): được gửi tới thẻ đã được chọn; bao gồm việc
truyền dữ liệu trên (các) đường SDIO_D.

Định dạng lệnh

Xem Bảng 138 để biết các định dạng lệnh.

Các lệnh dành cho mô-đun MultiMediaCard/SD

Bảng 154. Lệnh ghi theo khối

CMD Định dạng


Loại đối số Viết tắt Sự miêu tả
mục lục phản hồi

Xác định số khối sẽ được chuyển


[31:16] được
trong lệnh đọc hoặc ghi nhiều
ac CMD23 đặt thành 0 R1 SET_BLOCK_COUNT
khối tiếp theo.
[15:0] số khối

[31:0] địa Ghi một khối có kích thước được chọn


quảng cáo CMD24 R1 VIẾT_BLOCK
chỉ dữ liệu bằng lệnh SET_BLOCKLEN.

Liên tục ghi các khối dữ liệu cho


[31:0] địa đến khi có STOP_TRANSMISSION
quảng cáo CMD25 R1 VIẾT_MULTIPLE_BLOCK
chỉ dữ liệu theo sau hoặc nhận được số khối được
yêu cầu.

598/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

Bảng 154. Lệnh ghi theo khối (tiếp theo)

chỉ Định dạng


Loại đối số Viết tắt Sự miêu tả
số CMD phản hồi

Lập trình đăng ký nhận dạng thẻ. Lệnh


này chỉ được ban hành một lần cho
mỗi thẻ. Thẻ chứa phần cứng để ngăn
CMD26 adtc [31:0] bit thứ R1 CHƯƠNG TRÌNH_CID chặn hoạt động này sau lần lập
trình đầu tiên.
Thông thường lệnh này được dành riêng
cho nhà sản xuất.

Lập trình các bit lập trình của CSD.


CMD27 adtc [31:0] bit thứ R1 CHƯƠNG TRÌNH_CSD

Bảng 155. Lệnh bảo vệ ghi theo khối

chỉ Định dạng


Loại đối số Viết tắt Sự miêu tả
số CMD phản hồi

Nếu thẻ có tính năng bảo vệ ghi, lệnh


này sẽ đặt bit bảo vệ ghi của nhóm địa
[31:0] địa
ac CMD28 R1b SET_WRITE_PROT chỉ. Các thuộc tính bảo vệ ghi được mã hóa
chỉ dữ liệu
trong dữ liệu cụ thể của thẻ
(WP_GRP_SIZE).

Nếu thẻ cung cấp tính năng bảo vệ


[31:0] địa
CMD29 ac R1b CLR_WRITE_PROT ghi, lệnh này sẽ xóa bit bảo vệ ghi của
chỉ dữ liệu
nhóm được đánh địa chỉ.

Nếu thẻ cung cấp tính năng bảo vệ


[31:0] ghi
ghi, lệnh này sẽ yêu cầu thẻ gửi trạng
quảng cáo CMD30 địa chỉ dữ R1 SEND_WRITE_PROT
thái của các bit bảo vệ ghi.
liệu bảo vệ

CMD31 dành riêng

Bảng 156. Lệnh xóa

chỉ Định dạng


Kiểu Lý lẽ Viết tắt Sự miêu tả
số CMD phản hồi

CMD32
Kín đáo. Không thể sử dụng các chỉ mục lệnh này để duy trì khả năng tương thích ngược với các phiên bản cũ
...
hơn của MultiMediaCard.
CMD34

Đặt địa chỉ của nhóm xóa đầu tiên


ac CMD35 [31:0] địa chỉ dữ liệu R1 ERASE_GROUP_START trong phạm vi được chọn để xóa.

Đặt địa chỉ của nhóm xóa cuối cùng


ac CMD36 [31:0] địa chỉ dữ liệu R1 ERASE_GROUP_END trong phạm vi liên tục được chọn để
xóa.

Kín đáo. Chỉ mục lệnh này không thể được sử dụng để duy trì khả năng tương thích ngược với các phiên bản
CMD37
cũ hơn của MultiMediaCards

Xóa tất cả các khối ghi đã chọn


ac CMD38 [31:0] nội dung nhỏ R1 TẨY XÓA
trước đó.

RM0008 Phiên bản 21 599/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

Bảng 157. Các lệnh chế độ I/O

chỉ Định dạng


Kiểu Lý lẽ Viết tắt Sự miêu tả
số CMD phản hồi

Được sử dụng để ghi và đọc các trường dữ


[31:16] RCA liệu (đăng ký) 8 bit. Lệnh này đề cập đến một
[15:15] cờ ghi thẻ và một thanh ghi, đồng thời cung cấp
đăng ký dữ liệu để ghi nếu cờ ghi được đặt.
ac CMD39 R4 FAST_IO
[14:8] địa Phản hồi R4 chứa dữ liệu được đọc từ
chỉ đăng ký thanh ghi địa chỉ. Lệnh này truy
[7:0] đăng ký dữ liệu cập vào các thanh ghi phụ thuộc vào ứng dụng
không được xác định trong tiêu chuẩn MultiMediaCard.

CMD40 bcr [31:0] nội dung nhỏ R5 GO_IRQ_STATE Đặt hệ thống ở chế độ ngắt.

CMD41 dành riêng

Bảng 158. Khóa thẻ

chỉ Định dạng


Loại đối số Viết tắt Sự miêu tả
số CMD phản hồi

Đặt/đặt lại mật khẩu hoặc khóa/mở khóa thẻ.


CMD42 adtc [31:0] bit thứ R1b KHÓA MỞ KHÓA Kích thước của khối dữ liệu được đặt bằng

lệnh SET_BLOCK_LEN.

CMD43
... Kín đáo
CMD54

Bảng 159. Các lệnh dành riêng cho ứng dụng

CMD Định dạng


Loại đối số Viết tắt Sự miêu tả
mục lục phản hồi

Cho thẻ biết rằng lệnh tiếp theo là lệnh dành


[31:16] RCA
ac CMD55 R1 APP_CMD riêng cho ứng dụng chứ không phải là lệnh tiêu
[15:0] nội dung nhỏ
chuẩn

Được sử dụng để truyền khối dữ liệu vào thẻ hoặc

để lấy khối dữ liệu từ thẻ cho các lệnh dành


[31:1] thứ gì đó - -
quảng cáo CMD56 riêng cho mục đích chung/ứng dụng. Kích thước
[0]: RD/WR
của khối dữ liệu sẽ được đặt bằng lệnh
SET_BLOCK_LEN.

CMD57
... Kín đáo.
CMD59

CMD60
... Dành riêng cho nhà sản xuất.

CMD63

600/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

22.5 Định dạng phản hồi


Tất cả các phản hồi được gửi qua dòng lệnh MCCMD SDIO_CMD. Việc truyền phản hồi luôn bắt
đầu bằng bit bên trái của chuỗi bit tương ứng với từ mã phản hồi. Độ dài mã phụ thuộc vào loại
phản hồi.

Phản hồi luôn bắt đầu bằng bit bắt đầu (luôn là 0), theo sau là bit chỉ hướng truyền (thẻ
= 0). Giá trị được biểu thị bằng x trong các bảng bên dưới biểu thị một mục nhập có thể thay
đổi. Tất cả các phản hồi, ngoại trừ loại phản hồi R3, đều được bảo vệ bởi CRC.
Mỗi từ mã lệnh được kết thúc bằng bit cuối cùng (luôn luôn là 1).

Có năm loại phản hồi. Các định dạng của chúng được xác định như sau:

22.5.1 R1 (lệnh phản hồi bình thường)

Độ dài mã = 48 bit. Các bit 45:40 biểu thị chỉ mục của lệnh được phản hồi, giá trị này được hiểu
là số được mã hóa nhị phân (trong khoảng từ 0 đến 63). Trạng thái của thẻ được mã hóa thành 32 bit.

Bảng 160. Phản hồi R1

Vị trí bit Chiều rộng (bit Giá trị Sự miêu tả

47 1 0 Bit bắt đầu

46 1 0 Bit truyền

[45:40] 6 X Chỉ mục lệnh

[39:8] 32 X Trạng thái thẻ

[7:1] 7 X CRC7

0 1 1 Bit cuối

22.5.2 R1b

Nó giống hệt R1 với tín hiệu bận tùy chọn được truyền trên đường dữ liệu. Thẻ có thể trở nên bận
sau khi nhận được các lệnh này tùy theo trạng thái của thẻ trước khi nhận lệnh.

22.5.3 R2 (thanh ghi CID, CSD)

Độ dài mã = 136 bit. Nội dung của thanh ghi CID được gửi dưới dạng phản hồi cho lệnh CMD2 và
CMD10. Nội dung của thanh ghi CSD được gửi dưới dạng phản hồi tới CMD9. Chỉ các bit [127...1] của
CID và CSD được truyền, bit dự trữ [0] của các thanh ghi này được thay thế bằng bit cuối của
phản hồi. Thẻ cho biết quá trình xóa đang diễn ra bằng cách giữ MCDAT ở mức thấp. Thời gian xóa
thực tế có thể khá lâu và máy chủ có thể phát lệnh CMD7 để bỏ chọn thẻ.

Bảng 161. Phản hồi R2

Vị trí bit Chiều rộng (bit Giá trị Sự miêu tả

135 1 0 Bit bắt đầu

134 1 0 Bit truyền

[133:128] 6 '111111' Chỉ mục lệnh

RM0008 Phiên bản 21 601/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

Bảng 161. Phản hồi R2 (tiếp theo)

Vị trí bit Chiều rộng (bit Giá trị Sự miêu tả

[127:1] 127 X Trạng thái thẻ

0 1 1 Bit cuối

22.5.4 R3 (thanh ghi OCR)

Độ dài mã: 48 bit. Nội dung của thanh ghi OCR được gửi dưới dạng phản hồi tới CMD1.
Mã hóa mức độ như sau: cửa sổ điện áp hạn chế = thấp, thẻ bận = thấp.

Bảng 162. Phản hồi R3

Vị trí bit Chiều rộng (bit Giá trị Sự miêu tả

47 1 0 Bit bắt đầu

46 1 0 Bit truyền

[45:40] 6 '111111' Kín đáo

[39:8] 32 X đăng ký OCR

[7:1] 7 '1111111' Kín đáo

0 1 1 Bit cuối

22.5.5 R4 (Vào/ra nhanh)

Độ dài mã: 48 bit. Trường đối số chứa RCA của thẻ địa chỉ, địa chỉ đăng ký để đọc hoặc
ghi vào và nội dung của nó.

Bảng 163. Phản hồi R4

Vị trí bit Chiều rộng (bit Giá trị Sự miêu tả

47 1 0 Bit bắt đầu

46 1 0 Bit truyền

[45:40] 6 '100111' CMD39

[31:16] 16 X RCA

[39:8] Trường đối số [15:8] số 8 X Đăng ký địa chỉ

[7:0] số 8 X Đọc nội dung đăng ký

[7:1] 7 X CRC7

0 1 1 Bit cuối

22.5.6 R4b

Chỉ dành cho SD I/O: thẻ SDIO nhận CMD5 sẽ phản hồi bằng phản hồi SDIO duy nhất R4.
Định dạng là:

602/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

Bảng 164. Phản hồi R4b

Vị trí bit Chiều rộng (bit) Giá trị Sự miêu tả

47 1 0 Bit bắt đầu

46 1 0 Bit truyền

[45:40] 6 X Kín đáo

39 16 X Thẻ đã sẵn sàng

[38:36] 3 X Số lượng chức năng I/O

[39:8] Trường đối số 35 1 X Bộ nhớ hiện tại

[34:32] 3 X Thứ gì đó

[31:8] 24 X I/O ORC

[7:1] 7 X Kín đáo

0 1 1 Bit cuối

Khi thẻ SD I/O đã nhận được CMD5, phần I/O của thẻ đó sẽ được kích hoạt để phản hồi bình
thường với tất cả các lệnh tiếp theo. Việc bật I/O này của chức năng trong thẻ I/O sẽ vẫn được đặt
cho đến khi thẻ nhận được thiết lập lại, chu kỳ cấp nguồn hoặc CMD52 với chức năng ghi vào thiết
lập lại I/O. Lưu ý rằng thẻ chỉ có bộ nhớ SD có thể phản hồi với CMD5. Phản hồi thích hợp cho thẻ
chỉ có bộ nhớ sẽ là Bộ nhớ hiện tại = 1 và Số lượng chức năng I/O = 0. Thẻ chỉ có bộ nhớ được
chế tạo để đáp ứng thông số kỹ thuật của Thẻ nhớ SD phiên bản 1.0 sẽ phát hiện CMD5 là một lệnh bất
hợp pháp chứ không phải trả lời. Máy chủ nhận biết I/O sẽ gửi CMD5. Nếu thẻ phản hồi với phản hồi
R4, máy chủ sẽ xác định cấu hình của thẻ dựa trên dữ liệu có trong phản hồi R4.

22.5.7 R5 (yêu cầu ngắt)

Chỉ dành cho MultiMediaCard. Độ dài mã: 48 bit. Nếu phản hồi được tạo bởi máy chủ, trường RCA
trong đối số sẽ là 0x0.

Bảng 165. Phản hồi R5

Vị trí bit Chiều rộng (bit Giá trị Sự miêu tả

47 1 0 Bit bắt đầu

46 1 0 Bit truyền

[45:40] 6 '101000' CMD40

RCA [31:16] của quân bài


[31:16] 16 X
thắng hoặc của chủ nhà
[39:8] Trường đối số
Không xác định. Có thể được sử
[15:0] 16 X
dụng cho dữ liệu IRQ

[7:1] 7 X CRC7

0 1 1 Bit cuối

RM0008 Phiên bản 21 603/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

22.5.8 R6

Chỉ dành cho đầu vào/ra SD. Phản hồi bình thường đối với CMD3 của thiết bị bộ nhớ. Nó được thể hiện
trong Bảng 166.

Bảng 166. Phản hồi R6

Vị trí bit Chiều rộng (bit) Giá trị Sự miêu tả

47 1 0 Bit bắt đầu

46 1 0 Bit truyền

[45:40] 6 '101000' CMD40

[31:16] 16 X RCA [31:16] của thẻ trúng thưởng hoặc của chủ nhà
[39:8] Trường
đối số 16
[15:0] X Không xác định. Có thể được sử dụng cho dữ liệu IRQ

[7:1] 7 X CRC7

0 1 1 Bit cuối

Các bit trạng thái thẻ [23:8] được thay đổi khi CMD3 được gửi đến thẻ chỉ I/O. Trong trường
hợp này, 16 bit phản hồi là các giá trị chỉ I/O SD:
• Bit [15] COM_CRC_ERROR
• Bit [14] ILLEGAL_COMMAND
• LỖI Bit [13]
• Bit [12:0] Dành riêng

22.6 Hoạt động dành riêng cho thẻ SDIO I/O


Các tính năng sau đây là các hoạt động dành riêng cho SD I/O:

• Hoạt động chờ đọc SDIO bằng tín hiệu SDIO_D2

• Thao tác chờ đọc SDIO bằng cách dừng đồng hồ

• SDIO tạm dừng/tiếp tục hoạt động (tạm dừng ghi và đọc)

• Ngắt SDIO

SDIO chỉ hỗ trợ các hoạt động này nếu bit SDIO_DCTRL[11] được đặt, ngoại trừ việc tạm dừng
đọc không cần triển khai phần cứng cụ thể.

22.6.1 Thao tác chờ đọc I/O SDIO bằng tín hiệu SDIO_D2

Có thể bắt đầu khoảng thời gian đọc trước khi nhận được khối đầu tiên: khi đường dẫn dữ
liệu được bật (bộ bit SDIO_DCTRL[0]), hoạt động dành riêng cho SDIO được bật (bộ
bit SDIO_DCTRL[11]), bắt đầu chờ đọc ( SDI0_DCTRL[10] =0 và SDI_DCTRL[8] =1) và hướng dữ
liệu là từ thẻ sang SDIO (SDIO_DCTRL[1] = 1), DPSM trực tiếp chuyển từ chế độ Chờ sang chế
độ Đọc. Trong Readwait, DPSM điều khiển SDIO_D2 về 0 sau 2 chu kỳ xung nhịp SDIO_CK. Ở trạng
thái này, khi bạn đặt bit RWSTOP (SDIO_DCTRL[9]), DPSM vẫn ở trạng thái Chờ thêm hai chu kỳ
xung nhịp SDIO_CK để điều khiển SDIO_D2 lên 1 trong một chu kỳ xung nhịp (theo thông số kỹ
thuật SDIO). DPSM sau đó bắt đầu đợi lại cho đến khi nhận được dữ liệu từ thẻ. DPSM sẽ
không bắt đầu khoảng thời gian chờ đọc trong khi nhận được một khối ngay cả khi bắt đầu chờ
đọc được thiết lập: khoảng thời gian chờ đọc sẽ bắt đầu sau khi nhận được CRC. Các

604/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

Bit RWSTOP phải được xóa để bắt đầu thao tác chờ đọc mới. Trong khoảng thời gian chờ
đọc, SDIO có thể phát hiện các ngắt SDIO trên SDIO_D1.

22.6.2 Hoạt động chờ đọc SDIO bằng cách dừng SDIO_CK

Nếu thẻ SDIO không hỗ trợ phương thức chờ đọc trước đó, SDIO có thể thực hiện chờ đọc bằng
cách dừng SDIO_CK (SDIO_DCTRL được đặt giống như trong phương thức được trình bày trong
Phần 22.6.1, nhưng SDIO_DCTRL[10] =1): DSPM dừng đồng hồ quay hai SDIO_CK sau bit kết thúc
của khối nhận được hiện tại và bắt đầu lại đồng hồ sau khi bit bắt đầu chờ đọc được đặt.

Khi SDIO_CK bị dừng, bất kỳ lệnh nào cũng có thể được cấp cho thẻ. Trong khoảng thời
gian đọc/chờ, SDIO có thể phát hiện các ngắt SDIO trên SDIO_D1.

22.6.3 SDIO tạm dừng/tiếp tục hoạt động

Trong khi gửi dữ liệu vào thẻ, SDIO có thể tạm dừng hoạt động ghi. bit
SDIO_CMD[11] được đặt và cho CPSM biết rằng lệnh hiện tại là lệnh tạm dừng. CPSM phân tích
phản hồi và khi nhận được ACK từ thẻ (chấp nhận tạm dừng), nó sẽ xác nhận DPSM không hoạt
động sau khi nhận được mã thông báo CRC của khối hiện tại.

Phần cứng không lưu số khối còn lại sẽ được gửi để hoàn thành thao tác bị tạm dừng (tiếp
tục).

Hoạt động ghi có thể bị tạm dừng bằng phần mềm, chỉ bằng cách tắt DPSM
(SDIO_DCTRL[0] =0) khi nhận được ACK của lệnh tạm dừng từ thẻ.
DPSM chuyển sang trạng thái Chờ.

Để tạm dừng quá trình đọc: DPSM đợi ở trạng thái Wait_r khi chức năng bị tạm dừng sẽ gửi
một gói hoàn chỉnh ngay trước khi dừng giao dịch dữ liệu. Ứng dụng tiếp tục đọc
RxFIFO cho đến khi FIF0 trống và DPSM tự động chuyển sang chế độ chờ.

22.6.4 SDIO ngắt

Các ngắt SDIO được phát hiện trên dòng SDIO_D1 sau khi bit SDIO_DCTRL[11] được đặt.

22.7 Hoạt động cụ thể của CE-ATA

Các tính năng sau đây là hoạt động cụ thể của CE-ATA:

• gửi tín hiệu vô hiệu hóa lệnh hoàn thành đến thiết bị CE-ATA

• nhận tín hiệu hoàn thành lệnh từ thiết bị CE-ATA


• báo hiệu sự hoàn thành của lệnh CE-ATA tới CPU, sử dụng bit trạng thái và/hoặc ngắt.

SDIO chỉ hỗ trợ các hoạt động này cho lệnh CE-ATA CMD61, nghĩa là nếu SDIO_CMD[14] được
đặt.

22.7.1 Tắt tín hiệu hoàn thành lệnh

Vô hiệu hóa tín hiệu hoàn thành lệnh được gửi theo chu kỳ 8 bit sau khi nhận được tín hiệu ngắn
phản hồi nếu bit 'cho phép hoàn thành CMD', SDIO_CMD[12], không được đặt và bit 'không ngắt
Cho phép', SDIO_CMD[13], được đặt.

RM0008 Phiên bản 21 605/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

CPSM chuyển sang trạng thái Chờ, tải thanh ghi dịch lệnh với chuỗi vô hiệu hóa “00001” và bộ đếm lệnh có

43. Tám chu kỳ sau, bộ kích hoạt sẽ chuyển CPSM sang trạng thái Gửi. Khi bộ đếm lệnh đạt 48, CPSM sẽ ở chế độ
chờ vì không có phản hồi nào được chờ đợi.

22.7.2 Kích hoạt tín hiệu hoàn thành lệnh

Nếu bit 'cho phép hoàn thành CMD' SDIO_CMD[12] được đặt và bit 'không ngắt Cho phép' SDIO_CMD[13] được đặt,

CPSM sẽ đợi tín hiệu hoàn thành lệnh ở trạng thái Waitcpl.

Khi nhận được '0' trên đường CMD, CPSM sẽ chuyển sang trạng thái Không hoạt động. Không có lệnh mới nào có

thể được gửi trong chu kỳ 7 bit. Sau đó, trong 5 chu kỳ cuối cùng (trong số 7 chu kỳ), đường CMD được điều
khiển về '1' ở chế độ kéo đẩy.

22.7.3 CE-ATA ngắt

Việc hoàn thành lệnh được báo hiệu đến CPU bằng bit trạng thái SDIO_STA[23]. Bit tĩnh này có thể được xóa bằng
bit rõ ràng SDIO_ICR[23].

Bit trạng thái SDIO_STA[23] có thể tạo ra một ngắt trên mỗi dòng ngắt, tùy thuộc vào bit mặt nạ SDIO_MASKx[23].

22.7.4 Hủy bỏ CMD61

Nếu tín hiệu vô hiệu hóa hoàn thành lệnh chưa được gửi và cần phải hủy bỏ CMD61 thì máy trạng thái lệnh
phải bị vô hiệu hóa. Sau đó nó sẽ ở trạng thái Không hoạt động và lệnh CMD12 có thể được gửi đi. Không

có tín hiệu vô hiệu hóa hoàn thành lệnh nào được gửi trong quá trình hoạt động.

22.8 Kiểm soát dòng CTNH

Chức năng điều khiển luồng CTNH được sử dụng để tránh lỗi chạy dưới FIFO (chế độ TX) và lỗi tràn (chế độ RX).

Hành vi này là dừng SDIO_CK và đóng băng các máy trạng thái SDIO. Việc truyền dữ liệu bị đình trệ trong khi

FIFO không thể truyền hoặc nhận dữ liệu. Chỉ các máy trạng thái được SDIOCLK cấp xung nhịp mới bị đóng băng,
giao diện AHB vẫn còn hoạt động. Do đó, FIFO có thể được lấp đầy hoặc làm trống ngay cả khi điều khiển luồng
được kích hoạt.

Để bật điều khiển luồng CTNH, bit thanh ghi SDIO_CLKCR[14] phải được đặt thành 1. Sau khi thiết lập lại Điều
khiển luồng bị tắt.

22.9 thanh ghi SDIO


Thiết bị giao tiếp với hệ thống thông qua các thanh ghi điều khiển rộng 32 bit có thể truy cập qua AHB.

Các thanh ghi ngoại vi phải được truy cập bằng từ (32-bit).

606/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

22.9.1 Thanh ghi điều khiển nguồn SDIO (SDIO_POWER)

Độ lệch địa chỉ: 0x00

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

PWRC
Kín đáo TRL

ồ ồ

Bit 31:2 Dự trữ, phải được giữ ở giá trị đặt lại.

[1:0] PWRCTRL: Các bit điều khiển nguồn điện.

Các bit này được sử dụng để xác định trạng thái chức năng hiện tại của đồng hồ thẻ: 00:

Tắt nguồn: đồng hồ trên thẻ đã dừng.


01: Dự trữ 10:

Dự trữ cấp nguồn 11: Bật


nguồn: thẻ đã được bấm giờ.

Ghi chú: Cần ít nhất bảy chu kỳ đồng hồ HCLK giữa hai lần truy cập ghi vào thanh ghi này.

22.9.2 Thanh ghi điều khiển đồng hồ SDI (SDIO_CLKCR)

Độ lệch địa chỉ: 0x04

Giá trị đặt lại: 0x0000 0000

Thanh ghi SDIO_CLKCR điều khiển đồng hồ đầu ra SDIO_CK.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

WID
NEKLC

CLKDIV
GNỜƯĐ

VASRWP
NE_CFWH

YỜUV
T

Kín đáo
TỆI

XE BUÝT

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:15 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 14 HWFC_EN: Bật điều khiển luồng HW 0b: Tắt điều

khiển luồng HW 1b: Bật điều khiển

luồng HW Khi bật Điều khiển luồng HW,

ý nghĩa của các tín hiệu ngắt TXFIFOE và RXFIFOF, xem định nghĩa thanh ghi trạng thái SDIO trong Phần
22.9.11 .

Bit 13 NEGEDGE: Bit chọn lệch pha SDIO_CK 0b: SDIO_CK được

tạo ở cạnh lên của đồng hồ chính SDIOCLK 1b: SDIO_CK được tạo ở cạnh xuống của đồng

hồ chính SDIOCLK

Bit 12:11 WIDBUS: Bit kích hoạt chế độ bus rộng

00: Chế độ bus mặc định: Đã sử dụng SDIO_D0

01: Chế độ bus rộng 4: Đã sử dụng SDIO_D[3:0]

10: Chế độ bus rộng 8: đã sử dụng SDIO_D[7:0]

RM0008 Phiên bản 21 607/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

Bit 10 BYPASS: Bit cho phép bỏ qua bộ chia đồng hồ

0: Vô hiệu hóa bỏ qua: SDIOCLK được chia theo giá trị CLKDIV trước khi điều khiển tín
hiệu đầu ra SDIO_CK.
1: Cho phép bỏ qua: SDIOCLK trực tiếp điều khiển tín hiệu đầu ra SDIO_CK.

Bit 9 PWRSAV: Bit cấu hình tiết kiệm năng lượng

Để tiết kiệm năng lượng, đầu ra xung nhịp SDIO_CK có thể bị tắt khi bus không hoạt động bằng cách cài đặt
PWRSAV:

0: Đồng hồ SDIO_CK luôn được bật


1: SDIO_CK chỉ được bật khi bus hoạt động

Bit 8 CLKEN: Bit kích hoạt đồng hồ

0: SDIO_CK bị tắt
1: SDIO_CK được bật

Bit 7:0 CLKDIV: Hệ số phân chia đồng hồ

Trường này xác định hệ số phân chia giữa đồng hồ đầu vào (SDIOCLK) và đồng hồ đầu ra
(SDIO_CK): tần số SDIO_CK = SDIOCLK / [CLKDIV + 2].

Ghi chú: Khi thẻ SD/SDIO hoặc MultiMediaCard ở chế độ nhận dạng, tần số SDIO_CK phải nhỏ hơn 400
kHz.

Tần số xung nhịp có thể được thay đổi thành tần số bus thẻ tối đa khi địa chỉ thẻ tương đối
được gán cho tất cả các thẻ.

Cần ít nhất bảy chu kỳ đồng hồ HCLK giữa hai lần truy cập ghi vào thanh ghi này.
SDIO_CK cũng có thể bị dừng trong khoảng thời gian chờ đọc thẻ SD I/O: trong trường hợp này thanh
ghi SDIO_CLKCR không kiểm soát SDIO_CK.

22.9.3 Thanh ghi đối số SDIO (SDIO_ARG)


Độ lệch địa chỉ: 0x08

Giá trị đặt lại: 0x0000 0000

Thanh ghi SDIO_ARG chứa đối số lệnh 32 bit, được gửi tới thẻ như một phần của thông báo lệnh.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CMDARG
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:0 CMDARG: Đối số lệnh

Đối số lệnh được gửi tới thẻ như một phần của thông báo lệnh. Nếu một lệnh chứa một đối số,
nó phải được nạp vào thanh ghi này trước khi ghi lệnh vào thanh ghi lệnh.

608/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

22.9.4 Thanh ghi lệnh SDIO (SDIO_CMD)


Độ lệch địa chỉ: 0x0C

Giá trị đặt lại: 0x0000 0000

Thanh ghi SDIO_CMD chứa các bit chỉ mục lệnh và loại lệnh. Chỉ mục lệnh được gửi tới thẻ
như một phần của thông báo lệnh. Các bit loại lệnh điều khiển máy trạng thái đường dẫn lệnh
(CPSM).

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

NÊIn

IỢĐ
NEMSPC

PSERTIAW

C

XEDNIDMC
ỜỢ
Kín đáo

I
-TEA
C

lpmocDMCNE
DMCA

Ih
hnìĐOỉ Dc
S
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:15 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 14 ATACMD: Lệnh CE-ATA

Nếu ATACMD được đặt, CPSM sẽ chuyển CMD61.

Bit 13 nIEN: không kích hoạt ngắt

nếu bit này bằng 0, các ngắt trong thiết bị CE-ATA được kích hoạt.

Bit 12 ENCMDcompl: Cho phép hoàn thành CMD Nếu bit

này được đặt, tín hiệu hoàn thành lệnh sẽ được bật.

Bit 11 SDIOSuspend: Lệnh tạm dừng SD I/O

Nếu bit này được đặt, lệnh được gửi là lệnh tạm dừng (chỉ được sử dụng với thẻ SDIO).

Bit 10 CPSMEN: Bit kích hoạt trạng thái đường dẫn lệnh (CPSM)

Nếu bit này được đặt thì CPSM được kích hoạt.

Bit 9 WAITPEND: CPSM Chờ kết thúc truyền dữ liệu (tín hiệu nội bộ CmdPend).

Nếu bit này được đặt, CPSM sẽ đợi kết thúc truyền dữ liệu trước khi bắt đầu gửi lệnh.

Bit 8 WAITINT: CPSM chờ yêu cầu ngắt

Nếu bit này được đặt, CPSM sẽ vô hiệu hóa thời gian chờ lệnh và chờ yêu cầu ngắt.

Bit 7:6 WAITRESP: Đợi các bit phản hồi Chúng

được sử dụng để cấu hình xem CPSM có chờ phản hồi hay không và nếu có thì loại phản hồi nào.

00: Không phản hồi, mong đợi cờ CMDSENT 01:

Phản hồi ngắn, mong đợi cờ CMDREND hoặc CCRCFAIL 10: Không phản

hồi, mong đợi cờ CMDSENT 11: Phản hồi dài,

mong đợi cờ CMDREND hoặc CCRCFAIL

Bit 5:0 CMDINDEX: Chỉ mục lệnh

Chỉ mục lệnh được gửi tới thẻ như một phần của thông báo lệnh.

Ghi chú: Cần ít nhất bảy chu kỳ đồng hồ HCLK giữa hai lần truy cập ghi vào thanh ghi này.

MultiMediaCards có thể gửi hai loại phản hồi: phản hồi ngắn, dài 48 bit hoặc phản hồi dài, dài
136 bit. Thẻ SD và thẻ SD I/O chỉ có thể gửi phản hồi ngắn,

RM0008 Phiên bản 21 609/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

đối số có thể thay đổi tùy theo loại phản hồi: phần mềm sẽ phân biệt loại phản hồi theo lệnh được
gửi. Thiết bị CE-ATA chỉ gửi phản hồi ngắn.

22.9.5 Thanh ghi phản hồi lệnh SDIO (SDIO_RESPCMD)

Độ lệch địa chỉ: 0x10

Giá trị đặt lại: 0x0000 0000

Thanh ghi SDIO_RESPCMD chứa trường chỉ mục lệnh của phản hồi lệnh cuối cùng nhận được. Nếu
việc truyền phản hồi lệnh không chứa trường chỉ mục lệnh (phản hồi dài hoặc OCR), thì trường
RESPCMD không xác định, mặc dù nó phải chứa 111111b (giá trị của trường dành riêng từ phản
hồi).

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
RESPCMD
Kín đáo
rrrrrr

Bit 31:6 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 5:0 RESPCMD: Chỉ mục lệnh phản hồi

Trường bit chỉ đọc. Chứa chỉ mục lệnh của phản hồi lệnh cuối cùng nhận được.

22.9.6 Thanh ghi phản hồi SDIO 1..4 (SDIO_RESPx)

Độ lệch địa chỉ: (0x10 + (4 × x)); x = 1..4

Giá trị đặt lại: 0x0000 0000

Các thanh ghi SDIO_RESP1/2/3/4 chứa trạng thái của thẻ, là một phần của phản hồi nhận được.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CARDSTATUSx
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrr

Bit 31:0 CARDSTATUSx: xem Bảng 167.

Kích thước Trạng thái Thẻ là 32 hoặc 127 bit, tùy thuộc vào loại phản hồi.

Bảng 167. Loại phản hồi và thanh ghi SDIO_RESPx

Đăng ký Phản hồi ngắn Phản hồi dài

SDIO_RESP1 Trạng thái thẻ[31:0] Trạng thái thẻ [127:96]

SDIO_RESP2 Chưa sử dụng Trạng thái thẻ [95:64]

SDIO_RESP3 Chưa sử dụng Trạng thái thẻ [63:32]

SDIO_RESP4 Chưa sử dụng Trạng thái thẻ [31:1]0b

Phần quan trọng nhất của trạng thái thẻ được nhận đầu tiên. Thanh ghi LSB SDIO_RESP3 luôn là 0b.

610/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

22.9.7 Thanh ghi hẹn giờ dữ liệu SDIO (SDIO_DTIMER)

Độ lệch địa chỉ: 0x24

Giá trị đặt lại: 0x0000 0000

Thanh ghi SDIO_DTIMER chứa khoảng thời gian chờ dữ liệu, tính theo khoảng thời gian đồng hồ bus thẻ.

Bộ đếm tải giá trị từ thanh ghi SDIO_DTIMER và bắt đầu giảm khi máy trạng thái đường dẫn dữ liệu (DPSM)
chuyển sang trạng thái Wait_R hoặc Bận. Nếu bộ định thời đạt tới 0 trong khi DPSM ở một trong hai trạng
thái này thì cờ trạng thái hết thời gian chờ sẽ được đặt.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

DỮ LIỆU THỜI GIAN

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bits 31:0 DATATIME: Khoảng thời gian chờ dữ liệu

Khoảng thời gian chờ dữ liệu được biểu thị bằng khoảng thời gian đồng hồ bus thẻ.

Ghi chú: Việc truyền dữ liệu phải được ghi vào thanh ghi bộ đếm thời gian dữ liệu và thanh ghi độ dài dữ liệu trước
khi được ghi vào thanh ghi điều khiển dữ liệu.

22.9.8 Thanh ghi độ dài dữ liệu SDIO (SDIO_DLEN)

Độ lệch địa chỉ: 0x28

Giá trị đặt lại: 0x0000 0000

Thanh ghi SDIO_DLEN chứa số byte dữ liệu được truyền. Giá trị được tải vào bộ đếm dữ liệu khi quá trình
truyền dữ liệu bắt đầu.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

DỮ LIỆU
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:25 Dự trữ, phải được giữ ở giá trị đặt lại.

Bits 24:0 DATALENGTH: Giá trị độ dài dữ liệu

Số byte dữ liệu được truyền.

Ghi chú: Để truyền dữ liệu khối, giá trị trong thanh ghi độ dài dữ liệu phải là bội số của kích thước khối (xem
SDIO_DCTRL). Việc truyền dữ liệu phải được ghi vào thanh ghi bộ đếm thời gian dữ liệu và thanh ghi độ dài
dữ liệu trước khi được ghi vào thanh ghi điều khiển dữ liệu.

RM0008 Phiên bản 21 611/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

22.9.9 Thanh ghi điều khiển dữ liệu SDIO (SDIO_DCTRL)

Độ lệch địa chỉ: 0x2C

Giá trị đặt lại: 0x0000 0000

Thanh ghi SDIO_DCTRL điều khiển máy trạng thái đường dẫn dữ liệu (DPSM).

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

KÍCH THƯỚC DBLOCK

NETD
RIDTD
NEAMD
Kín đáo

NEOIDS

DOMWR

EDOMTD
POTWR


BẦ
TẮU R
rw rw rw rw rw rw rw rw rw rw rw

Bit 31:12 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 11 SDIOEN: Chức năng kích hoạt SD I/O

Nếu bit này được đặt, DPSM sẽ thực hiện thao tác dành riêng cho thẻ I/O SD.

Bit 10 RWMOD: Chế độ chờ đọc

0: Dừng điều khiển đọc SDIO_D2


1: Đọc điều khiển chờ bằng SDIO_CK

Bit 9 RWSTOP: Dừng chờ đọc

0: Đang chờ đọc nếu bit RWSTART được đặt


1: Cho phép dừng chờ đọc nếu bit RWSTART được đặt

Bit 8 RWStart: Bắt đầu chờ đọc

Nếu bit này được đặt, hoạt động chờ đọc sẽ bắt đầu.

Bit 7:4 DBLOCKSIZE: Kích thước khối dữ liệu

Xác định độ dài khối dữ liệu khi chế độ truyền dữ liệu khối được chọn:

0000: (0 thập phân) chiều dài khóa = 20 = 1 byte

0001: (1 thập phân) chiều dài khóa = 21 = 2 byte

0010: (2 thập phân) chiều dài khóa = 22 = 4 byte

0011: (3 thập phân) chiều dài khóa = 23 = 8 byte

0100: (4 số thập phân) độ dài khóa = 24 = 16 byte

0101: (5 số thập phân) độ dài khóa = 25 = 32 byte

0110: (6 số thập phân) độ dài khóa = 26 = 64 byte

0111: (7 số thập phân) độ dài khóa = 27 = 128 byte

1000: (8 thập phân) chiều dài khóa = 28 = 256 byte

1001: (9 thập phân) chiều dài khóa = 29 = 512 byte

1010: (10 thập phân) chiều dài khóa = 210 = 1024 byte

1011: (11 thập phân) khóa chiều dài = 211 = 2048 byte
1100: (12 thập phân) chiều dài khóa = 212 = 4096 byte
1101: (13 thập phân) chiều dài khóa = 213 = 8192 byte
1110: (14 thập phân) chiều dài khóa = 214 = 16384 byte 1111:
(15 thập phân) ) kín đáo

Bit 3 DMAEN: Bit kích hoạt DMA

0: DMA bị vô hiệu hóa.

1: Đã bật DMA.

612/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

Bit 2 DTMODE: Lựa chọn chế độ truyền dữ liệu 1: Truyền dữ liệu nhiều byte theo dòng hoặc SDIO.

0: Chặn truyền dữ liệu

1: Truyền dữ liệu đa byte hoặc SDIO trên các thiết bị có mật độ XL STM32F10xxx.

Truyền dữ liệu trực tuyến trên các thiết bị mật độ cao STM32F10xxx.

Bit 1 DTDIR: Lựa chọn hướng truyền dữ liệu

0: Từ bộ điều khiển đến thẻ.

1: Từ thẻ đến bộ điều khiển.

[0] DTEN: Bit cho phép truyền dữ liệu

Quá trình truyền dữ liệu bắt đầu nếu 1b được ghi vào bit DTEN. Tùy thuộc vào bit hướng, DTDIR, DPSM chuyển sang

trạng thái Wait_S, Wait_R hoặc Readwait nếu RW Start được đặt ngay lập tức khi bắt đầu truyền. Không cần thiết

phải xóa bit kích hoạt sau khi kết thúc truyền dữ liệu nhưng SDIO_DCTRL phải được cập nhật để cho phép truyền dữ

liệu mới

Ghi chú: Cần ít nhất bảy chu kỳ đồng hồ HCLK giữa hai lần truy cập ghi vào thanh ghi này.

22.9.10 Thanh ghi bộ đếm dữ liệu SDIO (SDIO_DCOUNT)


Độ lệch địa chỉ: 0x30

Giá trị đặt lại: 0x0000 0000

Thanh ghi SDIO_DCOUNT tải giá trị từ thanh ghi độ dài dữ liệu (xem SDIO_DLEN) khi DPSM
chuyển từ trạng thái Không hoạt động sang trạng thái Wait_R hoặc Wait_S. Khi dữ liệu được truyền,
bộ đếm giảm giá trị cho đến khi đạt 0. Sau đó DPSM chuyển sang trạng thái Không hoạt động và cờ
kết thúc trạng thái dữ liệu, DATAEND, được đặt.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
DỮ LIỆU
Kín đáo
rrrrrrrrrrrrrrrrrrrrrrrr

Bit 31:25 Dự trữ, phải được giữ ở giá trị đặt lại.

Bits 24:0 DATACOUNT: Giá trị đếm dữ liệu

Khi bit này được đọc, số byte dữ liệu còn lại cần truyền sẽ được trả về. Viết không có tác dụng.

Ghi chú: Thanh ghi này chỉ được đọc khi quá trình truyền dữ liệu hoàn tất.

RM0008 Phiên bản 21 613/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

22.9.11 Thanh ghi trạng thái SDIO (SDIO_STA)

Độ lệch địa chỉ: 0x34

Giá trị đặt lại: 0x0000 0000

Thanh ghi SDIO_STA là thanh ghi chỉ đọc. Nó chứa hai loại cờ:
• Cờ tĩnh (bit [23:22,10:0]): các bit này vẫn được xác nhận cho đến khi chúng bị xóa
bằng cách ghi vào thanh ghi Xóa ngắt SDIO (xem SDIO_ICR)

• Cờ động (bit [21:11]): các bit này thay đổi trạng thái tùy thuộc vào trạng thái của
logic cơ bản (ví dụ: cờ đầy đủ và trống FIFO được xác nhận và xác nhận lại dưới dạng
dữ liệu khi được ghi vào FIFO)

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

TCAXR

TCAXT
TIOIDS

LVADXT
LVADXR

FOFIFXT
íđ
K

FOFIFXR
EOFIFXR

EOOFFXT

TCADMC

ỮCD
L
o

UỐỆU
I
DNEKCBD

RREVOXR

IỖLCRCD
I
FHOFIFXR

TNESDMC

HB
T
RRETIBTS
EHOFIFXT

DNERDMC

ẤẠ
TUOEMITD

TUOEMITC
DNETAEC

TI
RREDNUXT
Res. r r r r r r r r r r r r r r r r r r r r r r r r

Bit 31:24 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 23 CEATAEND: Đã nhận được tín hiệu hoàn thành lệnh CE-ATA cho CMD61

Bit 22 SDIOIT: Đã nhận được ngắt SDIO

Bit 21 RXDAVL: Dữ liệu có sẵn khi nhận FIFO

Bit 20 TXDAVL: Dữ liệu có sẵn trong FIFO truyền

Bit 19 RXFIFOE: Nhận FIFO trống

Bit 18 TXFIFOE: Truyền FIFO trống

Khi bật Kiểm soát luồng CTNH, tín hiệu TXFIFOE sẽ được kích hoạt khi FIFO chứa 2 từ.

Bit 17 RXFIFOF: Nhận đầy đủ FIFO

Khi bật Kiểm soát luồng CTNH, tín hiệu RXFIFOF sẽ được kích hoạt 2 từ trước khi FIFO đầy.

Bit 16 TXFIFOF: Truyền FIFO đầy đủ

Bit 15 RXFIFOHF: Nhận FIFO full một nửa: FIFO có ít nhất 8 từ

Bit 14 TXFIFOHE: Truyền FIFO một nửa trống: có thể ghi ít nhất 8 từ vào FIFO

Bit 13 RXACT: Đang nhận dữ liệu

Bit 12 TXACT: Đang truyền dữ liệu

Bit 11 CMDACT: Đang truyền lệnh

Bit 10 DBCKEND: Khối dữ liệu được gửi/nhận (đã vượt qua kiểm tra CRC)

Bit 9 STBITERR: Bit khởi động không được phát hiện trên tất cả các tín hiệu dữ liệu ở chế độ bus rộng

Bit 8 DATAEND: Dữ liệu kết thúc (bộ đếm dữ liệu, SDIDCOUNT, bằng 0)

Bit 7 CMDSENT: Lệnh đã được gửi (không cần phản hồi)

Bit 6 CMDREND: Đã nhận được phản hồi lệnh (kiểm tra CRC đã vượt qua)

Bit 5 RXOVERR: Đã nhận được lỗi tràn FIFO

614/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

Bit 4 TXUNDERR: Truyền lỗi chạy ngầm FIFO

Bit 3 DTIMEOUT: Hết thời gian chờ dữ liệu

Bit 2 CTIMEOUT: Hết thời gian phản hồi lệnh Khoảng thời

gian hết thời gian lệnh có giá trị cố định là 64 chu kỳ đồng hồ SDIO_CK.

Bit 1 DCRCFAIL: Khối dữ liệu được gửi/nhận (kiểm tra CRC không thành công)

Bit 0 CCRCFAIL: Đã nhận được phản hồi lệnh (kiểm tra CRC không thành công)

22.9.12 Thanh ghi xóa ngắt SDIO (SDIO_ICR)


Độ lệch địa chỉ: 0x38

Giá trị đặt lại: 0x0000 0000

Thanh ghi SDIO_ICR là thanh ghi chỉ ghi. Viết một bit với 1b sẽ xóa bit tương ứng trong thanh ghi
trạng thái SDIO_STA.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CTIOIDS

ỮL
CDNEUỆI D
CDNEKCBD

CRREVOXR

CLIAFCRCD
CTNEDMC

CLIAFCRCC
CRRETIBTS

CDNERDMC

CTUOEMITD

CTUOEMITC
CDNEATAEC

CRREDNUXT
Kín đáo Kín đáo

ồ ồ rw rw rw rw rw rw rw rw rw rw rw

Bit 31:24 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 23 CEATAENDC: Bit xóa cờ CEATAEND

Thiết lập bằng phần mềm để xóa cờ CEATAEND.


0: CEATAEND không bị xóa 1:

CEATAEND bị xóa

Bit 22 SDIOITC: Bit xóa cờ SDIOIT Được thiết

lập bằng phần mềm để xóa cờ SDIOIT.


0: SDIOIT không bị xóa 1:

SDIOIT bị xóa

Bit 21:11 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 10 DBCKENDC: Bit xóa cờ DBCKEND

Được thiết lập bằng phần mềm để xóa cờ DBCKEND.


0: DBCKEND không bị xóa 1:

DBCKEND bị xóa

Bit 9 STBITERRC: Bit xóa cờ STBITERR

Thiết lập bằng phần mềm để xóa cờ STBITERR.


0: STBITERR không bị xóa 1:

STBITERR bị xóa

Bit 8 DATAENDC: Bit xóa cờ DATAEND

Được thiết lập bằng phần mềm để xóa cờ DATAEND.


0: DATAEND không bị xóa 1:

DATAEND bị xóa

RM0008 Phiên bản 21 615/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

Bit 7 CMDSENTC: Bit xóa cờ CMDSENT

Thiết lập bằng phần mềm để xóa cờ CMDSENT.


0: CMDSENT không bị xóa 1:
CMDSENT bị xóa

Bit 6 CMDENDC: Bit xóa cờ CMDREND

Được thiết lập bằng phần mềm để xóa cờ CMDREND.


0: CMDREND không bị xóa 1:
CMDREND bị xóa

Bit 5 RXOVERRC: Bit xóa cờ RXOVERR

Được thiết lập bằng phần mềm để xóa cờ RXOVERR.


0: RXOVERR không bị xóa 1:
RXOVERR bị xóa

Bit 4 TXUNDERRC: Bit xóa cờ TXUNDERR

Đặt bằng phần mềm để xóa cờ TXUNDERR.


0: TXUNDERR không bị xóa 1:
TXUNDERR bị xóa

Bit 3 DTIMEOUTC: Bit xóa cờ DTIMEOUT

Được thiết lập bằng phần mềm để xóa cờ DTIMEOUT.


0: DTIMEOUT không bị xóa 1:
DTIMEOUT bị xóa

Bit 2 CTIMEOUTC: Bit xóa cờ CTIMEOUT

Được thiết lập bằng phần mềm để xóa cờ CTIMEOUT.


0: CTIMEOUT không bị xóa 1:
CTIMEOUT bị xóa

Bit 1 DCRCFAILC: Bit xóa cờ DCRCFAIL

Được thiết lập bằng phần mềm để xóa cờ DCRCFAIL.


0: DCRCFAIL không bị xóa 1:
DCRCFAIL bị xóa

Bit 0 CCRCFAILC: Bit xóa cờ CCRCFAIL

Được thiết lập bằng phần mềm để xóa cờ CCRCFAIL.


0: CCRCFAIL không bị xóa 1:
CCRCFAIL bị xóa

616/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

22.9.13 Thanh ghi mặt nạ SDIO (SDIO_MASK)


Độ lệch địa chỉ: 0x3C

Giá trị đặt lại: 0x0000 0000

Thanh ghi mặt nạ ngắt xác định cờ trạng thái nào tạo ra yêu cầu ngắt bằng cách đặt bit tương ứng
thành 1b.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

EILVADXT
EILVADXR

EIFOFIFXR

EIFOFIFXT
EIEOFIFXT

EITCADMC
EIEOFIFXR

ỮL
UỆID
EIDNEKCBD

EIRREVOXR

EILIAFCRCD
EIFHOFIFXR

EITNESDMC

EILIAFCRCC
EIRRETIBTS
EIEHOFIFXT

EIDNERDMC

EITUOEMITD

EITUOEMITC
EIDNETAEC

EIRREDNUXT
Kín đáo

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:24 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 23 CEATAENDIE: Tín hiệu hoàn thành lệnh CE-ATA nhận được cho phép ngắt

Thiết lập và xóa bằng phần mềm để bật/tắt ngắt được tạo khi nhận tín hiệu hoàn thành lệnh CE-ATA.

0: Tín hiệu hoàn thành lệnh CE-ATA bị vô hiệu hóa ngắt 1: Tín hiệu hoàn

thành lệnh CE-ATA được kích hoạt ngắt

Bit 22 SDIOITIE: Cho phép ngắt nhận ngắt chế độ SDIO Được thiết lập và

xóa bằng phần mềm để bật/tắt ngắt được tạo khi nhận ngắt chế độ SDIO.

0: Ngắt chế độ SDIO Đã vô hiệu hóa ngắt nhận được 1: Ngắt

chế độ SDIO Đã bật ngắt đã nhận

Bit 21 RXDAVLIE: Dữ liệu có sẵn trong Rx FIFO cho phép ngắt Thiết lập

và xóa bằng phần mềm để bật/tắt ngắt được tạo ra bởi sự hiện diện của dữ liệu có sẵn trong Rx FIFO.

0: Dữ liệu khả dụng trong ngắt Rx FIFO bị vô hiệu hóa

1: Dữ liệu khả dụng trong ngắt Rx FIFO được kích hoạt

Bit 20 TXDAVLIE: Dữ liệu có sẵn trong cho phép ngắt Tx FIFO Thiết lập

và xóa bằng phần mềm để bật/tắt ngắt được tạo ra bởi sự hiện diện của dữ liệu có sẵn trong Tx FIFO.

0: Dữ liệu có sẵn trong ngắt Tx FIFO bị vô hiệu hóa

1: Dữ liệu có sẵn trong ngắt Tx FIFO được kích hoạt

Bit 19 RXFIFOEIE: Cho phép ngắt trống Rx FIFO

Thiết lập và xóa bằng phần mềm để bật/tắt ngắt do Rx FIFO trống.

0: Ngắt trống Rx FIFO bị vô hiệu hóa 1:

Đã bật ngắt trống Rx FIFO

Bit 18 TXFIFOEIE: Cho phép ngắt trống Tx FIFO

Thiết lập và xóa bằng phần mềm để bật/tắt ngắt do Tx FIFO trống.

0: Ngắt trống Tx FIFO bị vô hiệu hóa 1:

Đã bật ngắt trống Tx FIFO

Bit 17 RXFIFOFIE: Cho phép ngắt toàn bộ Rx FIFO Thiết

lập và xóa bằng phần mềm để bật/tắt ngắt do Rx FIFO đầy gây ra.

0: Ngắt hoàn toàn Rx FIFO bị vô hiệu

hóa 1: Đã bật ngắt hoàn toàn Rx FIFO

RM0008 Phiên bản 21 617/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

Bit 16 TXFIFOFIE: Cho phép ngắt toàn bộ Tx FIFO Thiết

lập và xóa bằng phần mềm để bật/tắt ngắt do Tx FIFO đầy.

0: Vô hiệu hóa ngắt hoàn toàn Tx

FIFO 1: Cho phép ngắt hoàn toàn Tx FIFO

Bit 15 RXFIFOHFIE: Cho phép ngắt nửa toàn bộ Rx FIFO

Thiết lập và xóa bằng phần mềm để bật/tắt ngắt do Rx FIFO đầy một nửa.

0: Rx FIFO bị vô hiệu hóa một nửa ngắt 1:

Rx FIFO được kích hoạt một nửa ngắt toàn bộ

Bit 14 TXFIFOHEIE: Cho phép ngắt nửa trống Tx FIFO

Thiết lập và xóa bằng phần mềm để bật/tắt ngắt do Tx FIFO trống một nửa.

0: Ngắt nửa trống Tx FIFO bị vô hiệu hóa 1:

Đã bật ngắt nửa trống Tx FIFO

Bit 13 RXACTIE: Cho phép ngắt tác động nhận dữ liệu Thiết lập

và xóa bằng phần mềm để bật/tắt ngắt do dữ liệu được nhận (tác động nhận dữ liệu).

0: Vô hiệu hóa ngắt tác động nhận dữ liệu 1:

Cho phép ngắt tác động nhận dữ liệu

Bit 12 TXACTIE: Cho phép ngắt tác động truyền dữ liệu Thiết

lập và xóa bằng phần mềm để bật/tắt ngắt do dữ liệu được truyền (tác động truyền dữ liệu) gây ra.

0: Vô hiệu hóa ngắt tác động truyền dữ liệu

1: Cho phép ngắt tác động truyền dữ liệu

Bit 11 CMDACTIE: Cho phép ngắt thực hiện lệnh

Được thiết lập và xóa bằng phần mềm để bật/tắt ngắt do lệnh được truyền (thực hiện lệnh).

0: Vô hiệu hóa ngắt thực hiện lệnh 1: Cho

phép ngắt thực hiện lệnh

Bit 10 DBCKENDIE: Cho phép ngắt kết thúc khối dữ liệu

Thiết lập và xóa bằng phần mềm để bật/tắt ngắt do kết thúc khối dữ liệu.

0: Ngắt kết thúc khối dữ liệu bị vô hiệu

hóa 1: Cho phép ngắt kết thúc khối dữ liệu

Bit 9 STBITERRIE: Cho phép ngắt lỗi bit khởi động

Thiết lập và xóa bằng phần mềm để bật/tắt ngắt do lỗi bit khởi động.

0: Vô hiệu hóa ngắt lỗi bit khởi động

1: Cho phép ngắt lỗi bit khởi động

Bit 8 DATAENDIE: Cho phép ngắt khi kết thúc dữ liệu

Thiết lập và xóa bằng phần mềm để cho phép/vô hiệu hóa ngắt do kết thúc dữ liệu gây ra.

0: Ngắt kết thúc dữ liệu bị vô hiệu

hóa 1: Cho phép ngắt kết thúc dữ liệu

Bit 7 CMDSENTIE: Cho phép ngắt gửi lệnh

Thiết lập và xóa bằng phần mềm để bật/tắt ngắt do gửi lệnh.

0: Ngắt gửi lệnh bị vô hiệu hóa 1: Cho

phép ngắt gửi lệnh

618/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

Bit 6 CMDRENDIE: Kích hoạt ngắt nhận được phản hồi lệnh Thiết lập và

xóa bằng phần mềm để kích hoạt/vô hiệu hóa ngắt do nhận phản hồi lệnh gây ra.

0: Phản hồi lệnh bị vô hiệu hóa ngắt 1: Phản hồi


lệnh Đã nhận được ngắt được kích hoạt

Bit 5 RXOVERRIE: Cho phép ngắt lỗi tràn Rx FIFO Thiết lập và

xóa bằng phần mềm để bật/tắt ngắt do lỗi tràn Rx FIFO gây ra.
0: Ngắt lỗi tràn Rx FIFO bị vô hiệu hóa 1:
Đã bật ngắt lỗi tràn Rx FIFO

Bit 4 TXUNDERRIE: Cho phép ngắt lỗi chạy ngầm Tx FIFO Thiết lập

và xóa bằng phần mềm để bật/tắt ngắt do lỗi chạy ngầm Tx FIFO gây ra.
0: Vô hiệu hóa ngắt lỗi chạy ngầm Tx FIFO 1:
Đã bật ngắt lỗi chạy chậm Tx FIFO

Bit 3 DTIMEOUTIE: Cho phép ngắt thời gian chờ dữ liệu

Thiết lập và xóa bằng phần mềm để bật/tắt ngắt do hết thời gian chờ dữ liệu.
0: Ngắt thời gian chờ dữ liệu bị vô hiệu

hóa 1: Đã bật ngắt thời gian chờ dữ liệu

Bit 2 CTIMEOUTIE: Cho phép ngắt thời gian chờ lệnh Thiết

lập và xóa bằng phần mềm để bật/tắt ngắt do hết thời gian chờ lệnh.
0: Ngắt thời gian chờ lệnh bị vô hiệu
hóa 1: Đã bật ngắt thời gian chờ lệnh

Bit 1 DCRCFAILIE: Cho phép ngắt CRC dữ liệu bị lỗi

Thiết lập và xóa bằng phần mềm để bật/tắt ngắt do lỗi CRC dữ liệu.
0: Vô hiệu hóa ngắt CRC dữ liệu 1: Cho

phép ngắt CRC dữ liệu không thành công

Bit 0 CCRCFAILIE: Cho phép ngắt CRC bị lỗi

Thiết lập và xóa bằng phần mềm để bật/tắt ngắt do lỗi CRC lệnh.
0: Lệnh CRC bị vô hiệu hóa ngắt 1: Lệnh
CRC bị lỗi bị vô hiệu hóa

22.9.14 Thanh ghi bộ đếm SDIO FIFO (SDIO_FIFOCNT)


Độ lệch địa chỉ: 0x48

Giá trị đặt lại: 0x0000 0000

Thanh ghi SDIO_FIFOCNT chứa số từ còn lại được ghi vào hoặc đọc từ FIFO. Bộ đếm FIFO tải giá
trị từ thanh ghi độ dài dữ liệu (xem SDIO_DLEN) khi bit cho phép truyền dữ liệu, DTEN, được đặt
trong thanh ghi điều khiển dữ liệu (thanh ghi SDIO_DCTRL) và DPSM ở trạng thái Không hoạt động.
Nếu độ dài dữ liệu không được căn chỉnh theo từ (bội số của 4), 1 đến 3 byte còn lại được coi
là một từ.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

ĐẾM FIFO
Kín đáo
rrrrrrrrrrrrrrrrrrrrrrrr

Bit 31:24 Dự trữ, phải được giữ ở giá trị đặt lại.

Bits 23:0 FIFOCOUNT: Số từ còn lại được ghi vào hoặc đọc từ FIFO.

RM0008 Phiên bản 21 619/1136

621
Machine Translated by Google

Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO) RM0008

22.9.15 Thanh ghi FIFO dữ liệu SDIO (SDIO_FIFO)

Độ lệch địa chỉ: 0x80

Giá trị đặt lại: 0x0000 0000

Các FIFO nhận và truyền có thể được đọc hoặc ghi dưới dạng các thanh ghi rộng 32 bit. FIFO chứa
32 mục trên 32 địa chỉ tuần tự. Điều này cho phép CPU sử dụng tải của nó và lưu trữ nhiều toán
hạng để đọc/ghi vào FIFO.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

FIF0Dữ liệu

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

bit 31:0 FIFOData: Nhận và truyền dữ liệu FIFO

Dữ liệu FIFO chiếm 32 mục từ 32 bit, từ địa chỉ:


Cơ sở SDIO + 0x080 đến cơ sở SDIO + 0xFC.

620/1136 RM0008 Phiên bản 21


0x80
0x48
0x38
0x34
0x30
0x24
0x10
0x08
RM0008

SDIO_RESP4
0x0C SDIO_CMD

0x3C SDIO_MASK
0x28 SDIO_DLEN
Đăng ký bù đắp

0x2C SDIO_DCTRL
0x18 SDIO_RESP2
0x14 SDIO_RESP1
0x04 SDIO_CLKCR
0x00 SDIO_POWER

phòng cấp cứu

DCOUNT

SDIO_
SDIO_
SDIO_
RESPCMD

FIFOCNT
SDIO_ARG

SDIO_STA

SDIO_ICR
SDIO_DTIM

SDIO_FIFO
0x1C SDIO_RESP3 0x20
Machine Translated by Google

13
03
92
82

o íđ
K ná
o íđ
K ná
o íđ
K

Kín đáo
Kín đáo
72

Kín đáo
22.9.16 Bản đồ đăng ký SDIO

62
52
42
EIDNETAEC CDNEATAEC DNETAEC

o íđ
K ná
o íđ
K 32
EITIOIDS CTIOIDS TIOIDS
22

o íđ
K
EILVADXR LVADXR
12
Bảng sau đây tóm tắt các thanh ghi SDIO.

EILVADXT LVADXT
02
EIEOFIFXR EOFIFXR
91
8
7
6
5

EIEOFIFXT EOOFFXT

Kín đáo
EIFOFIFXR FOFIFXR

RM0008 Phiên bản 21



o íđ
K
EIFOFIFXT ná
o íđ
K FOFIFXT

EIFHOFIFXR FHOFIFXR

THẺSTATUS2
CMDARG
Bảng 168. Sơ đồ thanh ghi SDIO

TÌNH TRẠNG THẺ4


TÌNH TRẠNG THẺ1

TÌNH TRẠNG THẺ3

FIF0Dữ liệu
EIEHOFIFXT EHOFIFXT DMCA
-TEA
C

DỮ LIỆU THỜI GIAN


NE_CFWH 41
EITCAXR TCAXR NÊIn TỆI
YỜUV
T
31

DỮ LIỆU

DỮ LIỆU
EITCAXT TCAXT
lpmocDMCNE 21

ĐẾM FIFO
SUBDIW

Tham khảo Bảng 3 trên trang 50 để biết địa chỉ biên của thanh ghi.
EITCADMC TCADMC NEOIDS
hnìĐOỉ
IhDc
S 11
EIDNEKCBD CDNEKCBD DNEKCBD DOMWR NEMSPC GNỜƯĐ

EIRRETIBTS CRRETIBTS RRETIBTS POTWR ỜỢ


I HĐ
C VASRWP
09
1
6
7
8
UỆI
ỮLD CDNEUỆI
ỮLD UỐ
I ỆU
ỮC
I D
L TẮU
BẦWĐ
R IỢĐ NEKLC

EITNESDMC CTNEDMC TNESDMC

PSERTIAW

EIDNERDMC CDNERDMC DNERDMC

KCCỚ
HOƯ
CLÍ
HD
B K
T

EIRREVOXR CRREVOXR RREVOXR


5
EIRREDNUXT CRREDNUXT RREDNUXT

VIDKLC
4
EITUOEMITD CTUOEMITD TUOEMITD NEAMD

XEDNIDMC
3
EITUOEMITC CTUOEMITC TUOEMITC EDOMTD
RESPCMD

2
EILIAFCRCD CLIAFCRCD IỖLCRCD RIDTD

LRTCRWP
0
1
TI
ẤẠHB
T

621/1136
EILIAFCRCC CLIAFCRCC NETD
Giao diện đầu vào/đầu ra kỹ thuật số an toàn (SDIO)

621
Machine Translated by Google

Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB) RM0008

23 Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB)

Các thiết bị mật độ thấp là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

Các thiết bị có mật độ trung bình là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 64 đến 128 Kbyte.

Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ
nhớ Flash nằm trong khoảng từ 256 đến 512 Kbyte.

Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ


bộ nhớ Flash nằm trong khoảng từ 768 Kbyte đến 1 Mbyte.

Các thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

Phần này chỉ áp dụng cho dòng hiệu suất STM32F103xx và dòng truy cập USB STM32F102xx.

23.1 Giới thiệu USB

Thiết bị ngoại vi USB triển khai giao diện giữa bus USB 2.0 tốc độ đầy đủ và bus APB1.

Hỗ trợ tạm dừng/tiếp tục USB cho phép dừng đồng hồ của thiết bị để tiêu thụ điện năng thấp.

23.2 Các tính năng chính của USB

• Tuân thủ thông số kỹ thuật USB phiên bản 2.0 tốc độ đầy đủ

• Có thể cấu hình số điểm cuối từ 1 đến 8

• Tạo/kiểm tra kiểm tra dự phòng theo chu kỳ (CRC), Đảo ngược không trở về 0
(NRZI) mã hóa/giải mã và nhồi bit

• Hỗ trợ truyền đẳng thời

• Hỗ trợ điểm cuối số lượng lớn/đồng bộ đệm đôi

• Tạm dừng/tiếp tục hoạt động USB

• Tạo xung đồng hồ bị khóa khung

Trong các thiết bị có mật độ thấp, trung bình, cao và XL, USB và CAN chia sẻ bộ nhớ SRAM 512
byte chuyên dụng để truyền và nhận dữ liệu, do đó chúng không thể được sử dụng đồng
thời (RAM chia sẻ chỉ được truy cập thông qua CAN và USB). USB và CAN có thể được sử dụng
trong cùng một ứng dụng nhưng không thể sử dụng cùng một lúc.

23.3 Mô tả chức năng USB


Hình 220 thể hiện sơ đồ khối của thiết bị ngoại vi USB.

622/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB)

Hình 220. Sơ đồ khối ngoại vi USB


DP DM

Đồng hồ USB (48 MHz)


Tương tự PCLK
máy thu phát

USB
Phục Điều khiển
RX-TX
Tạm dừng hồi đồng hồ thanh ghi và logic
hẹn giờ Điều khiển Lựa chọn Ngắt
điểm cuối
SIE thanh ghi và logic

Giao
diện
Thanh ghi Thanh ghi
đệm gói
điểm cuối điểm cuối

Bộ nhớ Đăng
Đăng ký
ký Trình
trọng tài
đệm người
người lập
lập bản
bản đồ
đồ ánh xạ ngắt
gói

Trình bao bọc APB1

Giao diện APB1

PCLK1 APB1_bus IRQ tới NVIC

MSv42086V1

Thiết bị ngoại vi USB cung cấp kết nối tương thích USB giữa PC chủ và chức năng do bộ vi
điều khiển triển khai. Việc truyền dữ liệu giữa PC chủ và bộ nhớ hệ thống diễn ra thông
qua bộ nhớ đệm gói chuyên dụng được thiết bị ngoại vi USB truy cập trực tiếp. Kích thước của
bộ nhớ đệm chuyên dụng này phải theo số lượng điểm cuối được sử dụng và kích thước gói tối
đa. Bộ nhớ chuyên dụng này có kích thước lên tới 512 byte và có thể sử dụng tối đa 16 điểm
cuối đơn hướng hoặc 8 điểm cuối hai chiều. Giao diện ngoại vi USB với máy chủ USB, phát
hiện các gói mã thông báo, xử lý việc truyền/nhận dữ liệu và xử lý các gói bắt
tay theo yêu cầu của chuẩn USB. Việc định dạng giao dịch được thực hiện bởi phần
cứng, bao gồm cả việc tạo và kiểm tra CRC.

RM0008 Phiên bản 21 623/1136

652
Machine Translated by Google

Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB) RM0008

Mỗi điểm cuối được liên kết với một khối mô tả bộ đệm cho biết vị trí của vùng bộ nhớ liên
quan đến điểm cuối, kích thước của nó hoặc số byte phải được truyền đi.
Khi mã thông báo cho cặp chức năng/điểm cuối hợp lệ được thiết bị ngoại vi USB nhận ra thì
quá trình truyền dữ liệu liên quan (nếu được yêu cầu và nếu điểm cuối được định cấu hình)
sẽ diễn ra. Dữ liệu được đệm bởi thiết bị ngoại vi USB được tải vào thanh ghi 16 bit bên trong
và việc truy cập bộ nhớ vào bộ đệm chuyên dụng được thực hiện. Khi tất cả dữ liệu đã được
truyền, nếu cần, gói bắt tay thích hợp qua USB sẽ được tạo hoặc dự kiến theo hướng truyền.

Khi kết thúc giao dịch, một ngắt dành riêng cho điểm cuối được tạo ra, đọc các thanh ghi
trạng thái và/hoặc sử dụng các quy trình phản hồi ngắt khác nhau. Bộ vi điều khiển có
thể xác định:

• điểm cuối được phục vụ

• loại giao dịch đã diễn ra, nếu có lỗi (như nhồi bit, định dạng, CRC,
đã xảy ra giao thức, thiếu ACK, chạy quá mức/chạy chậm).

Hỗ trợ đặc biệt được cung cấp cho truyền Isochronous và truyền số lượng lớn thông lượng
cao, triển khai sử dụng bộ đệm đôi, cho phép luôn có sẵn bộ đệm cho thiết bị ngoại vi USB trong
khi bộ vi điều khiển sử dụng bộ đệm còn lại.

Thiết bị có thể được đặt ở chế độ năng lượng thấp (chế độ TẠM NGỪNG), bằng cách ghi vào thanh ghi
điều khiển, bất cứ khi nào cần thiết. Tại thời điểm này, tất cả sự tiêu tán năng lượng tĩnh đều được
tránh và đồng hồ USB có thể bị chậm lại hoặc dừng lại. Việc phát hiện hoạt động ở đầu vào USB khi ở chế
độ nguồn điện thấp sẽ đánh thức thiết bị một cách không đồng bộ. Một nguồn ngắt đặc biệt có thể được
kết nối trực tiếp với đường dây đánh thức để cho phép hệ thống khởi động lại ngay lập tức việc tạo
đồng hồ thông thường và/hoặc hỗ trợ khởi động/dừng đồng hồ trực tiếp.

23.3.1 Mô tả khối USB


Thiết bị ngoại vi USB triển khai tất cả các tính năng liên quan đến giao diện USB, bao gồm các
khối sau:
• Công cụ giao diện nối tiếp (SIE): Các chức năng của khối này bao gồm: nhận dạng mẫu
đồng bộ hóa, nhồi bit, tạo và kiểm tra CRC, xác minh/tạo PID và đánh
giá bắt tay. Nó phải giao tiếp với bộ thu phát USB và sử dụng bộ đệm ảo được cung cấp
bởi giao diện bộ đệm gói để lưu trữ dữ liệu cục bộ. Thiết bị này cũng tạo tín hiệu
theo các sự kiện ngoại vi USB, chẳng hạn như Bắt đầu khung (SOF), USB_Reset, Lỗi dữ
liệu, v.v. và các sự kiện liên quan đến Điểm cuối như kết thúc truyền hoặc nhận đúng
gói; những tín hiệu này sau đó được sử dụng để tạo ra các ngắt.

• Bộ định thời: Khối này tạo ra xung đồng hồ bị khóa ở đầu khung và phát hiện trạng thái treo
toàn cục (từ máy chủ) khi không nhận được lưu lượng nào trong 3 ms.

• Giao diện bộ đệm gói: Khối này quản lý bộ nhớ cục bộ triển khai một bộ bộ đệm một cách linh
hoạt, cho cả truyền và nhận. Nó có thể chọn bộ đệm thích hợp theo các yêu cầu đến từ SIE
và định vị chúng trong các địa chỉ bộ nhớ được chỉ ra bởi các thanh ghi Điểm cuối.
Nó tăng địa chỉ sau mỗi từ được trao đổi cho đến khi kết thúc gói, theo dõi số byte
được trao đổi và ngăn bộ đệm vượt quá dung lượng tối đa.

• Các thanh ghi liên quan đến điểm cuối: Mỗi điểm cuối có một thanh ghi liên quan chứa loại
điểm cuối và trạng thái hiện tại của nó. Đối với các điểm cuối một hướng/bộ đệm đơn,
một thanh ghi duy nhất có thể được sử dụng để triển khai hai điểm cuối riêng biệt.
Số lượng thanh ghi là 8, cho phép tối đa 16 bộ đệm đơn hướng/đệm đơn hoặc tối đa 7 bộ đệm đôi

624/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB)

điểm cuối(a) trong bất kỳ sự kết hợp nào. Ví dụ: thiết bị ngoại vi USB có thể được lập
trình để có 4 điểm cuối bộ đệm đôi và 8 điểm cuối bộ đệm đơn/đơn hướng.

• Thanh ghi điều khiển: Đây là những thanh ghi chứa thông tin về trạng thái của toàn bộ thiết
bị ngoại vi USB và được sử dụng để buộc một số sự kiện USB, chẳng hạn như tiếp
tục và tắt nguồn.
• Các thanh ghi ngắt: Chúng chứa các mặt nạ ngắt và bản ghi các sự kiện. Chúng có thể được
sử dụng để hỏi lý do ngắt, trạng thái ngắt hoặc để xóa trạng thái ngắt đang chờ xử lý.

Thiết bị ngoại vi USB được kết nối với bus APB1 thông qua giao diện APB1, chứa các khối sau:

• Bộ nhớ gói: Đây là bộ nhớ cục bộ chứa Bộ đệm gói. Nó có thể được sử dụng bởi giao diện
Packet Buffer, giao diện này tạo ra cấu trúc dữ liệu và có thể được truy cập trực tiếp
bằng phần mềm ứng dụng. Kích thước của Bộ nhớ gói là 512 byte, được cấu trúc thành 256
từ x 16 bit.
• Trọng tài: Khối này chấp nhận các yêu cầu bộ nhớ đến từ bus APB1 và từ giao diện USB.
Nó giải quyết xung đột bằng cách ưu tiên truy cập APB1, đồng thời luôn dành một
nửa băng thông bộ nhớ để hoàn thành tất cả quá trình truyền qua USB. Sơ đồ song công
thời gian này triển khai SRAM cổng kép ảo cho phép truy cập bộ nhớ trong khi giao dịch
USB đang diễn ra. Chương trình này cho phép chuyển nhiều từ APB1 với độ dài bất kỳ.

• Register Mapper: Khối này thu thập các thanh ghi rộng byte và rộng bit khác nhau của
thiết bị ngoại vi USB trong tập từ rộng 16 bit có cấu trúc được xử lý bởi APB1.

• Trình bao bọc APB1: Điều này cung cấp giao diện cho APB1 cho bộ nhớ và thanh ghi. Nó cũng
ánh xạ toàn bộ thiết bị ngoại vi USB vào không gian địa chỉ APB1.
• Trình ánh xạ ngắt: Khối này được sử dụng để chọn cách các sự kiện USB có thể tạo
ra các ngắt và ánh xạ chúng tới ba dòng khác nhau của NVIC:

– Ngắt ưu tiên thấp USB (Kênh 20): Được kích hoạt bởi tất cả các sự kiện USB (Đúng
chuyển, thiết lập lại USB, v.v.). Phần sụn phải kiểm tra nguồn ngắt trước khi
phục vụ ngắt.

– Ngắt ưu tiên cao USB (Kênh 19): Chỉ được kích hoạt bởi một sự kiện truyền chính xác
để truyền hàng loạt đẳng thời gian và bộ đệm đôi để đạt tốc độ truyền cao nhất
có thể.

– Ngắt đánh thức USB (Kênh 42): Được kích hoạt bởi sự kiện đánh thức từ chế độ Tạm dừng
USB.

23.4 Cân nhắc về lập trình


Trong các phần sau, các tương tác dự kiến giữa thiết bị ngoại vi USB và chương trình
ứng dụng sẽ được mô tả để tạo điều kiện thuận lợi cho việc phát triển phần mềm ứng dụng.

23.4.1 Lập trình thiết bị USB chung

Phần này mô tả các tác vụ chính cần có của phần mềm ứng dụng để có được hoạt động tương
thích với USB. Các hành động liên quan đến các sự kiện USB chung nhất đều được tính đến và
các đoạn dành riêng cho các trường hợp đặc biệt của điểm cuối được đệm đôi

Một. Điểm cuối 0 luôn được sử dụng để truyền điều khiển ở chế độ bộ đệm đơn.

RM0008 Phiên bản 21 625/1136

652
Machine Translated by Google

Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB) RM0008

và chuyển giao đẳng thời. Ngoài việc thiết lập lại hệ thống, hành động luôn được thiết bị ngoại vi USB khởi
tạo, được điều khiển bởi một trong các sự kiện USB được mô tả bên dưới.

23.4.2 Thiết lập lại hệ thống và bật nguồn

Khi khởi động lại hệ thống và bật nguồn, thao tác đầu tiên mà phần mềm ứng dụng phải thực hiện là cung cấp tất
cả tín hiệu đồng hồ cần thiết cho thiết bị ngoại vi USB và sau đó hủy xác nhận tín hiệu đặt lại của nó để có
thể truy cập vào các thanh ghi của nó. Toàn bộ trình tự khởi tạo sau đây được mô tả.

Là bước đầu tiên, phần mềm ứng dụng cần kích hoạt đăng ký đồng hồ macrocell và hủy xác nhận tín hiệu đặt lại
cụ thể của macrocell bằng cách sử dụng các bit điều khiển liên quan được cung cấp bởi logic quản
lý đồng hồ của thiết bị.

Sau đó, phần tương tự của thiết bị liên quan đến bộ thu phát USB phải được bật bằng cách sử dụng bit PDWN
trong thanh ghi CNTR, điều này yêu cầu xử lý đặc biệt. Bit này nhằm mục đích bật các tham chiếu điện áp bên
trong cung cấp cho bộ thu phát cổng. Mạch này có thời gian khởi động được xác định (tSTARTUP được chỉ định

trong biểu dữ liệu) trong đó hoạt động của bộ thu phát USB không được xác định. Do đó, cần phải đợi lần này,
sau khi thiết lập bit PDWN trong thanh ghi CNTR, trước khi loại bỏ điều kiện đặt lại trên phần USB (bằng cách
xóa bit FRES trong thanh ghi CNTR). Xóa thanh ghi ISTR sau đó loại bỏ mọi ngắt giả đang chờ xử lý trước khi
bất kỳ thao tác macrocell nào khác được bật.

Khi thiết lập lại hệ thống, bộ vi điều khiển phải khởi tạo tất cả các thanh ghi cần thiết và bảng mô tả
bộ đệm gói để giúp thiết bị ngoại vi USB có thể tạo ngắt và truyền dữ liệu đúng cách. Tất cả các thanh ghi
không dành riêng cho bất kỳ điểm cuối nào phải được khởi tạo theo nhu cầu của phần mềm ứng dụng (lựa chọn
các ngắt được kích hoạt, địa chỉ đã chọn của bộ đệm gói, v.v.). Sau đó, quá trình tiếp tục như đối với
trường hợp đặt lại USB (xem đoạn tiếp theo).

Thiết lập lại USB (ngắt RESET)

Khi sự kiện này xảy ra, thiết bị ngoại vi USB sẽ được đặt trong cùng điều kiện mà hệ thống đặt lại sau
khi khởi tạo được mô tả trong đoạn trước: giao tiếp bị vô hiệu hóa trong tất cả các thanh ghi điểm cuối
(thiết bị ngoại vi USB sẽ không phản hồi với bất kỳ gói nào). Để phản hồi sự kiện đặt lại USB, chức năng USB
phải được bật, có địa chỉ USB 0, chỉ triển khai điểm cuối điều khiển mặc định (địa chỉ điểm cuối cũng
là 0). Điều này được thực hiện bằng cách thiết lập bit Kích hoạt chức năng (EF) của thanh ghi USB_DADDR và
khởi tạo thanh ghi EP0R cũng như các bộ đệm gói liên quan của nó cho phù hợp. Trong quá trình liệt kê USB,
máy chủ chỉ định một địa chỉ duy nhất cho thiết bị này. Địa chỉ này phải được ghi bằng các bit
ADD[6:0] của thanh ghi USB_DADDR và định cấu hình mọi điểm cuối cần thiết khác.

Khi nhận được ngắt RESET, phần mềm ứng dụng có trách nhiệm kích hoạt lại điểm cuối mặc định của chức năng USB
0 trong vòng 10mS kể từ khi kết thúc trình tự đặt lại đã kích hoạt ngắt.

Cấu trúc và cách sử dụng bộ đệm gói

Mỗi điểm cuối hai chiều có thể nhận hoặc truyền dữ liệu từ/đến máy chủ. Dữ liệu nhận được được lưu trữ trong
bộ nhớ đệm dành riêng cho điểm cuối đó, trong khi bộ nhớ đệm khác chứa dữ liệu được điểm cuối truyền đi.
Việc truy cập vào bộ nhớ này được thực hiện bởi khối giao diện bộ đệm gói, khối này đưa ra yêu cầu
truy cập bộ nhớ và chờ xác nhận của nó. Vì bộ nhớ đệm gói cũng phải được truy cập bởi bộ vi điều khiển
nên logic phân xử sẽ xử lý các xung đột truy cập bằng cách sử dụng một nửa

626/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB)

Chu trình APB1 để truy cập vi điều khiển và nửa còn lại để truy cập thiết bị ngoại vi
USB. Bằng cách này, cả hai tác nhân có thể hoạt động như thể bộ nhớ gói là SRAM cổng kép
mà không nhận thấy bất kỳ xung đột nào ngay cả khi bộ vi điều khiển đang thực hiện truy
cập giáp lưng. Logic ngoại vi USB sử dụng đồng hồ chuyên dụng. Tần số của đồng hồ chuyên dụng
này được cố định theo yêu cầu của tiêu chuẩn USB ở mức 48 MHz và tần số này có thể khác với
đồng hồ được sử dụng cho giao diện với bus APB1. Có thể có các cấu hình đồng hồ khác
nhau trong đó tần số xung nhịp APB1 có thể cao hơn hoặc thấp hơn tần số xung nhịp của thiết
bị ngoại vi USB.

Ghi chú: Do yêu cầu về tốc độ dữ liệu USB và giao diện bộ nhớ gói, tần số xung nhịp APB1 phải lớn hơn
8 MHz để tránh sự cố tràn/chạy dưới dữ liệu.

Mỗi điểm cuối được liên kết với hai bộ đệm gói (thường là một để truyền và một để nhận).
Bộ đệm có thể được đặt ở bất kỳ đâu trong bộ nhớ gói vì vị trí và kích thước của
chúng được chỉ định trong bảng mô tả bộ đệm, bảng này cũng nằm trong bộ nhớ gói tại
địa chỉ được chỉ định bởi thanh ghi USB_BTABLE. Mỗi mục trong bảng được liên kết với một
thanh ghi điểm cuối và nó bao gồm bốn từ 16 bit để địa chỉ bắt đầu của bảng phải luôn được
căn chỉnh theo ranh giới 8 byte (ba bit thấp nhất của thanh ghi USB_BTABLE luôn là “000”).
Các mục trong bảng mô tả bộ đệm được mô tả trong Phần 23.5.3. Nếu điểm cuối là một chiều và
nó không phải là bộ đệm đồng bộ cũng như bộ đệm đôi thì chỉ cần một bộ đệm gói (bộ đệm
liên quan đến hướng truyền được hỗ trợ). Các vị trí bảng khác liên quan đến hướng chuyển
không được hỗ trợ hoặc điểm cuối không được sử dụng đều có sẵn cho người dùng. Điểm
cuối số lượng lớn bộ đệm đồng bộ và bộ đệm đôi có cách xử lý đặc biệt đối với bộ đệm
gói (tham khảo Phần 23.4.4 và Phần 23.4.3 tương ứng). Mối quan hệ giữa các mục
trong bảng mô tả bộ đệm và vùng đệm gói được trình bày chi tiết trong Hình 221.

RM0008 Phiên bản 21 627/1136

652
Machine Translated by Google

Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB) RM0008

Hình 221. Vùng đệm gói với ví dụ về vị trí bảng mô tả bộ đệm

Bộ đệm cho
đệm đôi
TRONG Điểm cuối 3

0001_1110 (1E) COUNT3_TX_1

0001_1100 (1C) ADDR3_TX_1

0001_1010 (1A) COUNT3_TX_0 Bộ đệm cho


đệm đôi
0001_1000 (18) ADDR3_TX_0
OUT Điểm cuối 2
0001_0110 (16) COUNT2_RX_1

0001_0100 (14) ADDR2_RX_1

0001_0010 (12) COUNT2_RX_0

0001_0000 (10) ADDR2_RX_0 Bộ đệm truyền cho

0000_1110 (0E) COUNT1_RX


bộ đệm đơn
0000_1100 (0C) ADDR1_RX Điểm cuối 1

0000_1010 (0A) COUNT1_TX

0000_1000 (08) ADDR1_TX Bộ đệm tiếp nhận


cho
0000_0110 (06) COUNT0_RX
Điểm cuối 0
0000_0100 (04) ADDR0_RX
Bộ đệm truyền cho

0000_0010 (02) COUNT0_TX


Điểm cuối 0
0000_0000 (00) ADDR0_TX

Vị trí bảng mô tả bộ đệm Bộ đệm gói

ai17109

Mỗi bộ đệm gói được sử dụng trong quá trình nhận hoặc truyền bắt đầu từ phía dưới.
Thiết bị ngoại vi USB sẽ không bao giờ thay đổi nội dung của các vị trí bộ nhớ liền kề
với bộ đệm được phân bổ; nếu nhận được một gói lớn hơn độ dài bộ đệm được phân bổ (điều
kiện tràn bộ đệm), dữ liệu sẽ chỉ được sao chép vào bộ nhớ cho đến vị trí khả dụng cuối cùng.

Khởi tạo điểm cuối

Bước đầu tiên để khởi tạo điểm cuối là ghi các giá trị thích hợp vào các
thanh ghi ADDRn_TX/ADDRn_RX để thiết bị ngoại vi USB tìm thấy dữ liệu được truyền
đã có sẵn và dữ liệu được nhận có thể được lưu vào bộ đệm. Các bit EP_TYPE trong thanh
ghi USB_EPnR phải được đặt theo loại điểm cuối, cuối cùng sử dụng bit EP_KIND để kích hoạt
bất kỳ tính năng cần thiết đặc biệt nào. Về phía truyền, điểm cuối phải được kích hoạt bằng
cách sử dụng các bit STAT_TX trong thanh ghi USB_EPnR và COUNTn_TX phải được khởi tạo. Để
nhận, các bit STAT_RX phải được đặt để cho phép nhận và COUNTn_RX phải được ghi
với kích thước bộ đệm được phân bổ bằng cách sử dụng các trường BL_SIZE và
NUM_BLOCK. Điểm cuối một chiều, ngoại trừ điểm cuối số lượng lớn Isochronous và bộ đệm đôi,
chỉ cần khởi tạo các bit và thanh ghi liên quan đến hướng được hỗ trợ. Một lần

628/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB)

việc truyền và/hoặc nhận được bật, hãy đăng ký USB_EPnR và các vị trí ADDRn_TX/
ADDRn_RX, COUNTn_TX/COUNTn_RX (tương ứng), không được sửa đổi bởi phần mềm ứng dụng vì phần
cứng có thể thay đổi giá trị của chúng một cách nhanh chóng. Khi thao tác truyền dữ liệu
hoàn tất, được thông báo bởi sự kiện gián đoạn CTR, chúng có thể được truy cập lại
để kích hoạt lại thao tác mới.

Gói IN (truyền dữ liệu)

Khi nhận gói mã thông báo IN, nếu địa chỉ nhận được khớp với điểm cuối hợp lệ và được định
cấu hình, thiết bị ngoại vi USB sẽ truy cập nội dung của các vị trí ADDRn_TX và COUNTn_TX
bên trong mục nhập bảng mô tả bộ đệm liên quan đến điểm cuối được đánh địa chỉ. Nội dung của
các vị trí này được lưu trữ trong các thanh ghi 16 bit ADDR và COUNT bên trong của nó (phần
mềm không thể truy cập được). Bộ nhớ gói được truy cập lại để đọc từ đầu tiên được truyền
đi (tham khảo Cấu trúc và cách sử dụng bộ đệm gói) và bắt đầu gửi PID DATA0 hoặc DATA1 theo
bit USB_EPnR DTOG_TX. Khi PID hoàn tất, byte đầu tiên của từ, được đọc từ bộ nhớ đệm, sẽ
được tải vào thanh ghi dịch đầu ra để truyền trên bus USB. Sau khi byte dữ liệu cuối cùng
được truyền đi, CRC được tính toán sẽ được gửi đi. Nếu điểm cuối được đánh địa chỉ
không hợp lệ, gói bắt tay NAK hoặc STALL sẽ được gửi thay vì gói dữ liệu, theo các bit
STAT_TX trong thanh ghi USB_EPnR.

Thanh ghi nội bộ ADDR được sử dụng làm con trỏ tới vị trí bộ nhớ đệm hiện tại trong khi COUNT
được sử dụng để đếm số byte còn lại được truyền đi. Mỗi từ được đọc từ bộ nhớ đệm gói sẽ
được truyền qua bus USB bắt đầu từ byte có trọng số nhỏ nhất. Bộ nhớ đệm truyền được
đọc bắt đầu từ địa chỉ được trỏ bởi ADDRn_TX cho COUNTn_TX/2 từ. Nếu một gói được truyền
bao gồm một số byte lẻ thì chỉ nửa dưới của từ cuối cùng được truy cập sẽ được sử
dụng.

Khi máy chủ nhận được biên nhận ACK, thanh ghi USB_EPnR được cập nhật theo cách sau:
bit DTOG_TX được bật, điểm cuối bị vô hiệu hóa bằng cách đặt STAT_TX=10 (NAK)
và bit CTR_TX được đặt. Trước tiên, phần mềm ứng dụng phải xác định điểm cuối đang yêu cầu
sự chú ý của bộ vi điều khiển bằng cách kiểm tra các bit EP_ID và DIR trong thanh ghi
USB_ISTR. Việc phục vụ sự kiện CTR_TX bắt đầu xóa bit ngắt; Sau đó, phần mềm ứng dụng chuẩn
bị một bộ đệm khác chứa đầy dữ liệu sẽ được gửi, cập nhật vị trí bảng COUNTn_TX với số
byte sẽ được truyền trong lần truyền tiếp theo và cuối cùng đặt STAT_TX thành '11
(VALID) để kích hoạt lại quá trình truyền. Mặc dù các bit STAT_TX bằng '10 (NAK), mọi
yêu cầu IN gửi đến điểm cuối đó đều là NAKED, biểu thị điều kiện kiểm soát luồng: máy chủ USB
sẽ thử lại giao dịch cho đến khi thành công. Bắt buộc phải thực hiện chuỗi thao tác theo thứ
tự được đề cập ở trên để tránh mất thông báo về giao dịch IN thứ hai được gửi đến cùng một
điểm cuối ngay sau giao dịch đã kích hoạt ngắt CTR.

Gói OUT và SETUP (nhận dữ liệu)

Hai mã thông báo này được thiết bị ngoại vi USB xử lý ít nhiều theo cùng một cách; sự
khác biệt trong việc xử lý các gói SETUP được trình bày chi tiết trong đoạn sau về việc
chuyển điều khiển. Khi nhận được PID OUT/SETUP, nếu địa chỉ khớp với điểm cuối hợp lệ,
thiết bị ngoại vi USB sẽ truy cập nội dung của các vị trí ADDRn_RX và COUNTn_RX bên trong
mục nhập bảng mô tả bộ đệm liên quan đến điểm cuối được đánh địa chỉ. Nội dung của
ADDRn_RX được lưu trữ trực tiếp trong thanh ghi ADDR nội bộ của nó. Mặc dù COUNT hiện được
đặt lại và các giá trị của trường bit BL_SIZE và NUM_BLOCK, được đọc trong nội dung
COUNTn_RX, được sử dụng để khởi tạo BUF_COUNT, bộ đếm 16 bit bên trong, được sử dụng để kiểm
tra tình trạng tràn bộ đệm (tất cả các thanh ghi nội bộ này không thể truy cập được bằng phần
mềm). Các byte dữ liệu mà thiết bị ngoại vi USB nhận được sau đó được đóng gói dưới dạng
từ (byte đầu tiên nhận được được lưu dưới dạng byte có trọng số nhỏ nhất) và sau đó được chuyển sang gói

RM0008 Phiên bản 21 629/1136

652
Machine Translated by Google

Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB) RM0008

bộ đệm bắt đầu từ địa chỉ có trong thanh ghi ADDR bên trong trong khi BUF_COUNT bị giảm đi và COUNT
được tăng lên sau mỗi lần truyền byte. Khi phát hiện thấy phần cuối của gói DATA, tính chính xác
của CRC nhận được sẽ được kiểm tra và chỉ khi không có lỗi xảy ra trong quá trình nhận, gói bắt
tay ACK mới được gửi trở lại máy chủ truyền.

Trong trường hợp CRC sai hoặc các loại lỗi khác (vi phạm bit, lỗi khung, v.v.), byte dữ liệu vẫn
được sao chép vào bộ đệm bộ nhớ gói, ít nhất là cho đến điểm phát hiện lỗi, nhưng gói ACK không được
gửi và Bit ERR trong thanh ghi USB_ISTR được đặt. Tuy nhiên, thường không cần thực hiện hành
động phần mềm nào trong trường hợp này: thiết bị ngoại vi USB sẽ phục hồi sau các lỗi tiếp nhận và
vẫn sẵn sàng cho giao dịch tiếp theo. Nếu điểm cuối được định địa chỉ không hợp lệ, gói bắt tay NAK
hoặc STALL sẽ được gửi thay vì ACK, theo các bit STAT_RX trong thanh ghi USB_EPnR và không có
dữ liệu nào được ghi vào bộ đệm bộ nhớ tiếp nhận.

Các vị trí bộ nhớ đệm tiếp nhận được ghi bắt đầu từ địa chỉ chứa trong ADDRn_RX cho một số byte
tương ứng với độ dài gói dữ liệu đã nhận, bao gồm CRC (tức là độ dài tải trọng dữ liệu + 2) hoặc đến
vị trí bộ nhớ được phân bổ cuối cùng, như được xác định bởi BL_SIZE và NUM_BLOCK, tùy điều
kiện nào đến trước. Bằng cách này, thiết bị ngoại vi USB không bao giờ ghi vượt quá phần cuối
của vùng đệm bộ nhớ tiếp nhận được phân bổ. Nếu độ dài của tải trọng gói dữ liệu (số byte thực tế
được ứng dụng sử dụng) lớn hơn bộ đệm được phân bổ thì thiết bị ngoại vi USB sẽ phát hiện tình trạng
tràn bộ đệm. trong trường hợp này, bắt tay STALL được gửi thay vì ACK thông thường để thông báo sự
cố cho máy chủ, không có ngắt nào được tạo ra và giao dịch được coi là không thành công.

Khi giao dịch được hoàn thành chính xác, bằng cách gửi gói bắt tay ACK, thanh ghi COUNT nội bộ sẽ
được sao chép trở lại vị trí COUNTn_RX bên trong mục nhập bảng mô tả bộ đệm, để lại các trường
BL_SIZE và NUM_BLOCK không bị ảnh hưởng, thường không cần phải viết lại, và thanh ghi
USB_EPnR được cập nhật theo cách sau: bit DTOG_RX được bật, điểm cuối bị vô hiệu hóa bằng cách
đặt STAT_RX = '10 (NAK) và bit CTR_RX được đặt. Nếu giao dịch không thành công do lỗi hoặc tình trạng
tràn bộ đệm thì không có hành động nào được liệt kê trước đó diễn ra. Trước tiên, phần mềm ứng dụng
phải xác định điểm cuối đang yêu cầu sự chú ý của bộ vi điều khiển bằng cách kiểm tra các bit EP_ID
và DIR trong thanh ghi USB_ISTR. Sự kiện CTR_RX được phục vụ bằng cách trước tiên xác định loại
giao dịch (bit SETUP trong thanh ghi USB_EPnR); phần mềm ứng dụng phải xóa bit cờ ngắt và lấy
số byte nhận được khi đọc vị trí COUNTn_RX bên trong mục nhập bảng mô tả bộ đệm liên quan đến điểm
cuối đang được xử lý. Sau khi xử lý dữ liệu nhận được, phần mềm ứng dụng sẽ đặt các bit STAT_RX
thành '11 (Hợp lệ) trong USB_EPnR, cho phép thực hiện các giao dịch tiếp theo. Mặc dù các bit STAT_RX
bằng '10 (NAK), mọi yêu cầu OUT gửi đến điểm cuối đó đều là NAKED, biểu thị điều kiện kiểm soát
luồng: máy chủ USB sẽ thử lại giao dịch cho đến khi thành công. Bắt buộc phải thực hiện chuỗi
thao tác theo thứ tự được đề cập ở trên để tránh mất thông báo về giao dịch OUT thứ hai được
gửi đến cùng một điểm cuối ngay sau giao dịch kích hoạt ngắt CTR.

Kiểm soát chuyển giao

Việc chuyển giao điều khiển được thực hiện bằng giao dịch THIẾT LẬP, theo sau là 0 hoặc nhiều giai
đoạn dữ liệu, tất cả đều có cùng hướng, tiếp theo là giai đoạn trạng thái (chuyển 0 byte theo
hướng ngược lại). Các giao dịch SETUP chỉ được xử lý bởi các điểm cuối điều khiển và rất giống với
các giao dịch OUT (nhận dữ liệu) ngoại trừ các giá trị của bit DTOG_TX và DTOG_RX của các thanh ghi
điểm cuối có địa chỉ được đặt tương ứng là 1 và 0 để khởi tạo quá trình truyền điều khiển và cả
STAT_TX và STAT_RX được đặt thành '10 (NAK) để cho phép phần mềm quyết định xem các giao dịch tiếp
theo phải vào hay ra tùy thuộc vào nội dung THIẾT LẬP. Điểm cuối điều khiển phải kiểm tra bit SETUP
trong thanh ghi USB_EPnR tại mỗi sự kiện CTR_RX để phân biệt thông thường

630/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB)

Giao dịch OUT từ giao dịch SETUP. Thiết bị USB có thể xác định số lượng và hướng của các giai

đoạn dữ liệu bằng cách diễn giải dữ liệu được truyền trong giai đoạn THIẾT LẬP và được yêu cầu
TẠM NGỪNG giao dịch trong trường hợp có lỗi. Để làm như vậy, ở tất cả các giai đoạn dữ liệu trước
giai đoạn cuối cùng, hướng không được sử dụng phải được đặt thành STALL, để nếu máy chủ đảo
ngược hướng truyền quá sớm, nó sẽ nhận được STALL làm giai đoạn trạng thái.

Trong khi bật giai đoạn dữ liệu cuối cùng, hướng ngược lại phải được đặt thành NAK, để nếu máy chủ
đảo ngược hướng truyền (để thực hiện giai đoạn trạng thái) ngay lập tức, nó sẽ được giữ nguyên để
chờ hoàn thành thao tác điều khiển. Nếu thao tác điều khiển hoàn tất thành công, phần mềm sẽ
thay đổi NAK thành VALID, nếu không thì thành STALL. Đồng thời, nếu giai đoạn trạng thái là OUT, bit
STATUS_OUT (EP_KIND trong thanh ghi USB_EPnR) phải được đặt để tạo ra lỗi nếu giao dịch trạng thái
được thực hiện với dữ liệu khác 0. Khi giao dịch trạng thái được phục vụ, ứng dụng sẽ xóa bit
STATUS_OUT và đặt STAT_RX thành VALID (để chấp nhận lệnh mới) và STAT_TX thành NAK (để trì hoãn giai
đoạn trạng thái có thể xảy ra ngay sau lần thiết lập tiếp theo).

Do thông số kỹ thuật USB nêu rõ rằng gói SETUP không thể được trả lời bằng cách bắt tay khác
với ACK, cuối cùng sẽ hủy bỏ lệnh đã phát trước đó để bắt đầu gói mới, logic USB không cho phép điểm
cuối điều khiển trả lời bằng gói NAK hoặc STALL tới mã thông báo SETUP nhận được từ máy chủ.

Khi các bit STAT_RX được đặt thành '01 (STALL) hoặc '10 (NAK) và nhận được mã thông báo
SETUP, USB sẽ chấp nhận dữ liệu, thực hiện truyền dữ liệu cần thiết và gửi lại bắt tay ACK. Nếu điểm
cuối đó có yêu cầu CTR_RX được phát hành trước đó chưa được ứng dụng xác nhận (tức là bit
CTR_RX vẫn được đặt từ lần tiếp nhận đã hoàn thành trước đó), USB sẽ loại bỏ giao dịch SETUP và
không trả lời với bất kỳ gói bắt tay nào bất kể trạng thái của nó, mô phỏng một lỗi tiếp nhận
và buộc máy chủ gửi lại mã thông báo CÀI ĐẶT. Điều này được thực hiện để tránh mất thông báo về giao
dịch SETUP được gửi đến cùng một điểm cuối ngay sau giao dịch, điều này đã gây ra ngắt CTR_RX.

23.4.3 Điểm cuối đệm đôi

Tất cả các loại điểm cuối khác nhau được xác định bởi tiêu chuẩn USB đại diện cho các mô hình lưu
lượng khác nhau và mô tả các yêu cầu điển hình của các loại hoạt động truyền dữ liệu khác nhau. Khi
một phần lớn dữ liệu được truyền giữa PC chủ và chức năng USB, loại điểm cuối số lượng lớn là kiểu
phù hợp nhất. Điều này là do máy chủ lên lịch các giao dịch hàng loạt để lấp đầy tất cả băng
thông có sẵn trong khung, tối đa hóa tốc độ truyền thực tế miễn là chức năng USB sẵn sàng xử lý
giao dịch hàng loạt được gửi tới nó. Nếu chức năng USB vẫn bận với giao dịch trước đó khi giao dịch
tiếp theo đến, nó sẽ trả lời bằng một cái bắt tay NAK và PC chủ sẽ thực hiện lại giao dịch tương tự
cho đến khi chức năng USB sẵn sàng xử lý nó, làm giảm tốc độ truyền thực tế do đến băng thông bị
chiếm dụng khi truyền lại. Vì lý do này, một tính năng chuyên dụng được gọi là 'bộ đệm đôi' có
thể được sử dụng với các điểm cuối hàng loạt.

Khi 'bộ đệm đôi' được kích hoạt, trình tự chuyển đổi dữ liệu được sử dụng để chọn bộ đệm nào sẽ được
thiết bị ngoại vi USB sử dụng để thực hiện truyền dữ liệu cần thiết, sử dụng cả vùng bộ nhớ gói
'truyền' và 'tiếp nhận' để quản lý hoán đổi bộ đệm trên mỗi giao dịch thành công để luôn có bộ đệm
hoàn chỉnh để ứng dụng sử dụng, trong khi thiết bị ngoại vi USB sẽ lấp đầy bộ đệm còn lại. Ví
dụ: trong giao dịch OUT hướng đến điểm cuối hàng loạt bộ đệm đôi 'tiếp nhận', trong khi một bộ
đệm đang chứa đầy dữ liệu mới đến từ máy chủ USB, bộ đệm còn lại có sẵn để sử dụng phần mềm vi điều
khiển (điều tương tự sẽ xảy ra với điểm cuối số lượng lớn được đệm đôi 'truyền' và giao
dịch IN).

RM0008 Phiên bản 21 631/1136

652
Machine Translated by Google

Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB) RM0008

Do việc quản lý bộ đệm được hoán đổi yêu cầu sử dụng tất cả bốn vị trí bảng mô tả bộ đệm lưu
trữ con trỏ địa chỉ và độ dài của bộ đệm được phân bổ, nên các thanh ghi USB_EPnR được sử
dụng để triển khai các điểm cuối hàng loạt bộ đệm đôi buộc phải được sử dụng làm điểm cuối
một chiều. Do đó, chỉ một cặp bit STAT phải được đặt ở giá trị khác với '00 (Đã tắt):
STAT_RX nếu điểm cuối hàng loạt bộ đệm đôi được bật để nhận, STAT_TX nếu điểm cuối hàng
loạt bộ đệm đôi được bật để truyền. Trong trường hợp bắt buộc phải kích hoạt các điểm
cuối số lượng lớn có bộ đệm đôi cho cả việc nhận và truyền, thì phải sử dụng hai thanh ghi
USB_EPnR.

Để khai thác tính năng đệm đôi và đạt tốc độ truyền cao nhất có thể, cấu trúc điều khiển
luồng điểm cuối, được mô tả trong các chương trước, phải được sửa đổi để chỉ chuyển trạng
thái điểm cuối sang NAK khi xảy ra xung đột bộ đệm giữa thiết bị ngoại vi USB. và phần mềm
ứng dụng, thay vì thực hiện việc đó vào cuối mỗi giao dịch thành công. Bộ nhớ đệm hiện
đang được thiết bị ngoại vi USB sử dụng được xác định bởi bit DTOG liên quan đến hướng
điểm cuối: DTOG_RX (bit 14 của thanh ghi USB_EPnR) cho các điểm cuối hàng loạt bộ đệm đôi
'tiếp nhận' hoặc DTOG_TX (bit 6 của thanh ghi USB_EPnR) dành cho các điểm cuối số lượng
lớn có bộ đệm đôi 'truyền'. Để triển khai sơ đồ điều khiển luồng mới, thiết bị ngoại vi
USB phải biết bộ đệm gói nào hiện đang được phần mềm ứng dụng sử dụng để nhận biết mọi xung
đột. Vì trong thanh ghi USB_EPnR, có hai bit DTOG nhưng chỉ một bit được thiết bị ngoại
vi USB sử dụng để sắp xếp dữ liệu và bộ đệm (do hạn chế một chiều được yêu cầu bởi
tính năng đệm đôi), phần còn lại có thể được phần mềm ứng dụng sử dụng để hiển thị đệm nó
hiện đang sử dụng.
Cờ đệm mới này được gọi là SW_BUF. Trong bảng sau đây, sự tương ứng giữa các bit thanh ghi
USB_EPnR và định nghĩa DTOG/SW_BUF được giải thích, đối với các trường hợp điểm cuối
hàng loạt bộ đệm đôi 'truyền' và 'tiếp nhận'.

Bảng 169. Định nghĩa cờ đệm đôi

Cờ đệm Điểm cuối 'truyền' Điểm cuối 'Tiếp nhận'

DTOG DTOG_TX (USB_EPnRbit 6) DTOG_RX (USB_EPnRbit 14)

SW_BUF USB_EPnR bit 14 USB_EPnR bit 6

Bộ nhớ đệm hiện đang được thiết bị ngoại vi USB sử dụng được xác định bằng cờ đệm DTOG,
trong khi bộ đệm hiện đang được phần mềm ứng dụng sử dụng được xác định bằng cờ đệm SW_BUF.
Mối quan hệ giữa giá trị cờ đệm và bộ đệm gói được sử dụng trong cả hai trường hợp là như
nhau và được liệt kê trong bảng sau.

632/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB)

Bảng 170. Sử dụng bộ đệm bộ nhớ đệm đôi số lượng lớn


Điểm cuối Bộ đệm gói được sử dụng bởi Bộ đệm gói được sử dụng bởi
DTOG SW_BUF
Kiểu thiết bị ngoại vi USB phần mềm ứng dụng

ADDRn_TX_0 / COUNTn_TX_0 ADDRn_TX_1 / COUNTn_TX_1


0 1
Vị trí bảng mô tả bộ đệm. Vị trí bảng mô tả bộ đệm.

ADDRn_TX_1 / COUNTn_TX_1 ADDRn_TX_0 / COUNTn_TX_0


1 0
Vị trí bảng mô tả bộ đệm Vị trí bảng mô tả bộ đệm.
TRONG

ADDRn_TX_0 / COUNTn_TX_0
0 0 không có (1)
Vị trí bảng mô tả bộ đệm.

ADDRn_TX_0 / COUNTn_TX_0
1 1 không có (1)
Vị trí bảng mô tả bộ đệm.

ADDRn_RX_0 / COUNTn_RX_0 ADDRn_RX_1 / COUNTn_RX_1


0 1
Vị trí bảng mô tả bộ đệm. Vị trí bảng mô tả bộ đệm.

ADDRn_RX_1 / COUNTn_RX_1 ADDRn_RX_0 / COUNTn_RX_0


1 0
Vị trí bảng mô tả bộ đệm. Vị trí bảng mô tả bộ đệm.
NGOÀI
ADDRn_RX_0 / COUNTn_RX_0
0 0 không có (1)
Vị trí bảng mô tả bộ đệm.

ADDRn_RX_1 / COUNTn_RX_1
1 1 không có (1)
Vị trí bảng mô tả bộ đệm.

1. Điểm cuối ở trạng thái NAK.

Tính năng đệm đôi cho điểm cuối số lượng lớn được kích hoạt bằng cách:
• Viết trường bit EP_TYPE ở '00 trong thanh ghi USB_EPnR của nó, để xác định điểm cuối là
hàng loạt
• và Đặt bit EP_KIND ở '1 (DBL_BUF), trong cùng một thanh ghi.

Phần mềm ứng dụng chịu trách nhiệm khởi tạo các bit DTOG và SW_BUF theo bộ đệm đầu tiên được
sử dụng; điều này phải được thực hiện khi xem xét thuộc tính đặc biệt chỉ chuyển đổi mà hai
bit này có. Sự kết thúc của giao dịch đầu tiên xảy ra sau khi thiết lập DBL_BUF, sẽ
kích hoạt kiểm soát luồng đặc biệt của các điểm cuối hàng loạt có bộ đệm đôi, được sử dụng
cho tất cả các giao dịch khác được gửi đến điểm cuối này cho đến khi DBL_BUF vẫn được thiết
lập. Vào cuối mỗi giao dịch, bit CTR_RX hoặc CTR_TX của thanh ghi USB_EPnR điểm cuối
có địa chỉ được đặt, tùy thuộc vào hướng được bật. Đồng thời, bit DTOG bị ảnh hưởng trong
thanh ghi USB_EPnR được bật tắt phần cứng khiến việc hoán đổi bộ đệm ngoại vi USB hoàn toàn
độc lập với phần mềm. Không giống như các giao dịch thông thường và giao dịch đầu tiên
sau cài đặt DBL_BUF, cặp bit STAT không bị ảnh hưởng bởi việc chấm dứt giao dịch và giá trị
của nó vẫn là '11 (Hợp lệ). Tuy nhiên, khi nhận được gói mã thông báo của giao dịch mới,
trạng thái điểm cuối thực tế sẽ được che dấu là '10 (NAK) khi phát hiện xung đột bộ đệm giữa
thiết bị ngoại vi USB và phần mềm ứng dụng (tình trạng này được xác định bởi DTOG và SW_BUF
có cùng giá trị, xem Bảng 170). Phần mềm ứng dụng phản hồi thông báo sự kiện CTR bằng cách
xóa cờ ngắt và bắt đầu mọi hoạt động xử lý bắt buộc đối với giao dịch đã hoàn thành. Khi quá
trình sử dụng bộ đệm gói ứng dụng kết thúc, phần mềm sẽ chuyển đổi bit SW_BUF, ghi '1
vào đó, để thông báo cho thiết bị ngoại vi USB về tính khả dụng của bộ đệm đó. Theo cách này,
số lượng giao dịch NAK-ed chỉ bị giới hạn bởi thời gian xây dựng ứng dụng của dữ liệu giao
dịch: nếu thời gian xây dựng ngắn hơn thời gian cần thiết để hoàn thành giao dịch
trên bus USB, sẽ không có truyền lại do luồng việc kiểm soát sẽ diễn ra và tốc độ truyền tải
thực tế sẽ chỉ bị giới hạn bởi PC chủ.

RM0008 Phiên bản 21 633/1136

652
Machine Translated by Google

Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB) RM0008

Phần mềm ứng dụng luôn có thể ghi đè điều khiển luồng đặc biệt được triển khai cho các
điểm cuối hàng loạt có bộ đệm đôi, ghi trạng thái rõ ràng khác với '11 (Hợp lệ) vào cặp bit
STAT của thanh ghi USB_EPnR có liên quan. Trong trường hợp này, thiết bị ngoại vi USB sẽ luôn
sử dụng trạng thái điểm cuối được lập trình, bất kể điều kiện sử dụng bộ đệm.

23.4.4 Truyền đẳng thời

Chuẩn USB hỗ trợ các thiết bị ngoại vi tốc độ tối đa yêu cầu tần suất sản xuất/tiêu thụ
dữ liệu cố định và chính xác, xác định loại lưu lượng này là 'Isochronous'. Các ví
dụ điển hình của dữ liệu này là: mẫu âm thanh, luồng video nén và nói chung bất kỳ loại dữ
liệu được lấy mẫu nào có yêu cầu nghiêm ngặt về độ chính xác của tần số được phân phối.
Khi điểm cuối được xác định là 'đẳng thời gian' trong giai đoạn liệt kê, máy chủ sẽ phân
bổ băng thông cần thiết trong khung và phân phối chính xác một gói IN hoặc OUT cho mỗi
khung, tùy thuộc vào hướng của điểm cuối. Để hạn chế các yêu cầu về băng thông, không thể
truyền lại các giao dịch thất bại đối với lưu lượng Isochronous; điều này dẫn đến thực tế
là một giao dịch đẳng thời gian không có giai đoạn bắt tay và không có gói ACK nào được
mong đợi hoặc gửi sau gói dữ liệu. Vì lý do tương tự, truyền đẳng thời không hỗ trợ giải
trình tự chuyển đổi dữ liệu và luôn sử dụng DATA0 PID để bắt đầu bất kỳ gói dữ liệu nào.

Hành vi đẳng thời cho điểm cuối được chọn bằng cách đặt các bit EP_TYPE ở mức '10 trong thanh
ghi USB_EPnR của nó; vì không có giai đoạn bắt tay nên các giá trị pháp lý duy nhất cho
cặp bit STAT_RX/STAT_TX là '00 (Đã tắt) và '11 (Hợp lệ), mọi giá trị khác sẽ tạo ra kết quả
không tuân thủ tiêu chuẩn USB. Các điểm cuối đẳng thời triển khai đệm đôi để dễ dàng phát
triển phần mềm ứng dụng, sử dụng cả vùng bộ nhớ gói 'truyền' và 'tiếp nhận' để quản lý việc
hoán đổi bộ đệm trên mỗi giao dịch thành công nhằm luôn có bộ đệm hoàn chỉnh cho ứng dụng sử
dụng, trong khi USB ngoại vi lấp đầy cái khác.

Bộ nhớ đệm hiện đang được thiết bị ngoại vi USB sử dụng được xác định bởi bit DTOG liên
quan đến hướng điểm cuối (DTOG_RX cho điểm cuối đẳng thời 'tiếp nhận', DTOG_TX cho
điểm cuối đẳng thời 'truyền', cả hai trong thanh ghi USB_EPnR có liên quan) theo Bảng
171 .

Bảng 171. Cách sử dụng bộ đệm bộ nhớ đẳng thời

Loại điểm bit DTOG Bộ đệm gói được sử dụng Bộ đệm gói được sử dụng

cuối giá trị bằng thiết bị ngoại vi USB bằng phần mềm ứng dụng

ADDRn_TX_0 / COUNTn_TX_0 ADDRn_TX_1 / COUNTn_TX_1


0
vị trí bảng mô tả bộ đệm. vị trí bảng mô tả bộ đệm.
TRONG

ADDRn_TX_1 / COUNTn_TX_1 ADDRn_TX_0 / COUNTn_TX_0


1
vị trí bảng mô tả bộ đệm. vị trí bảng mô tả bộ đệm.

ADDRn_RX_0 / COUNTn_RX_0 ADDRn_RX_1 / COUNTn_RX_1


0
vị trí bảng mô tả bộ đệm. vị trí bảng mô tả bộ đệm.
NGOÀI
ADDRn_RX_1 / COUNTn_RX_1 ADDRn_RX_0 / COUNTn_RX_0
1
vị trí bảng mô tả bộ đệm. vị trí bảng mô tả bộ đệm.

634/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB)

Giống như trường hợp xảy ra với các điểm cuối số lượng lớn có bộ đệm đôi, các thanh ghi
USB_EPnR dùng để triển khai các điểm cuối Isochronous buộc phải được sử dụng làm điểm cuối một
chiều. Nếu bắt buộc phải bật điểm cuối Isochronous cho cả quá trình thu và truyền thì phải sử dụng
hai thanh ghi USB_EPnR.

Phần mềm ứng dụng chịu trách nhiệm khởi tạo bit DTOG theo bộ đệm đầu tiên được sử dụng; điều này
phải được thực hiện khi xem xét thuộc tính đặc biệt chỉ chuyển đổi mà hai bit này có. Vào cuối mỗi
giao dịch, bit CTR_RX hoặc CTR_TX của thanh ghi USB_EPnR điểm cuối có địa chỉ được đặt, tùy thuộc vào
hướng được bật. Đồng thời, bit DTOG bị ảnh hưởng trong thanh ghi USB_EPnR được bật tắt phần cứng
khiến việc hoán đổi bộ đệm hoàn toàn độc lập với phần mềm. Cặp bit STAT không bị ảnh hưởng
khi hoàn thành giao dịch; do không thể kiểm soát luồng đối với quá trình truyền Isochronous do
thiếu giai đoạn bắt tay nên điểm cuối luôn duy trì là '11 (Hợp lệ). Lỗi CRC hoặc tình trạng tràn
bộ đệm xảy ra trong quá trình truyền OUT đẳng thời vẫn được coi là giao dịch chính xác và chúng
luôn kích hoạt sự kiện CTR_RX. Tuy nhiên, lỗi CRC sẽ đặt bit ERR trong thanh ghi USB_ISTR để thông
báo cho phần mềm về khả năng hỏng dữ liệu.

23.4.5 Tạm dừng/Tiếp tục sự kiện

Tiêu chuẩn USB xác định trạng thái ngoại vi đặc biệt, được gọi là TẠM NGỪNG, trong đó dòng
điện trung bình lấy từ bus USB không được lớn hơn 2,5 mA. Yêu cầu này có tầm quan trọng
cơ bản đối với các thiết bị chạy bằng bus, trong khi các thiết bị tự cấp nguồn không bắt buộc
phải tuân thủ hạn chế tiêu thụ điện năng nghiêm ngặt này. Ở chế độ tạm dừng, PC chủ gửi thông báo để
không gửi bất kỳ lưu lượng nào trên bus USB trong hơn 3mS: vì gói SOF phải được gửi sau mỗi mS
trong hoạt động bình thường, thiết bị ngoại vi USB sẽ phát hiện việc thiếu 3 gói SOF liên tiếp như
một tạm dừng yêu cầu từ PC chủ và đặt bit SUSP thành '1 trong thanh ghi USB_ISTR, gây ra gián đoạn
nếu được bật.
Sau khi thiết bị bị treo, hoạt động bình thường của thiết bị có thể được khôi phục bằng
trình tự được gọi là RESUME, trình tự này có thể được khởi động từ PC chủ hoặc trực tiếp từ chính
thiết bị ngoại vi, nhưng nó luôn bị PC chủ chấm dứt. Dù sao đi nữa, thiết bị ngoại vi USB bị treo
phải có khả năng phát hiện trình tự ĐẶT LẠI, phản ứng với sự kiện này như một sự kiện đặt lại USB
thông thường.

Quy trình thực tế được sử dụng để tạm dừng thiết bị ngoại vi USB phụ thuộc vào thiết bị vì tùy
theo thành phần của thiết bị, có thể cần phải thực hiện các hành động khác nhau để giảm tổng mức
tiêu thụ.

Mô tả ngắn gọn về quy trình tạm dừng điển hình được cung cấp bên dưới, tập trung vào các khía cạnh
liên quan đến USB của quy trình phần mềm ứng dụng phản hồi thông báo SUSP của thiết bị ngoại vi USB:

1. Đặt bit FSUSP trong thanh ghi USB_CNTR thành 1. Hành động này sẽ kích hoạt chế độ tạm dừng trong
thiết bị ngoại vi USB. Ngay sau khi chế độ tạm dừng được kích hoạt, việc kiểm tra việc tiếp nhận
SOF sẽ bị vô hiệu hóa để tránh phát sinh thêm bất kỳ gián đoạn SUSP nào trong khi USB bị treo.

2. Loại bỏ hoặc giảm mức tiêu thụ điện tĩnh trong các khối khác với USB
ngoại vi.

3. Đặt bit LP_MODE trong thanh ghi USB_CNTR thành 1 để loại bỏ mức tiêu thụ điện năng tĩnh trong các
bộ thu phát USB analog nhưng vẫn giữ cho chúng có thể phát hiện hoạt động tiếp tục.

4. Tùy chọn tắt bộ tạo dao động bên ngoài và PLL của thiết bị để dừng mọi hoạt động bên trong
thiết bị.

RM0008 Phiên bản 21 635/1136

652
Machine Translated by Google

Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB) RM0008

Khi sự kiện USB xảy ra trong khi thiết bị ở chế độ TẠM NGỪNG, quy trình TIẾP TỤC phải được
gọi để khôi phục đồng hồ danh nghĩa và lấy lại hoạt động bình thường của USB.
Phải đặc biệt cẩn thận để đảm bảo rằng quá trình này không mất quá 10mS khi sự kiện đánh thức là
trình tự đặt lại USB (Xem “Thông số kỹ thuật bus nối tiếp vạn năng” để biết thêm chi tiết).
Khi bắt đầu trình tự tiếp tục hoặc đặt lại, trong khi thiết bị ngoại vi USB bị treo, sẽ xóa bit
LP_MODE trong thanh ghi USB_CNTR một cách không đồng bộ.
Ngay cả khi sự kiện này có thể kích hoạt ngắt WKUP nếu được bật, thì việc sử dụng quy trình phản hồi
ngắt phải được đánh giá cẩn thận vì độ trễ dài do khởi động lại đồng hồ hệ thống; để có độ trễ ngắn
hơn trước khi kích hoạt lại đồng hồ danh nghĩa, bạn nên đặt quy trình tiếp tục ngay sau khi kết thúc
quá trình tạm dừng, để mã của nó được thực thi ngay lập tức ngay khi đồng hồ hệ thống khởi
động lại. Để ngăn chặn sự phóng điện ESD hoặc bất kỳ loại tiếng ồn nào khác khi đánh thức hệ thống
(việc thoát khỏi chế độ tạm dừng là một sự kiện không đồng bộ), một bộ lọc tương tự phù hợp về
trạng thái dòng dữ liệu sẽ được kích hoạt trong khi tạm dừng; chiều rộng bộ lọc là khoảng 70ns.

Sau đây là danh sách các hành động mà quy trình sơ yếu lý lịch nên giải quyết:

1. Tùy chọn bật bộ tạo dao động ngoài và/hoặc thiết bị PLL.

2. Xóa bit FSUSP của thanh ghi USB_CNTR.

3. Nếu sự kiện kích hoạt tiếp tục phải được xác định, các bit RXDP và RXDM trong thanh ghi
USB_FNR có thể được sử dụng theo Bảng 172, bảng này cũng liệt kê hành động phần mềm dự định
trong mọi trường hợp. Nếu được yêu cầu, có thể phát hiện phần cuối của trình tự tiếp tục hoặc
đặt lại theo dõi trạng thái của các bit được đề cập ở trên bằng cách kiểm tra khi chúng đạt đến
cấu hình “10”, biểu thị trạng thái bus Không hoạt động; hơn nữa, khi kết thúc trình tự đặt lại,
bit RESET trong thanh ghi USB_ISTR được đặt thành 1, sẽ phát ra ngắt nếu được bật, việc này sẽ
được xử lý như bình thường.

Bảng 172. Tiếp tục phát hiện sự kiện

Trạng thái [RXDP,RXDM] Sự kiện thức dậy Yêu cầu tiếp tục hành động phần mềm

“00” Đặt lại gốc Không có

“10” Không có (tiếng ồn trên xe buýt) Quay lại chế độ Tạm dừng

“01” Sơ yếu lý lịch gốc Không có

“11” Không được phép (tiếng ồn trên xe buýt) Quay lại chế độ Tạm dừng

Một thiết bị có thể yêu cầu thoát khỏi chế độ tạm dừng để giải quyết các sự kiện cụ thể không liên
quan trực tiếp đến giao thức USB (ví dụ: chuyển động của chuột sẽ đánh thức toàn bộ hệ thống).
Trong trường hợp này, trình tự tiếp tục có thể được bắt đầu bằng cách đặt bit TIẾP TỤC trong
thanh ghi USB_CNTR thành '1 và đặt lại về 0 sau khoảng thời gian từ 1 mS đến 15 mS (khoảng thời gian
này có thể được tính thời gian bằng cách sử dụng các ngắt ESOF, xảy ra với 1mS khoảng thời gian mà
đồng hồ hệ thống đang chạy ở tần số danh định). Khi bit RESUME bị xóa, trình tự tiếp tục sẽ được PC
chủ hoàn thành và phần cuối của nó có thể được theo dõi lại bằng cách sử dụng các bit RXDP và RXDM
trong thanh ghi USB_FNR.

Ghi chú: Dù sao đi nữa, bit RESUME chỉ được sử dụng sau khi thiết bị ngoại vi USB được đặt ở chế độ tạm
dừng, đặt bit FSUSP trong thanh ghi USB_CNTR thành 1.

636/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB)

23,5 thanh ghi USB


Các thanh ghi ngoại vi USB có thể được chia thành các nhóm sau: • Các thanh ghi

chung: Các thanh ghi ngắt và điều khiển

• Thanh ghi điểm cuối: Cấu hình và trạng thái điểm cuối

• Bảng mô tả bộ đệm: Vị trí của bộ nhớ gói được sử dụng để định vị bộ đệm dữ liệu

Tất cả các địa chỉ thanh ghi được biểu thị dưới dạng offset đối với địa chỉ cơ sở của thanh ghi ngoại vi
USB 0x4000 5C00, ngoại trừ các vị trí bảng mô tả bộ đệm, bắt đầu tại địa chỉ được chỉ định bởi thanh ghi
USB_BTABLE. Do hạn chế chung của cầu nối APB1 về khả năng đánh địa chỉ từ, tất cả các địa chỉ thanh
ghi được căn chỉnh theo ranh giới từ 32 bit mặc dù chúng rộng 16 bit. Việc căn chỉnh địa chỉ tương tự
được sử dụng để truy cập các vị trí bộ nhớ đệm gói, được định vị bắt đầu từ 0x4000 6000.

Tham khảo Phần 2.2 trên trang 45 để biết danh sách các chữ viết tắt được sử dụng trong mô tả đăng ký.

Các thanh ghi ngoại vi có thể được truy cập bằng nửa từ (16 bit) hoặc từ (32 bit).

23.5.1 Các thanh ghi chung


Các thanh ghi này ảnh hưởng đến hoạt động chung của thiết bị ngoại vi USB xác định chế độ vận hành, xử lý
ngắt, địa chỉ thiết bị và cấp quyền truy cập vào số khung hiện tại được PC chủ cập nhật.

Thanh ghi điều khiển USB (USB_CNTR)

Độ lệch địa chỉ: 0x40

Đặt lại giá trị: 0x0003

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CTRM PMAOVRM ERRM WKUPM SUSPM THIẾT LẬP LẠI SOFM ESOFM TIẾP TỤC FSUSP LP_MODE PDWN FRES
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15 CTRM: Mặt nạ ngắt truyền chính xác

0: Ngắt truyền đúng (CTR) bị vô hiệu hóa.


1: Đã bật ngắt CTR, yêu cầu ngắt được tạo khi bit tương ứng trong thanh ghi USB_ISTR được
đặt.

Bit 14 PMAOVRM: Mặt nạ ngắt vượt mức/chạy chậm vùng bộ nhớ gói

0: Ngắt PMAOVR bị vô hiệu hóa.


1: Đã bật ngắt PMAOVR, yêu cầu ngắt được tạo khi bit tương ứng trong thanh ghi USB_ISTR
được đặt.

Bit 13 ERRM: Mặt nạ ngắt lỗi

0: Ngắt ERR bị vô hiệu hóa.


1: Đã bật ngắt ERR, yêu cầu ngắt được tạo khi bit tương ứng trong thanh ghi USB_ISTR
được đặt.

Bit 12 WKUPM: Mặt nạ ngắt đánh thức

0: Ngắt WKUP bị vô hiệu hóa.


1: Đã bật ngắt WKUP, yêu cầu ngắt được tạo khi bit tương ứng trong thanh ghi USB_ISTR được
đặt.

RM0008 Phiên bản 21 637/1136

652
Machine Translated by Google

Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB) RM0008

Bit 11 SUSPM: Mặt nạ ngắt chế độ tạm dừng

0: Yêu cầu chế độ tạm dừng (SUSP) Ngắt bị vô hiệu hóa.

1: Đã bật ngắt SUSP, yêu cầu ngắt được tạo khi bit tương ứng trong thanh ghi USB_ISTR được đặt.

Bit 10 RESETM: Mặt nạ ngắt thiết lập lại USB

0: RESET Ngắt bị vô hiệu hóa.

1: RESET Đã bật ngắt, yêu cầu ngắt được tạo khi bit tương ứng trong thanh ghi USB_ISTR được đặt.

Bit 9 SOFM: Bắt đầu mặt nạ ngắt khung

0: Ngắt SOF bị vô hiệu hóa.

1: Đã bật ngắt SOF, yêu cầu ngắt được tạo khi bit tương ứng trong thanh ghi USB_ISTR được đặt.

Bit 8 ESOFM: Dự kiến bắt đầu mặt nạ ngắt khung

0: Ngắt bắt đầu khung dự kiến (ESOF) bị vô hiệu hóa.

1: Đã bật ngắt ESOF, yêu cầu ngắt được tạo khi bit tương ứng trong thanh ghi USB_ISTR được đặt.

Bit 7:5 Dự trữ.

Bit 4 TIẾP TỤC: Tiếp tục yêu cầu

Bộ vi điều khiển có thể đặt bit này để gửi tín hiệu Tiếp tục đến máy chủ. Nó phải được kích hoạt, theo thông số

kỹ thuật của USB, trong thời gian không ít hơn 1 mS và không quá 15 mS, sau đó PC chủ sẵn sàng điều khiển trình

tự tiếp tục cho đến hết.

Bit 3 FSUSP: Buộc tạm dừng

Phần mềm phải đặt bit này khi nhận được ngắt SUSP, ngắt này được phát ra khi thiết bị ngoại vi USB không

nhận được lưu lượng nào trong 3 mS.


0: Không có hiệu lực.

1: Vào chế độ tạm dừng. Đồng hồ và khả năng tiêu tán năng lượng tĩnh trong bộ thu phát analog không bị ảnh

hưởng. Nếu yêu cầu phải tạm dừng mức tiêu thụ điện năng (thiết bị chạy bằng bus), phần mềm ứng dụng sẽ

đặt bit LP_MODE sau FSUSP như được giải thích bên dưới.

Bit 2 LP_MODE: Chế độ năng lượng thấp Chế

độ này được sử dụng khi các hạn chế về nguồn điện ở chế độ treo yêu cầu tránh tất cả sự tiêu tán năng lượng

tĩnh, ngoại trừ chế độ cần thiết để cung cấp điện trở kéo lên bên ngoài. Bạn phải nhập điều kiện này khi ứng

dụng sẵn sàng dừng tất cả đồng hồ hệ thống hoặc giảm tần số của chúng để đáp ứng yêu cầu tiêu thụ điện

năng của điều kiện tạm dừng USB. Hoạt động của USB trong chế độ tạm dừng (sự kiện WKUP) đặt lại bit này một

cách không đồng bộ (nó cũng có thể được đặt lại bằng phần mềm).

0: Không có chế độ năng lượng thấp.

1: Vào chế độ Nguồn điện thấp.

Bit 1 PDWN: Tắt nguồn

Bit này được sử dụng để tắt hoàn toàn tất cả các bộ phận tương tự liên quan đến USB nếu cần phải tắt

hoàn toàn thiết bị ngoại vi USB vì bất kỳ lý do gì. Khi bit này được đặt, thiết bị ngoại vi USB sẽ bị

ngắt kết nối khỏi bộ thu phát và không thể sử dụng được.
0: Thoát khỏi chế độ tắt nguồn.

1: Vào chế độ Tắt nguồn.

Bit 0 FRES: Buộc thiết lập lại USB

0: Xóa thiết lập lại USB.

1: Buộc thiết lập lại thiết bị ngoại vi USB, giống hệt như tín hiệu RESET trên USB. Thiết bị ngoại vi USB

được giữ ở trạng thái RESET cho đến khi phần mềm xóa bit này. Một ngắt “USB-RESET” được tạo ra nếu

được bật.

638/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB)

Thanh ghi trạng thái ngắt USB (USB_ISTR)

Độ lệch địa chỉ: 0x44

Giá trị đặt lại: 0x0000 0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

PMA
CTR ERR WKUP TẠM NGỪNG THIẾT LẬP LẠI SOF ESOF TRỰC TIẾP
EP_ID[3:0]
OVR Kín đáo

r rc_w0 rc_w0 rc_w0 rc_w0 rc_w0 rc_w0 rc_w0 r r r r r

Thanh ghi này chứa trạng thái của tất cả các nguồn ngắt cho phép phần mềm ứng dụng xác định sự
kiện nào gây ra yêu cầu ngắt.

Phần trên của thanh ghi này chứa các bit đơn, mỗi bit đại diện cho một sự kiện cụ thể. Các
bit này được thiết lập bởi phần cứng khi sự kiện liên quan xảy ra; nếu bit tương
ứng trong thanh ghi USB_CNTR được đặt, yêu cầu ngắt chung sẽ được tạo.
Thủ tục ngắt, kiểm tra từng bit, sẽ thực hiện tất cả các hành động cần thiết và cuối cùng nó sẽ
xóa các bit được phục vụ. Nếu bất kỳ mục nào trong số chúng không bị xóa, thì ngắt được coi
là vẫn đang chờ xử lý và đường ngắt sẽ được giữ ở mức cao trở lại. Nếu nhiều bit được đặt đồng
thời thì chỉ có một ngắt duy nhất được tạo ra.

Việc hoàn thành giao dịch điểm cuối có thể được xử lý theo cách khác để giảm độ trễ phản
hồi khi bị gián đoạn. Bit CTR được phần cứng thiết lập ngay khi điểm cuối hoàn thành giao dịch
thành công, tạo ra yêu cầu ngắt chung nếu bit tương ứng trong USB_CNTR được đặt. Điều kiện
ngắt dành riêng cho điểm cuối được kích hoạt độc lập với bit CTRM trong thanh ghi USB_CNTR.
Cả hai điều kiện ngắt vẫn hoạt động cho đến khi phần mềm xóa bit đang chờ xử lý trong thanh ghi
USB_EPnR tương ứng (bit CTR thực sự là bit chỉ đọc). Đối với các ngắt liên quan đến điểm
cuối, phần mềm có thể sử dụng các bit chỉ đọc Hướng giao dịch (DIR) và EP_ID để xác định, điểm
cuối nào đã thực hiện yêu cầu ngắt cuối cùng và được gọi là thói quen dịch vụ ngắt tương
ứng.

Người dùng có thể chọn mức độ ưu tiên tương đối của các sự kiện USB_ISTR đang chờ xử lý đồng
thời bằng cách chỉ định thứ tự phần mềm kiểm tra các bit USB_ISTR trong quy trình dịch vụ ngắt.
Chỉ các bit liên quan đến sự kiện được phục vụ mới bị xóa. Khi kết thúc quá trình phục vụ,
một ngắt khác sẽ được yêu cầu để phục vụ các điều kiện còn lại.

Để tránh xóa giả một số bit, nên xóa chúng bằng lệnh tải trong đó tất cả các bit không
được thay đổi được ghi bằng 1 và tất cả các bit cần xóa được ghi bằng '0 (các bit này chỉ
có thể được xóa bằng phần mềm). Nên tránh các chu kỳ đọc-sửa-ghi vì giữa thao tác đọc và ghi,
một bit khác có thể được thiết lập bởi phần cứng và lần ghi tiếp theo sẽ xóa nó trước khi bộ
vi xử lý có thời gian phục vụ sự kiện.

RM0008 Phiên bản 21 639/1136

652
Machine Translated by Google

Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB) RM0008

Bit 15 CTR: Chuyển đúng

Bit này được phần cứng thiết lập để chỉ ra rằng điểm cuối đã hoàn thành giao dịch thành công; sử dụng
phần mềm bit DIR và EP_ID có thể xác định điểm cuối nào đã yêu cầu ngắt. Bit này là chỉ đọc.

Bit 14 PMAOVR: Vùng nhớ gói bị quá/chạy quá mức

Bit này được đặt nếu bộ vi điều khiển không thể đáp ứng kịp thời yêu cầu bộ nhớ USB. Thiết bị ngoại vi USB
xử lý sự kiện này theo cách sau: Trong quá trình nhận, gói bắt tay ACK không được gửi, trong quá trình
truyền, một lỗi nội dung bit buộc phải xuất hiện trên luồng được truyền; trong cả hai trường hợp, máy
chủ sẽ thử lại giao dịch. Ngắt PMAOVR sẽ không bao giờ xảy ra trong quá trình hoạt động bình thường. Do máy
chủ thử lại giao dịch không thành công nên phần mềm ứng dụng có cơ hội tăng tốc hoạt động của thiết bị
trong quá trình xử lý gián đoạn này để sẵn sàng cho lần thử lại giao dịch tiếp theo; tuy nhiên điều này
không xảy ra trong quá trình chuyển giao đẳng thời (không có giao dịch đẳng thời nào được thử lại) dẫn đến
mất dữ liệu trong trường hợp này. Bit này được đọc/ghi nhưng chỉ có thể ghi '0 và ghi '1 không có hiệu lực.

Bit 13 ERR: Lỗi

Cờ này được đặt bất cứ khi nào xảy ra một trong các lỗi được liệt kê bên dưới:
NANS: Không có TRẢ LỜI. Thời gian chờ phản hồi của máy chủ đã hết.
CRC: Lỗi kiểm tra dự phòng theo chu kỳ. Một trong các CRC nhận được, trong mã thông báo hoặc trong dữ
liệu, bị sai.
BST: Lỗi nhồi bit. Đã phát hiện lỗi nhồi bit ở bất kỳ đâu trong PID, dữ liệu và/hoặc CRC.

FVIO: Vi phạm định dạng khung. Đã nhận được khung không chuẩn (EOP không đúng vị trí, chuỗi mã thông báo
sai, v.v.).
Phần mềm USB thường có thể bỏ qua lỗi vì thiết bị ngoại vi USB và máy chủ PC quản lý việc truyền lại
trong trường hợp có lỗi một cách hoàn toàn minh bạch. Ngắt này có thể hữu ích trong giai đoạn phát
triển phần mềm hoặc để giám sát chất lượng truyền qua bus USB, để cảnh báo các sự cố có thể xảy ra với
người dùng (ví dụ: đầu nối lỏng, môi trường quá ồn, dây dẫn trong cáp USB bị hỏng, v.v.). Bit
này được đọc/ghi nhưng chỉ có thể ghi '0 và ghi '1 không có hiệu lực.

Bit 12 WKUP: Thức dậy

Bit này được phần cứng đặt thành 1 khi trong chế độ tạm dừng, hoạt động được phát hiện sẽ đánh thức
thiết bị ngoại vi USB. Sự kiện này xóa không đồng bộ bit LP_MODE trong thanh ghi CTLR và kích hoạt dòng
USB_WAKEUP, dòng này có thể được sử dụng để thông báo cho phần còn lại của thiết bị (ví dụ: thiết bị đánh
thức) về việc bắt đầu quá trình tiếp tục. Bit này được đọc/ghi nhưng chỉ có thể ghi '0 và ghi '1 không có
hiệu lực.

Bit 11 SUSP: Yêu cầu chế độ tạm dừng

Bit này được thiết lập bởi phần cứng khi không nhận được lưu lượng truy cập trong 3mS, biểu thị
yêu cầu chế độ tạm dừng từ bus USB. Kiểm tra tình trạng tạm dừng được kích hoạt ngay lập tức sau
bất kỳ lần khởi động lại USB nào và nó bị phần cứng vô hiệu hóa khi chế độ tạm dừng hoạt động (FSUSP=1) cho
đến khi kết thúc trình tự tiếp tục lại. Bit này được đọc/ghi nhưng chỉ có thể ghi '0 và ghi '1 không có
hiệu lực.

Bit 10 RESET: Yêu cầu reset USB

Đặt khi thiết bị ngoại vi USB phát hiện tín hiệu USB RESET đang hoạt động ở đầu vào của nó. Thiết bị
ngoại vi USB, để đáp lại RESET, chỉ cần đặt lại máy trạng thái giao thức bên trong của nó, tạo ra một ngắt
nếu bit kích hoạt RESETM trong thanh ghi USB_CNTR được đặt. Việc thu và truyền bị vô hiệu hóa cho
đến khi bit RESET bị xóa. Tất cả các thanh ghi cấu hình không được đặt lại: bộ vi điều khiển phải xóa rõ
ràng các thanh ghi này (điều này nhằm đảm bảo rằng ngắt RESET có thể được phân phối một cách an toàn
và mọi giao dịch ngay sau RESET đều có thể được hoàn thành). Địa chỉ chức năng và các thanh ghi điểm
cuối được đặt lại bằng sự kiện đặt lại USB.

Bit này được đọc/ghi nhưng chỉ có thể ghi '0 và ghi '1 không có hiệu lực.

640/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB)

Bit 9 SOF: Bắt đầu khung

Bit này báo hiệu sự bắt đầu của một khung USB mới và nó được thiết lập khi gói SOF đến qua
bus USB. Quy trình dịch vụ ngắt có thể giám sát các sự kiện SOF để có sự kiện đồng bộ hóa 1
mS với máy chủ USB và đọc thanh ghi USB_FNR một cách an toàn được cập nhật khi nhận gói SOF
(điều này có thể hữu ích cho các ứng dụng đẳng thời gian).
Bit này được đọc/ghi nhưng chỉ có thể ghi '0 và ghi '1 không có hiệu lực.

Bit 8 ESOF: Dự kiến bắt đầu khung

Bit này được thiết lập bởi phần cứng khi một gói SOF được mong đợi nhưng không nhận được.
Máy chủ gửi một gói SOF mỗi mS, nhưng nếu hub không nhận được gói đó đúng cách thì Bộ định
thời treo sẽ phát ra ngắt này. Nếu ba ngắt ESOF liên tiếp được tạo ra (tức là ba gói SOF bị
mất) mà không có bất kỳ lưu lượng nào xảy ra ở giữa thì một ngắt SUSP sẽ được tạo
ra. Bit này được đặt ngay cả khi xảy ra thiếu gói SOF trong khi Bộ hẹn giờ tạm dừng chưa
bị khóa. Bit này được đọc/ghi nhưng chỉ có thể ghi '0 và ghi '1 không có hiệu lực.

Bit 7:5 Dự trữ.

Bit 4 DIR: Hướng giao dịch

Bit này được phần cứng ghi theo hướng giao dịch thành công, tạo ra yêu cầu ngắt.

Nếu bit DIR = 0, bit CTR_TX được đặt trong thanh ghi USB_EPnR liên quan đến điểm cuối ngắt.
Giao dịch bị gián đoạn thuộc loại IN (dữ liệu được truyền từ thiết bị ngoại vi USB đến PC chủ).

Nếu bit DIR=1, bit CTR_RX hoặc cả hai CTR_TX/CTR_RX được đặt trong thanh ghi USB_EPnR
liên quan đến điểm cuối ngắt. Giao dịch bị gián đoạn thuộc loại OUT (dữ liệu được thiết
bị ngoại vi USB nhận từ PC chủ) hoặc hai giao dịch đang chờ xử lý đang chờ xử lý.

Thông tin này có thể được phần mềm ứng dụng sử dụng để truy cập các bit USB_EPnR liên quan
đến giao dịch kích hoạt vì nó thể hiện hướng có ngắt đang chờ xử lý. Bit này là chỉ đọc.

Bit 3:0 EP_ID[3:0]: Mã định danh điểm cuối

Các bit này được phần cứng ghi theo số điểm cuối, tạo ra yêu cầu ngắt. Nếu một số giao dịch
điểm cuối đang chờ xử lý, phần cứng sẽ ghi mã định danh điểm cuối liên quan đến điểm cuối có
mức ưu tiên cao nhất được xác định theo cách sau: Hai bộ điểm cuối được xác định theo thứ tự
ưu tiên: Các điểm cuối hàng loạt có bộ đệm đôi và đồng bộ được xem xét trước tiên và sau
đó các điểm cuối khác được kiểm tra. Nếu có nhiều hơn một điểm cuối trong cùng một bộ yêu cầu
ngắt, các bit EP_ID trong thanh ghi USB_ISTR sẽ được chỉ định theo thanh ghi điểm cuối có
yêu cầu thấp nhất, EP0R có mức ưu tiên cao nhất theo sau là EP1R, v.v. Phần mềm ứng dụng có thể
chỉ định một thanh ghi cho từng điểm cuối theo sơ đồ ưu tiên này để sắp xếp các yêu cầu điểm
cuối đồng thời theo cách phù hợp. Các bit này chỉ được đọc.

RM0008 Phiên bản 21 641/1136

652
Machine Translated by Google

Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB) RM0008

Thanh ghi số khung USB (USB_FNR)

Độ lệch địa chỉ: 0x48

Giá trị đặt lại: 0x0XXX trong đó X không xác định

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0
RXDP RXDM LCK LSOF[1:0] FN[10:0]

rr r r rrrrrrrrr r

Bit 15 RXDP: Nhận dữ liệu + trạng thái đường truyền

Bit này có thể được sử dụng để quan sát trạng thái của dữ liệu nhận được cộng với dòng dữ liệu cổng ngược

dòng. Nó có thể được sử dụng trong quá trình kết thúc quá trình tạm dừng để giúp xác định sự kiện đánh thức.

Bit 14 RXDM: Nhận dữ liệu - trạng thái đường truyền

Bit này có thể được sử dụng để quan sát trạng thái của dữ liệu nhận được trừ dòng dữ liệu cổng ngược dòng.

Nó có thể được sử dụng trong quá trình kết thúc quá trình tạm dừng để giúp xác định sự kiện đánh thức.

Bit 13 LCK: Đã khóa

Bit này được thiết lập bởi phần cứng khi nhận được ít nhất hai gói SOF liên tiếp sau khi kết thúc điều
kiện đặt lại USB hoặc sau khi kết thúc chuỗi tiếp tục USB. Sau khi bị khóa, bộ hẹn giờ khung vẫn ở

trạng thái này cho đến khi xảy ra sự kiện đặt lại USB hoặc tạm dừng USB.

Bit 12:11 LSOF[1:0]: SOF bị mất

Các bit này được phần cứng ghi khi ngắt ESOF được tạo ra, đếm số gói SOF liên tiếp bị mất. Khi nhận được
gói SOF, các bit này sẽ bị xóa.

Bit 10:0 FN[10:0]: Số khung

Trường bit này chứa số khung 11 bit có trong gói SOF nhận được cuối cùng.

Số khung được tăng lên cho mỗi khung được máy chủ gửi và nó rất hữu ích cho việc truyền Isochronous.

Trường bit này được cập nhật khi tạo ra ngắt SOF.

642/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB)

Địa chỉ thiết bị USB (USB_DADDR)


Độ lệch địa chỉ: 0x4C

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

EF ADD6 ADD5 ADD4 ADD3 ADD2 ADD1 ADD0


Kín đáo
rw rw rw rw rw rw rw rw

Bit 15:8 Dành riêng

Bit 7 EF: Kích hoạt chức năng

Bit này được phần mềm thiết lập để kích hoạt thiết bị USB. Địa chỉ của thiết bị này được chứa
trong các bit ADD[6:0] sau đây. Nếu bit này ở mức '0 thì không có giao dịch nào được xử lý,
bất kể cài đặt của thanh ghi USB_EPnR.

Bit 6:0 ADD[6:0]: Địa chỉ thiết bị

Các bit này chứa địa chỉ chức năng USB do PC chủ chỉ định trong quá trình liệt kê. Cả
trường này và trường Địa chỉ điểm cuối (EA) trong thanh ghi USB_EPnR được liên kết phải khớp với
thông tin có trong mã thông báo USB để xử lý giao dịch đến điểm cuối được yêu cầu.

Địa chỉ bảng đệm (USB_BTABLE)


Độ lệch địa chỉ: 0x50

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

BTABLE[15:3]
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15:3 BTABLE[15:3]: Bảng đệm

Các bit này chứa địa chỉ bắt đầu của bảng phân bổ bộ đệm bên trong bộ nhớ gói chuyên dụng. Bảng này mô
tả từng vị trí và kích thước bộ đệm điểm cuối và nó phải được căn chỉnh theo ranh giới 8 byte (3 bit
có trọng số nhỏ nhất luôn là '0). Khi bắt đầu mỗi giao dịch được gửi đến thiết bị này, thiết bị
ngoại vi USP sẽ đọc phần tử của bảng này liên quan đến điểm cuối được đánh địa chỉ, để biết vị
trí bắt đầu bộ đệm và kích thước bộ đệm (tham khảo Cấu trúc và cách sử dụng bộ đệm gói) .

Bit 2:0 Dự trữ, bị phần cứng ép về 0.

RM0008 Phiên bản 21 643/1136

652
Machine Translated by Google

Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB) RM0008

23.5.2 Sổ đăng ký dành riêng cho điểm cuối

Số lượng các thanh ghi này thay đổi tùy theo số lượng điểm cuối mà thiết bị ngoại vi USB được thiết kế
để xử lý. Thiết bị ngoại vi USB hỗ trợ tới 8 điểm cuối hai chiều. Mỗi thiết bị USB phải hỗ trợ
điểm cuối điều khiển có địa chỉ (bit EA) phải được đặt thành 0. Thiết bị ngoại vi USB hoạt động theo cách
không xác định nếu nhiều điểm cuối được bật có cùng giá trị số điểm cuối. Đối với mỗi điểm cuối, một
thanh ghi USB_EPnR có sẵn để lưu trữ thông tin cụ thể về điểm cuối.

Thanh ghi n điểm cuối USB (USB_EPnR), n=[0..7]

Độ lệch địa chỉ: 0x00 đến 0x1C

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CTR_ DTOG_ EP EP_ CTR_ DTOG_


THIẾT LẬP STAT_RX[1:0] STAT_TX[1:0] EA[3:0]
RX RX LOẠI[1:0] LOẠI TX TX

rc_w0 t t t r rw rw rw rc_w0 t t t rw rw rw rw

Chúng cũng được đặt lại khi nhận được thiết lập lại USB từ bus USB hoặc bị ép buộc thông qua bit FRES
trong thanh ghi CTLR, ngoại trừ các bit CTR_RX và CTR_TX, được giữ không thay đổi để tránh thiếu
thông báo gói chính xác ngay sau sự kiện đặt lại USB. Mỗi điểm cuối có thanh ghi USB_EPnR trong đó n là
mã định danh điểm cuối.

Nên tránh các chu kỳ đọc-sửa-ghi trên các thanh ghi này vì giữa thao tác đọc và ghi, một số bit có thể được
thiết lập bởi phần cứng và lần ghi tiếp theo sẽ sửa đổi chúng trước khi CPU có thời gian phát hiện sự
thay đổi. Với mục đích này, tất cả các bit bị ảnh hưởng bởi vấn đề này đều có giá trị 'bất biến' phải
được sử dụng bất cứ khi nào không cần sửa đổi chúng. Bạn nên sửa đổi các thanh ghi này bằng lệnh
tải trong đó tất cả các bit, chỉ có thể được sửa đổi bằng phần cứng, được ghi với giá trị 'bất
biến' của chúng.

644/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB)

Bit 15 CTR_RX: Truyền đúng để nhận

Bit này được thiết lập bởi phần cứng khi giao dịch OUT/SETUP được hoàn thành thành công trên điểm cuối
này; phần mềm chỉ có thể xóa bit này. Nếu bit CTRM trong thanh ghi USB_CNTR được đặt tương ứng, điều kiện
ngắt chung sẽ được tạo cùng với điều kiện ngắt liên quan đến điểm cuối, điều kiện này luôn được kích
hoạt. Loại giao dịch xảy ra, OUT hoặc SETUP, có thể được xác định từ bit SETUP được mô tả bên dưới.

Giao dịch kết thúc bằng bắt tay NAK hoặc STALL không đặt bit này vì không có dữ liệu nào thực sự được

truyền, như trong trường hợp lỗi giao thức hoặc chuyển đổi dữ liệu không khớp.

Bit này được đọc/ghi nhưng chỉ có thể ghi '0, ghi 1 không có hiệu lực.

Bit 14 DTOG_RX: Chuyển đổi dữ liệu, để truyền nhận

Nếu điểm cuối không phải là Isochronous, bit này chứa giá trị dự kiến của bit chuyển đổi dữ liệu (0=DATA0,
1=DATA1) cho gói dữ liệu tiếp theo được nhận. Phần cứng chuyển đổi bit này khi bắt tay ACK được gửi
đến máy chủ USB, sau khi nhận gói dữ liệu có giá trị PID dữ liệu phù hợp; nếu điểm cuối được xác định là
điểm điều khiển thì phần cứng sẽ xóa bit này khi nhận được PID CÀI ĐẶT được gửi đến điểm cuối này.

Nếu điểm cuối đang sử dụng tính năng đệm đôi thì bit này cũng được sử dụng để hỗ trợ hoán đổi bộ đệm gói
(Tham khảo Phần 23.4.3).
Nếu điểm cuối là Isochronous, bit này chỉ được sử dụng để hỗ trợ hoán đổi bộ đệm gói vì không sử dụng
chuyển đổi dữ liệu cho loại điểm cuối này và chỉ gói DATA0 được truyền đi (Tham khảo Phần 23.4.4 ). Phần
cứng chuyển đổi bit này ngay sau khi kết thúc quá trình nhận gói dữ liệu, vì không có sự bắt tay
nào được sử dụng để truyền đẳng thời gian.
Bit này cũng có thể được phần mềm bật tắt để khởi tạo giá trị của nó (bắt buộc khi điểm cuối không
phải là điểm kiểm soát) hoặc để buộc sử dụng bộ đệm gói/chuyển đổi dữ liệu cụ thể. Khi phần mềm ứng dụng
ghi '0, giá trị của DTOG_RX vẫn không thay đổi, trong khi việc ghi '1 sẽ làm cho giá trị bit chuyển đổi.
Bit này được đọc/ghi nhưng nó chỉ có thể được chuyển đổi bằng cách ghi 1.

Bit 13:12 STAT_RX [1:0]: Bit trạng thái, để truyền nhận

Các bit này chứa thông tin về trạng thái điểm cuối, được liệt kê trong Bảng 173.
Các bit này có thể được chuyển đổi bằng phần mềm để khởi tạo giá trị của chúng. Khi phần mềm ứng dụng ghi
'0, giá trị vẫn không thay đổi, trong khi ghi '1 sẽ làm cho giá trị bit chuyển đổi.
Phần cứng đặt các bit STAT_RX thành NAK khi xảy ra quá trình truyền chính xác (CTR_RX=1) tương ứng với
giao dịch OUT hoặc SETUP (chỉ điều khiển) được gửi đến điểm cuối này, do đó phần mềm có thời gian để xử lý
dữ liệu nhận được trước khi xác nhận một dữ liệu mới. giao dịch

Điểm cuối số lượng lớn bộ đệm đôi thực hiện kiểm soát luồng giao dịch đặc biệt, kiểm soát trạng thái dựa
trên điều kiện sẵn có của bộ đệm (Tham khảo Phần 23.4.3).
Nếu điểm cuối được xác định là Isochronous thì trạng thái của nó chỉ có thể là “HỢP LỆ” hoặc “BỊ TẮT”, do
đó phần cứng không thể thay đổi trạng thái của điểm cuối sau khi giao dịch thành công. Nếu phần mềm đặt các
bit STAT_RX thành 'STALL' hoặc 'NAK' cho điểm cuối đẳng thời, thì hoạt động của thiết bị ngoại vi USB sẽ
không được xác định. Các bit này được đọc/ghi nhưng chúng chỉ có thể được chuyển đổi bằng cách viết
'1.

Bit 11 SETUP: Giao dịch thiết lập đã hoàn tất

Bit này ở chế độ chỉ đọc và được thiết lập bởi phần cứng khi giao dịch hoàn thành cuối cùng là THIẾT LẬP.
Bit này chỉ thay đổi giá trị của nó đối với các điểm cuối điều khiển. Nó phải được kiểm tra, trong
trường hợp giao dịch nhận thành công (sự kiện CTR_RX), để xác định loại giao dịch đã xảy ra. Để
bảo vệ quy trình phục vụ ngắt khỏi những thay đổi trong các bit SETUP do các mã thông báo đến tiếp theo,
bit này được giữ cố định trong khi bit CTR_RX ở mức 1; trạng thái của nó thay đổi khi CTR_RX ở mức 0.
Bit này ở chế độ chỉ đọc.

RM0008 Phiên bản 21 645/1136

652
Machine Translated by Google

Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB) RM0008

Bit 10:9 EP_TYPE[1:0]: Loại điểm cuối

Các bit này định cấu hình hoạt động của điểm cuối này như được mô tả trong Bảng 174. Điểm cuối 0 phải
luôn là điểm cuối điều khiển và mỗi chức năng USB phải có ít nhất một điểm cuối điều khiển có địa chỉ 0,
nhưng có thể có các điểm cuối điều khiển khác nếu được yêu cầu. Chỉ các điểm cuối kiểm soát mới xử lý
các giao dịch THIẾT LẬP, các giao dịch này bị các loại điểm cuối khác bỏ qua. Các giao dịch SETUP
không thể được trả lời bằng NAK hoặc STALL. Nếu điểm cuối điều khiển được xác định là NAK, thiết bị ngoại
vi USB sẽ không trả lời, mô phỏng lỗi nhận, theo hướng nhận khi nhận được giao dịch SETUP. Nếu điểm
cuối điều khiển được xác định là STALL theo hướng nhận thì gói SETUP sẽ được chấp nhận, truyền dữ liệu và
đưa ra ngắt CTR. Việc tiếp nhận các giao dịch OUT được xử lý theo cách thông thường, ngay cả khi điểm cuối
là điểm kiểm soát.

Các điểm cuối hàng loạt và điểm ngắt có hành vi rất giống nhau và chúng chỉ khác nhau ở tính năng đặc
biệt có sẵn khi sử dụng bit cấu hình EP_KIND.
Việc sử dụng các điểm cuối đẳng thời được giải thích trong Phần 23.4.4

Bit 8 EP_KIND: Loại điểm cuối

Ý nghĩa của bit này phụ thuộc vào loại điểm cuối được cấu hình bởi các bit EP_TYPE.
Bảng 175 tóm tắt những ý nghĩa khác nhau.

DBL_BUF: Bit này được phần mềm thiết lập để kích hoạt tính năng đệm đôi cho điểm cuối số lượng lớn này.
Việc sử dụng các điểm cuối số lượng lớn có bộ đệm đôi được giải thích trong Phần 23.4.3.
STATUS_OUT: Bit này được phần mềm thiết lập để chỉ ra rằng một giao dịch không có trạng thái được
mong đợi: trong trường hợp này tất cả các giao dịch OUT chứa nhiều hơn 0 byte dữ liệu sẽ được trả
lời 'STALL' thay vì 'ACK'. Bit này có thể được sử dụng để cải thiện tính mạnh mẽ của ứng dụng đối với các
lỗi giao thức trong quá trình truyền điều khiển và việc sử dụng nó chỉ dành cho các điểm cuối điều khiển.
Khi STATUS_OUT được đặt lại, các giao dịch OUT có thể có bất kỳ số byte nào theo yêu cầu.

Bit 7 CTR_TX: Truyền đúng để truyền

Bit này được thiết lập bởi phần cứng khi giao dịch IN được hoàn thành thành công trên điểm cuối này;
phần mềm chỉ có thể xóa bit này. Nếu bit CTRM trong thanh ghi USB_CNTR được đặt tương ứng, điều kiện
ngắt chung sẽ được tạo cùng với điều kiện ngắt liên quan đến điểm cuối, điều kiện này luôn được kích hoạt.

Giao dịch kết thúc bằng bắt tay NAK hoặc STALL không đặt bit này vì không có dữ liệu nào thực sự được

truyền, như trong trường hợp lỗi giao thức hoặc chuyển đổi dữ liệu không khớp.

Bit này được đọc/ghi nhưng chỉ có thể ghi '0.

Bit 6 DTOG_TX: Chuyển đổi dữ liệu, để truyền tải

Nếu điểm cuối không đẳng thời, bit này chứa giá trị cần thiết của bit chuyển đổi dữ liệu (0=DATA0, 1=DATA1)
để truyền gói dữ liệu tiếp theo. Phần cứng chuyển đổi bit này khi nhận được bắt tay ACK từ máy chủ USB,
sau khi truyền gói dữ liệu. Nếu điểm cuối được xác định là điểm điều khiển thì phần cứng sẽ đặt
bit này thành 1 khi nhận được PID CÀI ĐẶT được gửi đến điểm cuối này.

Nếu điểm cuối đang sử dụng tính năng bộ đệm đôi thì bit này cũng được sử dụng để hỗ trợ hoán đổi bộ đệm
gói (Tham khảo Phần 23.4.3)
Nếu điểm cuối là Isochronous, bit này được sử dụng để hỗ trợ hoán đổi bộ đệm gói vì không sử dụng chuyển
đổi dữ liệu cho loại điểm cuối này và chỉ gói DATA0 được truyền đi (Tham khảo Phần 23.4.4). Phần cứng chuyển
đổi bit này ngay sau khi kết thúc quá trình truyền gói dữ liệu, vì không có sự bắt tay nào được sử dụng
cho quá trình truyền Isochronous.

Bit này cũng có thể được phần mềm bật tắt để khởi tạo giá trị của nó (bắt buộc khi điểm cuối không
phải là điểm kiểm soát) hoặc để buộc sử dụng bộ đệm gói/chuyển đổi dữ liệu cụ thể. Khi phần mềm ứng dụng
ghi '0, giá trị của DTOG_TX không thay đổi, trong khi việc ghi '1 làm cho giá trị bit chuyển đổi. Bit này
được đọc/ghi nhưng nó chỉ có thể được chuyển đổi bằng cách ghi 1.

646/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB)

Bit 5:4 STAT_TX [1:0]: Bit trạng thái, để truyền tải

Các bit này chứa thông tin về trạng thái điểm cuối, được liệt kê trong Bảng 176. Các bit này
có thể được phần mềm bật tắt để khởi tạo giá trị của chúng. Khi phần mềm ứng dụng ghi '0, giá
trị vẫn không thay đổi, trong khi ghi '1 sẽ làm cho giá trị bit chuyển đổi. Phần cứng đặt các
bit STAT_TX thành NAK, khi quá trình truyền chính xác xảy ra (CTR_TX=1) tương ứng với giao
dịch IN hoặc SETUP (chỉ điều khiển) được gửi đến điểm cuối này. Sau đó nó đợi phần mềm chuẩn
bị bộ dữ liệu tiếp theo để truyền đi.
Điểm cuối số lượng lớn bộ đệm đôi thực hiện kiểm soát luồng giao dịch đặc biệt, kiểm soát
trạng thái dựa trên điều kiện sẵn có của bộ đệm (Tham khảo Phần 23.4.3).
Nếu điểm cuối được xác định là Isochronous thì trạng thái của nó chỉ có thể là “HỢP LỆ” hoặc “BỊ TUYỆT VỜI”.

Do đó, phần cứng không thể thay đổi trạng thái của điểm cuối sau khi giao dịch thành công.
Nếu phần mềm đặt các bit STAT_TX thành 'STALL' hoặc 'NAK' cho điểm cuối đẳng thời, thì hoạt động
của thiết bị ngoại vi USB sẽ không được xác định. Các bit này được đọc/ghi nhưng chúng chỉ có thể
được chuyển đổi bằng cách viết '1.

Bit 3:0 EA[3:0]: Địa chỉ điểm cuối

Phần mềm phải ghi vào trường này địa chỉ 4 bit được sử dụng để xác định các giao dịch hướng
đến điểm cuối này. Một giá trị phải được ghi trước khi kích hoạt điểm cuối tương ứng.

Bảng 173. Mã hóa trạng thái tiếp nhận

STAT_RX[1:0] Nghĩa

00 TẮT: tất cả các yêu cầu tiếp nhận gửi đến điểm cuối này đều bị bỏ qua.

STALL: điểm cuối bị đình trệ và tất cả các yêu cầu tiếp nhận đều dẫn đến bắt
01
tay STALL.

10 NAK: điểm cuối không có thông tin và tất cả các yêu cầu tiếp nhận đều dẫn đến bắt tay NAK.

11 HỢP LỆ: điểm cuối này được kích hoạt để tiếp nhận.

Bảng 174. Mã hóa kiểu điểm cuối

EP_TYPE[1:0] Nghĩa

00 số lượng lớn

01 ĐIỀU KHIỂN

10 ISO

11 NGẮT

Bảng 175. Ý nghĩa loại điểm cuối

EP_TYPE[1:0] EP_KIND Ý nghĩa

00 số lượng lớn
DBL_BUF

01 ĐIỀU KHIỂN STATUS_OUT

10 ISO Không được sử dụng

11 NGẮT Không được sử dụng

RM0008 Phiên bản 21 647/1136

652
Machine Translated by Google

Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB) RM0008

Bảng 176. Mã hóa trạng thái truyền

STAT_TX[1:0] Nghĩa

00 TẮT: tất cả các yêu cầu truyền gửi tới điểm cuối này đều bị bỏ qua.

STALL: điểm cuối bị đình trệ và tất cả các yêu cầu truyền tải đều dẫn đến bắt tay
01
STALL.

NAK: điểm cuối không có thông tin và tất cả các yêu cầu truyền dẫn đều dẫn đến
10
bắt tay NAK.

11 HỢP LỆ: điểm cuối này được kích hoạt để truyền.

23.5.3 Bảng mô tả bộ đệm

Mặc dù bảng mô tả bộ đệm nằm bên trong bộ nhớ đệm gói, nhưng các mục nhập của nó có thể
được coi là các thanh ghi bổ sung được sử dụng để định cấu hình vị trí và kích thước
của bộ đệm gói được sử dụng để trao đổi dữ liệu giữa ô macro USB và STM32F10xxx.
Do giới hạn chung của cầu APB về khả năng định địa chỉ từ, tất cả các vị trí bộ nhớ
gói đều được APB truy cập bằng cách sử dụng các địa chỉ được căn chỉnh 32 bit, thay vì
các địa chỉ vị trí bộ nhớ thực tế được thiết bị ngoại vi USB sử dụng cho các vị trí bảng
mô tả bộ đệm và thanh ghi USB_BTABLE.

Trong các trang tiếp theo, hai địa chỉ vị trí được báo cáo: một địa chỉ được phần
mềm ứng dụng sử dụng khi truy cập bộ nhớ gói và địa chỉ cục bộ liên quan đến truy cập Thiết
bị ngoại vi USB. Để có được giá trị địa chỉ bộ nhớ STM32F10xxx chính xác được sử dụng trong
phần mềm ứng dụng khi truy cập bộ nhớ gói, địa chỉ vị trí bộ nhớ thực tế phải được nhân
với hai. Vị trí bộ nhớ gói đầu tiên nằm ở 0x4000 6000. Mục nhập bảng mô tả bộ đệm
được liên kết với các thanh ghi USB_EPnR được mô tả bên dưới.

Bạn có thể tìm thấy giải thích kỹ lưỡng về bộ đệm gói và cách sử dụng bảng mô tả bộ đệm trong
Cấu trúc và cách sử dụng bộ đệm gói.

Địa chỉ bộ đệm truyền n (USB_ADDRn_TX)

Bù địa chỉ: [USB_BTABLE] + n*16

Địa chỉ cục bộ USB: [USB_BTABLE] + n*8

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

-
ADDRn_TX[15:1]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw -

Bit 15:1 ADDRn_TX[15:1]: Địa chỉ bộ đệm truyền

Các bit này trỏ đến địa chỉ bắt đầu của bộ đệm gói chứa dữ liệu sẽ được truyền bởi điểm cuối
được liên kết với thanh ghi USB_EPnR tại mã thông báo IN tiếp theo được gửi tới nó.

Bit 0 Phải luôn được viết là '0 vì bộ nhớ gói có phạm vi toàn từ và tất cả các bộ đệm gói phải được
căn chỉnh từ.

648/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB)

Số byte truyền n (USB_COUNTn_TX)

Độ lệch địa chỉ: [USB_BTABLE] + n*16 + 4

Địa chỉ cục bộ USB: [USB_BTABLE] + n*8 + 2

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

COUNTn_TX[9:0]
Kín đáo
rw rw rw rw rw rw rw rw rw rw

Bit 15:10 Các bit này không được sử dụng do kích thước gói bị giới hạn bởi thông số kỹ thuật của USB ở mức 1023 byte. Của họ
giá trị không được thiết bị ngoại vi USB xem xét.

Bit 9:0 COUNTn_TX[9:0]: Số byte truyền

Các bit này chứa số byte được truyền bởi điểm cuối được liên kết với thanh ghi USB_EPnR tại mã thông báo IN
tiếp theo được gửi tới nó.

Ghi chú: Điểm cuối IN đệm đôi và Isochronous có hai thanh ghi USB_COUNTn_TX: được đặt tên là
USB_COUNTn_TX_1 và USB_COUNTn_TX_0 với nội dung sau.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

COUNTn_TX_1[9:0]
Kín đáo
rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

COUNTn_TX_0[9:0]
Kín đáo
rw rw rw rw rw rw rw rw rw rw

Địa chỉ bộ đệm tiếp nhận n (USB_ADDRn_RX)

Bù địa chỉ: [USB_BTABLE] + n*16 + 8

Địa chỉ cục bộ USB: [USB_BTABLE] + n*8 + 4

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

-
ADDRn_RX[15:1]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw -

Bit 15:1 ADDRn_RX[15:1]: Địa chỉ bộ đệm tiếp nhận

Các bit này trỏ đến địa chỉ bắt đầu của bộ đệm gói, địa chỉ này sẽ chứa dữ liệu mà điểm cuối nhận
được liên kết với thanh ghi USB_EPnR ở mã thông báo OUT/SETUP tiếp theo được gửi đến nó.

Bit 0 Bit này phải luôn được viết là '0 vì bộ nhớ gói có phạm vi toàn từ và tất cả các bộ đệm gói
phải căn chỉnh theo từ.

RM0008 Phiên bản 21 649/1136

652
Machine Translated by Google

Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB) RM0008

Số byte tiếp nhận n (USB_COUNTn_RX)

Bù địa chỉ: [USB_BTABLE] + n*16 + 12

Địa chỉ cục bộ USB: [USB_BTABLE] + n*8 + 6

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

KÍCH THƯỚC NUM_BLOCK[4:0] COUNTn_RX[9:0]

rw rw rw rw rw rw r r r r r r r r r r

Vị trí bảng này được sử dụng để lưu trữ hai giá trị khác nhau, cả hai đều được yêu
cầu trong quá trình nhận gói. Các bit quan trọng nhất chứa định nghĩa về kích thước bộ đệm
được phân bổ, để cho phép phát hiện tràn bộ đệm, trong khi phần ít quan trọng nhất của vị trí
này được thiết bị ngoại vi USB ghi lại vào cuối quá trình tiếp nhận để cung cấp số byte nhận
được thực tế. Do những hạn chế về số lượng bit khả dụng, kích thước bộ đệm được biểu thị
bằng số khối bộ nhớ được phân bổ, trong đó kích thước khối có thể được chọn để lựa
chọn sự cân bằng giữa độ chi tiết/bộ đệm nhỏ và độ chi tiết thô/lớn- đệm. Kích thước
của bộ đệm được phân bổ là một phần của bộ mô tả điểm cuối và nó thường được xác định
trong quá trình liệt kê theo giá trị tham số maxPacketSize của nó (Xem “Thông số kỹ thuật
bus nối tiếp vạn năng”).

Bit 15 BL_SIZE: Kích thước khối

Bit này chọn kích thước của khối bộ nhớ được sử dụng để xác định vùng đệm được phân bổ.

– Nếu BL_SIZE=0, khối bộ nhớ lớn 2 byte, đây là khối tối thiểu được phép trong một
bộ nhớ toàn từ. Với kích thước khối này, kích thước bộ đệm được phân bổ nằm trong khoảng từ 2 đến 62 byte.

– Nếu BL_SIZE=1, khối bộ nhớ lớn 32 byte , cho phép đạt mức tối đa
độ dài gói được xác định bởi thông số kỹ thuật USB. Với kích thước khối này, kích thước bộ đệm được phân

bổ nằm trong khoảng từ 32 đến 1024 byte, đây là kích thước gói dài nhất được các thông số kỹ thuật tiêu
chuẩn USB cho phép.

Bit 14:10 NUM_BLOCK[4:0]: Số khối

Các bit này xác định số lượng khối bộ nhớ được phân bổ cho bộ đệm gói này. Dung lượng bộ nhớ
được phân bổ thực tế phụ thuộc vào giá trị BL_SIZE như minh họa trong Bảng 177.

Bit 9:0 COUNTn_RX[9:0]: Số byte tiếp nhận

Các bit này chứa số byte mà điểm cuối nhận được được liên kết với thanh ghi USB_EPnR trong
giao dịch OUT/SETUP cuối cùng được gửi tới nó.

Ghi chú: Điểm cuối IN đệm đôi và Isochronous có hai thanh ghi USB_COUNTn_TX: được đặt tên là
USB_COUNTn_TX_1 và USB_COUNTn_TX_0 với nội dung sau.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

KÍCH THƯỚC
NUM_BLOCK_1[4:0] COUNTn_RX_1[9:0]
_1

rw rw rw rw rw rw r r r r r r r r r r

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

KÍCH THƯỚC
NUM_BLOCK_0[4:0] COUNTn_RX_0[9:0]
_0

rw rw rw rw rw rw r r r r r r r r r r

650/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB)

Bảng 177. Định nghĩa bộ nhớ đệm được cấp phát

Giá trị của Bộ nhớ được phân bổ Bộ nhớ được phân bổ


NUM_BLOCK[4:0] khi BL_SIZE=0 khi BL_SIZE=1

0 ('00000) Không cho phép 32 byte

1 ('00001) 2 byte 64 byte

2 ('00010) 4 byte 96 byte

3 ('00011) 6 byte 128 byte

... ... ...

15 ('01111) 30 byte 512 byte

16 ('10000) 32 byte không áp dụng

17 ('10001) 34 byte không áp dụng

18 ('10010) 36 byte không áp dụng

... ... ...

30 ('11110) 60 byte không áp dụng

31 ('11111) 62 byte không áp dụng

23.5.4 Sơ đồ thanh ghi USB

Bảng bên dưới cung cấp bản đồ thanh ghi USB và các giá trị đặt lại.

Bảng 178. Bản đồ thanh ghi USB và giá trị đặt lại

1
5
ố8
s

7
6

0
3
9

2
4
11
91
81
71
61
51
41
31

21

01

Đăng ký bù đắp
13
03
92
82
72
62
52
42
32
22
12
02

STAT_ EP STAT_
USB_EP0R RX KIỂU TX EA[3:0]
ÀĐ
C

XT_RTC

0x00 Kín đáo


XR_RTC

DNIK_PE
IẶ

[1:0] [1:0]
XT_GOTD

[1:0]
XR_GOTD

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

STAT_ EP STAT_
USB_EP1R RX KIỂU TX EA[3:0]
ÀĐ
C

XT_RTC

0x04 Kín đáo


XR_RTC

DNIK_PE
IẶ

XT_GOTD

[1:0] [1:0] [1:0]


XR_GOTD

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

STAT_ EP STAT_
USB_EP2R RX KIỂU TX EA[3:0]
ÀĐ
C

XT_RTC

0x08 Kín đáo


XR_RTC

DNIK_PE
IẶ

[1:0] [1:0]
XT_GOTD

[1:0]
XR_GOTD

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

STAT_ EP STAT_
USB_EP3R RX KIỂU TX EA[3:0]
ÀĐ
C

XT_RTC

0x0C Kín đáo


XR_RTC

DNIK_PE
IẶ

[1:0] [1:0]
XT_GOTD

[1:0]
XR_GOTD

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

RM0008 Phiên bản 21 651/1136

652
Machine Translated by Google

Giao diện thiết bị tốc độ đầy đủ bus nối tiếp đa năng (USB) RM0008

Bảng 178. Bản đồ thanh ghi USB và giá trị đặt lại (tiếp theo)

1
5
ố8
s

7
6

0
3
Đăng ký bù đắp

119

2
4
413
2

0
3
2
1
0
9
8
7
6
5

STAT_ EP STAT_
USB_EP4R RX LOẠI TX EA[3:0]

ÀĐ
C
0x10 Kín đáo

XT_RTC
IẶ
XR_RTC
[1:0]

DNIK_PE
[1:0] [1:0]

XT_GOTD
XR_GOTD
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

STAT_ EP STAT_
USB_EP5R RX LOẠI TX EA[3:0]

ÀĐ
C
0x14 Kín đáo

XT_RTC
IẶ
XR_RTC
[1:0]

DNIK_PE
[1:0] [1:0]

XT_GOTD
XR_GOTD
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

STAT_ EP STAT_
USB_EP6R RX LOẠI TX EA[3:0]

ÀĐ
C
0x18 Kín đáo

XT_RTC
IẶ
XR_RTC
[1:0]

DNIK_PE
[1:0] [1:0]

XT_GOTD
XR_GOTD
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

STAT_ EP STAT_
USB_EP7R RX LOẠI TX EA[3:0]

ÀĐ
C
0x1C Kín đáo

XT_RTC
IẶ
XR_RTC

[1:0]

DNIK_PE
[1:0] [1:0]

XT_GOTD
XR_GOTD

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0x20-
Kín đáo
0x3F

USB_CNTR

SERF
MRTC

IỖL

MFOS

NWDP
PSUSF
MFOSE
UV
T

0x40 Kín đáo Kín đáo


MPUKW

HLT

HĐC
YỜ

ẢTB
PẠẬ

ẾỘ
TỆI

NẮÓ
MRVOAMP

TẾI

M
T
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 1 1

USB_ISTR
RT
ỰI

EP_ID[3:0]
CẾ
IỖL
RTC

FOS

P
FOSE
MG
GNỪ ẠN
T
PUKW

ÀLC

0x44 Kín đáo Kín đáo


IẠ
RVOAMP

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0

LSOF
USB_FNR FN[10:0]
KCL
PDXR

MDXR

0x48 Kín đáo [1:0]

Đặt lại giá trị 0 0 0 0 0 xxxxxxxxxxxx

USB_DADD EF THÊM[6:0]
0x4C R Kín đáo

Đặt lại giá trị 0 00 00000

USB_BTAB BTABLE[15:3]
0x50 LÊ Kín đáo Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0

Tham khảo Bảng 3 trên trang 50 để biết địa chỉ biên của thanh ghi.

652/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Mạng vùng điều khiển (bxCAN)

24 Mạng vùng điều khiển (bxCAN)

Các thiết bị mật độ thấp là bộ vi điều khiển STM32F101xx, STM32F102xx và STM32F103xx


trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

Các thiết bị có mật độ trung bình là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 64 đến 128 Kbyte.

Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ nhớ
Flash nằm trong khoảng từ 256 đến 512 Kbyte.

Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ


nhớ Flash nằm trong khoảng từ 768 Kbyte đến 1 Mbyte.

Các thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

Phần này chỉ áp dụng cho đường kết nối và đường hiệu suất STM32F103xx.

Giới thiệu 24.1 bxCAN

Thiết bị ngoại vi CAN mở rộng cơ bản , được đặt tên là bxCAN, giao tiếp với mạng CAN. Nó
hỗ trợ các giao thức CAN phiên bản 2.0A và B. Nó được thiết kế để quản lý số lượng lớn tin
nhắn đến một cách hiệu quả với mức tải CPU tối thiểu. Nó cũng đáp ứng các yêu cầu ưu tiên
để truyền tải thông điệp.

Đối với các ứng dụng quan trọng về an toàn, bộ điều khiển CAN cung cấp tất cả các chức năng
phần cứng để hỗ trợ tùy chọn Giao tiếp kích hoạt thời gian CAN.

Các tính năng chính của 24.2 bxCAN

• Hỗ trợ giao thức CAN phiên bản 2.0 A, B Active


• Tốc độ bit lên tới 1 Mbit/s

• Hỗ trợ tùy chọn Giao tiếp kích hoạt theo thời gian

Quá trình lây truyền

• Ba hộp thư truyền

• Có thể cấu hình mức độ ưu tiên truyền

• Dấu thời gian khi truyền SOF

Thu nhận

• Hai người nhận FIFO với ba giai đoạn


• Ngân hàng bộ lọc có khả năng mở rộng:

– 28 dãy bộ lọc được chia sẻ giữa CAN1 và CAN2 trong các thiết bị có đường kết nối
– 14 ngân hàng lọc trong các thiết bị STM32F10xxx khác

• Tính năng danh sách định danh

• Có thể cấu hình tràn FIFO

• Dấu thời gian khi tiếp nhận SOF

RM0008 Phiên bản 21 653/1136

698
Machine Translated by Google

Mạng vùng điều khiển (bxCAN) RM0008

Tùy chọn liên lạc kích hoạt thời gian

• Tắt chế độ truyền lại tự động

• Bộ đếm thời gian chạy miễn phí 16-bit

• Dấu thời gian được gửi trong hai byte dữ liệu cuối cùng

Sự quản lý

• Các ngắt có thể che giấu

• Ánh xạ hộp thư phần mềm hiệu quả tại một không gian địa chỉ duy nhất

CÓ THỂ kép

• CAN1: Master bxCAN để quản lý giao tiếp giữa bxCAN Slave và


bộ nhớ SRAM 512 byte

• CAN2: bxCAN phụ, không có quyền truy cập trực tiếp vào bộ nhớ SRAM. • Hai

ô bxCAN chia sẻ bộ nhớ SRAM 512 byte (xem Hình 223)

Ghi chú: Trong các thiết bị có mật độ thấp, trung bình, cao và XL, USB và CAN chia sẻ cổng 512- chuyên dụng
bộ nhớ SRAM byte để truyền và nhận dữ liệu, do đó chúng không thể được sử dụng đồng thời
(SRAM dùng chung chỉ được truy cập thông qua CAN và USB). USB và CAN có thể được sử dụng trong
cùng một ứng dụng nhưng không thể sử dụng cùng một lúc.

Mô tả chung 24.3 bxCAN


Trong các ứng dụng CAN ngày nay, số lượng nút trong mạng ngày càng tăng và thường một số
mạng được liên kết với nhau thông qua các cổng. Thông thường, số lượng tin nhắn trong hệ thống
(và do đó được mỗi nút xử lý) đã tăng lên đáng kể. Ngoài các thông báo ứng dụng, các thông báo
Chẩn đoán và Quản lý Mạng cũng đã được giới thiệu.

• Cần có cơ chế lọc nâng cao để xử lý từng loại tin nhắn.

Hơn nữa, các tác vụ ứng dụng yêu cầu nhiều thời gian CPU hơn, do đó cần phải giảm bớt các
ràng buộc về thời gian thực do việc nhận tin nhắn gây ra.

• Sơ đồ FIFO nhận cho phép CPU được dành riêng cho các tác vụ ứng dụng trong một khoảng thời gian
dài mà không làm mất tin nhắn.

HLP tiêu chuẩn (Giao thức lớp cao hơn) dựa trên trình điều khiển CAN tiêu chuẩn yêu cầu giao
diện hiệu quả với bộ điều khiển CAN.

654/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Mạng vùng điều khiển (bxCAN)

Hình 222. Cấu trúc liên kết mạng CAN

MCU

Ứng dụng

ú1
N
C

ú2
N
C

ún
N
C
tA

tA

tA
N

N
CÓ THỂ

Bộ điều khiển

CÓ THỂ CÓ THỂ
Rx Tx

CÓ THỂ

Bộ thu phát

CÓ THỂ CÓ THỂ

Cao Thấp

Có thể xe buýt

24.3.1 CAN 2.0B lõi hoạt động

Mô-đun bxCAN xử lý việc truyền và nhận tin nhắn CAN hoàn toàn tự động. Mã định danh tiêu
chuẩn (11 bit) và mã định danh mở rộng (29 bit) được phần cứng hỗ trợ đầy đủ.

24.3.2 Thanh ghi điều khiển, trạng thái và cấu hình

Ứng dụng sử dụng các thanh ghi này để:

• Cấu hình các tham số CAN, ví dụ tốc độ baud

• Yêu cầu truyền

• Xử lý việc tiếp nhận

• Quản lý ngắt

• Nhận thông tin chẩn đoán

Hộp thư 24.3.3 Tx

Ba hộp thư truyền được cung cấp cho phần mềm để thiết lập tin nhắn. Bộ lập lịch truyền
sẽ quyết định hộp thư nào phải được truyền trước.

24.3.4 Bộ lọc chấp nhận

bxCAN cung cấp 28 ngân hàng bộ lọc nhận dạng có thể mở rộng/có thể định cấu hình để chọn
các tin nhắn đến mà phần mềm cần và loại bỏ các tin nhắn khác. Trong các thiết bị khác, có 14
ngân hàng bộ lọc nhận dạng có thể mở rộng/cấu hình được.

Nhận FIFO

Hai FIFO nhận được phần cứng sử dụng để lưu trữ các tin nhắn đến. Ba tin nhắn hoàn chỉnh có
thể được lưu trữ trong mỗi FIFO. FIFO được quản lý hoàn toàn bằng phần cứng.

RM0008 Phiên bản 21 655/1136

698
Machine Translated by Google

Mạng vùng điều khiển (bxCAN) RM0008

Hình 223. Sơ đồ khối CAN kép (thiết bị kết nối)

CAN1 (Master) với 512 byte SRAM


Bậc thầy
Hộp thư Tx Bậc thầy Bậc thầy
Nhận FIFO 0 Nhận FIFO 1
2

1 2 2
Hộp thư 0 1 1
Hộp thư 0 Hộp thư 0
Kiểm soát tổng thể

Trạng thái chính

Trạng thái Tx

Trạng thái Rx FIFO 0 Quá trình lây truyền

Người lập kế hoạch

Trạng thái Rx FIFO 1

Bộ lọc chấp nhận


Kích hoạt ngắt
26 27
Lõi hoạt động CAN 2.0B ..
Trạng thái lỗi
Ký ức
.. 3 2
1
Truy cập Lọc 0
Thời gian bit Bộ điều khiển
gh
/ mn
t
n
i ểì

á
u ih
o
r
h
ấ K
s
T
t
C

Bộ lọc chính Bộ lọc nô lệ


Bộ lọc chính
(0 đến 27) (0 đến 27)

Chế độ lọc

Quá trình lây truyền


Lọc quy mô
Người lập kế hoạch
Nô lệ Nô lệ

Lọc FIFO Gán Nô lệ


Hộp thư Tx
Nhận FIFO 0 Nhận FIFO 1

2 2
2
Kích hoạt bộ lọc 1 1
1 Hộp thư 0 Hộp thư 0
Hộp thư 0

CAN2 (Nô lệ)

Kiểm soát tổng thể

Trạng thái chính

Trạng thái Tx

Trạng thái Rx FIFO 0


mn
gh
/t
n
i ểì

á
u ih
o
r
h
ấK
s
T
t
C

Lõi hoạt động CAN 2.0B


Trạng thái Rx FIFO 1

Kích hoạt ngắt

Trạng thái lỗi

Lưu ý: CAN 2 bắt đầu dãy bộ lọc số n có thể được cấu hình bằng cách ghi vào
Thời gian bit các bit CAN2SB[5:0] trong thanh ghi CAN_FMR.

ai16094b

Chế độ hoạt động 24,4 bxCAN


bxCAN có ba chế độ hoạt động chính: khởi tạo, bình thường và Ngủ. Sau khi thiết lập
lại phần cứng, bxCAN ở chế độ Ngủ để giảm mức tiêu thụ điện năng và tính năng kéo lên bên
trong đang hoạt động trên CANTX. Phần mềm yêu cầu bxCAN vào chế độ khởi tạo hoặc chế độ Ngủ
bằng cách đặt các bit INRQ hoặc SLEEP trong thanh ghi CAN_MCR. Khi chế độ đã được nhập,
bxCAN xác nhận chế độ đó bằng cách đặt các bit INAK hoặc SLAK trong thanh ghi CAN_MSR và tính
năng kéo lên bên trong sẽ bị tắt. Khi cả INAK và SLAK đều không được đặt, bxCAN ở trạng thái bình thường

656/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Mạng vùng điều khiển (bxCAN)

cách thức. Trước khi vào chế độ bình thường , bxCAN luôn phải đồng bộ hóa trên CAN bus.
Để đồng bộ hóa, bxCAN đợi cho đến khi bus CAN không hoạt động, điều này có nghĩa là 11 bit lặn
liên tiếp đã được giám sát trên CANRX.

24.4.1 Chế độ khởi tạo

Việc khởi tạo phần mềm có thể được thực hiện khi phần cứng đang ở chế độ Khởi tạo. Để vào chế

độ này, phần mềm sẽ đặt bit INRQ trong thanh ghi CAN_MCR và đợi cho đến khi phần cứng xác
nhận yêu cầu bằng cách đặt bit INAK trong thanh ghi CAN_MSR.

Để thoát khỏi chế độ Khởi tạo, phần mềm sẽ xóa bit INRQ. bxCAN đã rời khỏi chế độ Khởi tạo sau
khi bit INAK bị phần cứng xóa.

Khi ở Chế độ khởi tạo, tất cả việc truyền tin nhắn đến và từ bus CAN đều bị dừng và trạng thái
của CANTX đầu ra bus CAN là lặn (cao).

Việc vào Chế độ khởi tạo không thay đổi bất kỳ thanh ghi cấu hình nào.

Để khởi tạo Bộ điều khiển CAN, phần mềm phải thiết lập các thanh ghi Bit Timing (CAN_BTR) và
CAN tùy chọn (CAN_MCR).

Để khởi tạo các thanh ghi được liên kết với các dãy bộ lọc CAN (chế độ, tỷ lệ, gán
FIFO, giá trị kích hoạt và bộ lọc), phần mềm phải đặt bit FINIT (CAN_FMR). Việc khởi tạo bộ lọc
cũng có thể được thực hiện bên ngoài chế độ khởi tạo.

Ghi chú: Khi FINIT=1, khả năng thu CAN bị vô hiệu hóa.

Các giá trị bộ lọc cũng có thể được sửa đổi bằng cách tắt các bit kích hoạt bộ lọc liên quan
(trong thanh ghi CAN_FA1R).

Nếu ngân hàng bộ lọc không được sử dụng thì nên để nó ở trạng thái không hoạt động (để trống
bit FACT tương ứng).

24.4.2 Chế độ bình thường

Sau khi quá trình khởi tạo hoàn tất, phần mềm phải yêu cầu phần cứng vào chế độ Bình thường để
có thể đồng bộ hóa trên bus CAN và bắt đầu thu và truyền.

Yêu cầu vào chế độ Bình thường được đưa ra bằng cách xóa bit INRQ trong thanh ghi CAN_MCR.
bxCAN chuyển sang chế độ Bình thường và sẵn sàng tham gia các hoạt động của bus khi đã đồng bộ
hóa với quá trình truyền dữ liệu trên bus CAN. Điều này được thực hiện bằng cách chờ đợi
sự xuất hiện của chuỗi 11 bit lặn liên tiếp (trạng thái Bus Idle). Việc chuyển sang chế độ
Bình thường được phần cứng xác nhận bằng cách xóa bit INAK trong thanh ghi CAN_MSR.

Việc khởi tạo các giá trị bộ lọc độc lập với Chế độ khởi tạo nhưng phải được thực hiện trong
khi bộ lọc không hoạt động (xóa bit FACTx tương ứng). Cấu hình chế độ và thang đo bộ lọc
phải được cấu hình trước khi vào Chế độ bình thường.

24.4.3 Chế độ ngủ (điện năng thấp)

Để giảm mức tiêu thụ điện năng, bxCAN có chế độ tiêu thụ điện năng thấp gọi là Chế độ ngủ.
Chế độ này được nhập theo yêu cầu của phần mềm bằng cách đặt bit SLEEP trong thanh ghi CAN_MCR.
Ở chế độ này, đồng hồ bxCAN bị dừng, tuy nhiên phần mềm vẫn có thể truy cập vào hộp thư
bxCAN.

Nếu phần mềm yêu cầu chuyển sang chế độ khởi tạo bằng cách đặt bit INRQ trong khi bxCAN ở chế
độ Ngủ , thì phần mềm đó cũng phải xóa bit SLEEP.

RM0008 Phiên bản 21 657/1136

698
Machine Translated by Google

Mạng vùng điều khiển (bxCAN) RM0008

bxCAN có thể được đánh thức (thoát khỏi chế độ Ngủ) bằng phần mềm xóa bit SLEEP hoặc khi
phát hiện hoạt động của CAN bus.

Khi phát hiện hoạt động của bus CAN, phần cứng sẽ tự động thực hiện trình tự đánh thức bằng
cách xóa bit SLEEP nếu bit AWUM trong thanh ghi CAN_MCR được đặt. Nếu bit AWUM bị xóa, phần
mềm phải xóa bit SLEEP khi xảy ra gián đoạn đánh thức để thoát khỏi chế độ Ngủ.

Ghi chú: Nếu ngắt đánh thức được bật (bit WKUIE được đặt trong thanh ghi CAN_IER), thì ngắt đánh
thức sẽ được tạo khi phát hiện hoạt động bus CAN, ngay cả khi bxCAN tự động thực hiện
trình tự đánh thức.

Sau khi bit SLEEP bị xóa, chế độ Ngủ sẽ thoát khi bxCAN đã được đồng bộ hóa với bus CAN, tham
khảo Hình 224. Chế độ Ngủ sẽ bị thoát sau khi bit SLAK được xóa bằng phần cứng.

Hình 224. Các chế độ hoạt động của bxCAN

Cài lại

Ngủ
TRƯỢT= 1
INAK = 0

NGỦ . ĐỒNG BỘ HÓA . INRQ


NGỦ . INRQ. ACK

NGỦ . ACK
NGỦ . INRQ. ACK

Bình thường INRQ. ACK Khởi tạo

SLACK= 0 SLACK= 0
INAK = 0 INAK = 1
INRQ. ĐỒNG BỘ HÓA . NGỦ

ai15902

1. ACK = Trạng thái chờ trong đó phần cứng xác nhận yêu cầu bằng cách đặt các bit INAK hoặc SLAK trong
CAN_MSR đăng ký

2. SYNC = Trạng thái trong đó bxCAN đợi cho đến khi bus CAN không hoạt động, nghĩa là 11 lần lặn liên tiếp
bit đã được theo dõi trên CANRX

24,5 Chê đô kiê m tra

Chế độ kiểm tra có thể được chọn bằng các bit SILM và LBKM trong thanh ghi CAN_BTR. Các bit
này phải được cấu hình trong khi bxCAN ở chế độ Khởi tạo. Khi chế độ kiểm tra đã
được chọn, bit INRQ trong thanh ghi CAN_MCR phải được đặt lại để vào chế độ Bình thường.

24.5.1 Chế độ im lặng

bxCAN có thể được đặt ở chế độ Im lặng bằng cách đặt bit SILM trong thanh ghi CAN_BTR.

Ở chế độ Im lặng, bxCAN có thể nhận các khung dữ liệu hợp lệ và các khung từ xa hợp lệ, nhưng
nó chỉ gửi các bit lặn trên bus CAN và không thể bắt đầu truyền. Nếu bxCAN phải gửi một bit
chiếm ưu thế (bit ACK, cờ quá tải, cờ lỗi hoạt động), bit đó sẽ được định tuyến lại bên
trong để CAN Core giám sát bit chiếm ưu thế này, mặc dù bus CAN có thể

658/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Mạng vùng điều khiển (bxCAN)

vẫn ở trạng thái lặn. Chế độ im lặng có thể được sử dụng để phân tích lưu lượng trên bus
CAN mà không ảnh hưởng đến nó bằng cách truyền các bit chiếm ưu thế (Bit xác nhận, khung lỗi).

Hình 225. bxCAN ở chế độ im lặng

bxCAN
Tx Rx

=1

CANTX CANRX

24.5.2 Chế độ lặp lại

bxCAN có thể được đặt ở Chế độ quay lại vòng lặp bằng cách đặt bit LBKM trong thanh ghi
CAN_BTR. Trong Chế độ lặp lại, bxCAN xử lý các tin nhắn được truyền đi của chính nó như những
tin nhắn đã nhận và lưu trữ chúng (nếu chúng vượt qua bộ lọc chấp nhận) trong hộp thư Nhận.

Hình 226. bxCAN ở chế độ quay vòng

bxCAN
Tx Rx

CANTX CANRX

Chế độ này được cung cấp cho các chức năng tự kiểm tra. Để độc lập với các sự kiện bên ngoài, CAN
Core bỏ qua các lỗi xác nhận (không có bit trội nào được lấy mẫu trong khe xác nhận của khung
dữ liệu/khung từ xa) trong Chế độ quay lại vòng lặp. Ở chế độ này, bxCAN thực hiện phản hồi
nội bộ từ đầu ra Tx đến đầu vào Rx của nó. Giá trị thực tế của chân đầu vào CANRX bị bxCAN
bỏ qua. Các tin nhắn được truyền có thể được theo dõi trên chân CANTX.

24.5.3 Loop back kết hợp với chế độ im lặng

Cũng có thể kết hợp chế độ Loop Back và chế độ Im lặng bằng cách đặt các bit LBKM và SILM trong
thanh ghi CAN_BTR. Chế độ này có thể được sử dụng cho “Hot Selftest”, nghĩa là bxCAN có thể được
kiểm tra giống như ở chế độ Loop Back nhưng không ảnh hưởng đến hệ thống CAN đang chạy được
kết nối với các chân CANTX và CANRX. Ở chế độ này, chân CANRX bị ngắt kết nối khỏi bxCAN và chân
CANTX được giữ ở trạng thái lặn.

RM0008 Phiên bản 21 659/1136

698
Machine Translated by Google

Mạng vùng điều khiển (bxCAN) RM0008

Hình 227. bxCAN ở chế độ kết hợp

bxCAN
Tx Rx

=1

CANTX CANRX

24.6 Chế độ gỡ lỗi


Khi bộ vi điều khiển chuyển sang chế độ gỡ lỗi ( lõi Cortex®-M3 tạm dừng), bxCAN tiếp tục hoạt
động bình thường hoặc dừng, tùy thuộc vào:

• Bit DBG_CAN1_STOP cho CAN1 hoặc bit DBG_CAN2_STOP cho CAN2 trong mô-đun DBG. Để biết thêm
chi tiết, hãy tham khảo Phần 31.16.2: Hỗ trợ gỡ lỗi cho bộ hẹn giờ, cơ quan giám sát,
bxCAN và I2C.

• Bit DBF trong CAN_MCR. Để biết thêm chi tiết, hãy tham khảo Phần 24.9.2.

Mô tả chức năng 24.7 bxCAN

24.7.1 Xử lý truyền dẫn

Để truyền tin nhắn, ứng dụng phải chọn một hộp thư truyền trống , thiết lập mã định danh, mã độ
dài dữ liệu (DLC) và dữ liệu trước khi yêu cầu truyền bằng cách đặt bit TXRQ tương ứng trong
thanh ghi CAN_TIxR. Khi hộp thư đã để lại trạng thái trống , phần mềm sẽ không còn quyền ghi vào
sổ đăng ký hộp thư nữa. Ngay sau khi bit TXRQ được thiết lập, hộp thư sẽ chuyển sang trạng thái
chờ xử lý và chờ trở thành hộp thư có mức ưu tiên cao nhất, xem Ưu tiên truyền. Ngay khi hộp thư
có mức ưu tiên cao nhất, nó sẽ được lên lịch truyền. Việc truyền tin nhắn của hộp thư đã
lên lịch sẽ bắt đầu (nhập trạng thái truyền ) khi bus CAN không hoạt động. Khi hộp thư đã
được truyền thành công, nó sẽ lại trống rỗng . Phần cứng cho biết việc truyền thành công bằng
cách đặt các bit RQCP và TXOK trong thanh ghi CAN_TSR.

Nếu quá trình truyền không thành công, nguyên nhân được biểu thị bằng bit ALST trong thanh ghi
CAN_TSR trong trường hợp Trọng tài bị mất và/hoặc bit TERR trong trường hợp phát hiện lỗi truyền.

660/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Mạng vùng điều khiển (bxCAN)

Ưu tiên truyền

Theo mã định danh Khi có nhiều hơn một hộp thư truyền đang chờ xử lý,
thứ tự truyền được đưa ra bởi mã định danh của tin nhắn được
lưu trong hộp thư. Tin nhắn có giá trị nhận dạng thấp nhất có
mức độ ưu tiên cao nhất theo sự phân xử của giao thức CAN. Nếu
các giá trị định danh bằng nhau thì số hộp thư thấp hơn sẽ được
lên lịch trước.

Theo thứ tự yêu cầu truyền Các hộp thư truyền có thể được cấu hình như một FIFO truyền bằng
cách đặt bit TXFP trong thanh ghi CAN_MCR. Trong chế độ này, thứ
tự ưu tiên được đưa ra theo thứ tự yêu cầu truyền. Chế độ này rất
hữu ích cho việc truyền phân đoạn.

Huỷ bỏ

Yêu cầu truyền có thể bị hủy bỏ bằng cách người dùng cài đặt bit ABRQ trong thanh ghi
CAN_TSR. Ở trạng thái đang chờ xử lý hoặc đã lên lịch , hộp thư sẽ bị hủy bỏ ngay lập
tức. Yêu cầu hủy bỏ trong khi hộp thư đang ở trạng thái truyền có thể có hai kết quả.
Nếu hộp thư được truyền thành công thì hộp thư sẽ trống với bit TXOK được đặt trong
thanh ghi CAN_TSR. Nếu quá trình truyền không thành công, hộp thư sẽ được lập lịch,
quá trình truyền bị hủy bỏ và trở nên trống khi TXOK bị xóa. Trong mọi trường hợp, hộp thư
sẽ lại trống ít nhất là khi kết thúc quá trình truyền hiện tại.

Chế độ truyền lại không tự động

Chế độ này đã được triển khai nhằm đáp ứng yêu cầu của tùy chọn Giao tiếp kích hoạt thời
gian của tiêu chuẩn CAN. Để định cấu hình phần cứng ở chế độ này, bit NART trong thanh ghi
CAN_MCR phải được đặt.

Ở chế độ này, mỗi lần truyền chỉ được bắt đầu một lần. Nếu lần thử đầu tiên không thành
công do mất trọng tài hoặc do lỗi, phần cứng sẽ không tự động khởi động lại quá trình
truyền tin nhắn.

Khi kết thúc lần truyền đầu tiên, phần cứng coi yêu cầu đã hoàn thành và đặt bit RQCP
trong thanh ghi CAN_TSR. Kết quả truyền được biểu thị trong thanh ghi CAN_TSR bằng các bit
TXOK, ALST và TERR.

RM0008 Phiên bản 21 661/1136

698
Machine Translated by Google

Mạng vùng điều khiển (bxCAN) RM0008

Hình 228. Truyền trạng thái hộp thư

TRỐNG

RQCP=X
TXOK=X
TXRQ=1
TME = 1

CHƯA GIẢI QUYẾT

RQCP=0 Hộp thư có


TXOK=0
ABRQ=1 mức ưu tiên cao nhất
TME = 0

Hộp thư không


có mức độ ưu tiên cao nhất
TRỐNG LÊN KẾ HOẠCH

RQCP=1 ABRQ=1
RQCP=0
TXOK=0 TXOK=0
TME = 1 TME = 0
CAN Bus = IDLE

Truyền không thành công * NART CHUYỂN GIAO Truyền không thành công * NART
RQCP=0
TXOK=0
TME = 0

TRỐNG
Truyền thành công
RQCP=1
TXOK=1
TME = 1

24.7.2 Chế độ liên lạc được kích hoạt theo thời gian

Trong chế độ này, bộ đếm bên trong của phần cứng CAN được kích hoạt và sử dụng để tạo ra giá
trị Dấu thời gian được lưu trong các thanh ghi CAN_RDTxR/CAN_TDTxR tương ứng (đối với hộp
thư Rx và Tx). Bộ đếm bên trong được tăng lên mỗi lần CAN bit (tham khảo Phần
24.7.7). Bộ đếm bên trong được ghi lại trên điểm mẫu của bit Bắt đầu Khung trong cả quá
trình thu và truyền.

24.7.3 Xử lý lễ tân

Để nhận các tin nhắn CAN, ba hộp thư được tổ chức dưới dạng FIFO được cung cấp. Để tiết
kiệm tải CPU, đơn giản hóa phần mềm và đảm bảo tính nhất quán của dữ liệu, FIFO được quản
lý hoàn toàn bằng phần cứng. Ứng dụng truy cập các tin nhắn được lưu trữ trong FIFO thông
qua hộp thư đầu ra FIFO.

Tin nhắn hợp lệ

Một tin nhắn đã nhận được coi là hợp lệ khi nó được nhận đúng theo giao thức CAN (không có
lỗi cho đến bit cuối cùng ngoại trừ một bit của trường EOF) và nó đã vượt qua bộ lọc định
danh thành công, xem Phần 24.7.4.

662/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Mạng vùng điều khiển (bxCAN)

Hình 229. Nhận trạng thái FIFO

TRỐNG
FMP=0x00 Tin nhắn hợp lệ
FOVR=0 Đa nhâ n

Đang chờ xử lý_1


Giải phóng
FMP=0x01
Hộp thư FOVR=0

Giải phóng Tin nhắn hợp lệ


Hộp thư Đa nhâ n
RFOM=1

Đang chờ xử lý_2


FMP=0x10
FOVR=0

Giải phóng Tin nhắn hợp lệ


Hộp thư Đa nhâ n
RFOM=1

Đang chờ xử lý_3


FMP=0x11 Tin nhắn hợp lệ
FOVR=0 Đa nhâ n

CHẠY TRÁI
Giải phóng
FMP=0x11
Hộp thư FOVR=1
RFOM=1

Tin nhắn hợp lệ


Đa nhâ n

quản lý FIFO

Bắt đầu từ trạng thái trống , tin nhắn hợp lệ đầu tiên nhận được sẽ được lưu trữ trong
FIFO và trở thành đang chờ xử lý_1. Phần cứng báo hiệu sự kiện cài đặt các bit FMP[1:0]
trong thanh ghi CAN_RFR thành giá trị 01b. Thông báo có sẵn trong hộp thư đầu ra FIFO.
Phần mềm đọc nội dung hộp thư và giải phóng nó bằng cách đặt bit RFOM trong thanh ghi
CAN_RFR. FIFO lại trở nên trống rỗng . Nếu trong thời gian chờ đợi, một tin nhắn hợp lệ
mới đã được nhận thì FIFO vẫn ở trạng thái chờ xử lý_1 và tin nhắn mới sẽ có sẵn trong
hộp thư đầu ra.

Nếu ứng dụng không giải phóng hộp thư, tin nhắn hợp lệ tiếp theo sẽ được lưu trong FIFO ở
trạng thái chờ xử lý_2 (FMP[1:0] = 10b). Quá trình lưu trữ được lặp lại cho thông báo hợp
lệ tiếp theo đưa FIFO vào trạng thái chờ xử lý_3 (FMP[1:0] = 11b). Tại thời điểm này,
phần mềm phải giải phóng hộp thư đầu ra bằng cách thiết lập bit RFOM để hộp thư có thể
tự do lưu trữ tin nhắn hợp lệ tiếp theo. Nếu không, tin nhắn hợp lệ tiếp theo nhận được sẽ
làm mất tin nhắn.

Tham khảo thêm Mục 24.7.5

Tràn ngập

Khi FIFO ở trạng thái chờ xử lý_3 (tức là ba hộp thư đã đầy), việc nhận thư hợp lệ
tiếp theo sẽ dẫn đến tình trạng tràn và thư sẽ bị mất. Phần cứng

RM0008 Phiên bản 21 663/1136

698
Machine Translated by Google

Mạng vùng điều khiển (bxCAN) RM0008

báo hiệu tình trạng tràn bằng cách đặt bit FOVR trong thanh ghi CAN_RFR. Thông báo nào
bị mất tùy thuộc vào cấu hình của FIFO:
• Nếu chức năng khóa FIFO bị vô hiệu hóa (bit RFLM trong thanh ghi CAN_MCR bị xóa), tin
nhắn cuối cùng được lưu trong FIFO sẽ bị ghi đè bởi tin nhắn mới đến. Trong trường
hợp này, các tin nhắn mới nhất sẽ luôn có sẵn cho ứng dụng.
• Nếu chức năng khóa FIFO được bật (bit RFLM trong bộ thanh ghi CAN_MCR), tin nhắn gần
đây nhất sẽ bị loại bỏ và phần mềm sẽ có sẵn ba tin nhắn cũ nhất trong FIFO.

Sự gián đoạn liên quan đến việc tiếp nhận

Khi một tin nhắn đã được lưu trữ trong FIFO, các bit FMP[1:0] sẽ được cập nhật và
yêu cầu ngắt được tạo ra nếu bit FMPIE trong thanh ghi CAN_IER được đặt.

Khi FIFO đầy (tức là tin nhắn thứ ba được lưu trữ), bit FULL trong thanh ghi CAN_RFR được
đặt và một ngắt được tạo ra nếu bit FFIE trong thanh ghi CAN_IER được đặt.

Trong điều kiện tràn, bit FOVR được đặt và ngắt được tạo ra nếu bit FOVIE trong thanh ghi
CAN_IER được đặt.

24.7.4 Lọc định danh


Trong giao thức CAN, mã định danh của thông báo không liên quan đến địa chỉ của nút mà liên
quan đến nội dung của thông báo. Do đó, máy phát sẽ phát thông điệp của nó tới tất cả
các máy thu. Khi nhận được tin nhắn, nút nhận sẽ quyết định - tùy thuộc vào giá trị định
danh - liệu phần mềm có cần tin nhắn hay không. Nếu cần thông báo, nó sẽ được sao chép
vào SRAM. Nếu không, tin nhắn phải bị loại bỏ mà không có sự can thiệp của phần mềm.

Để đáp ứng yêu cầu này, Bộ điều khiển bxCAN cung cấp 28 ngân hàng bộ lọc có thể định cấu hình
và mở rộng (27-0) cho ứng dụng. Trong các thiết bị khác, Bộ điều khiển bxCAN cung
cấp 14 ngân hàng bộ lọc có thể định cấu hình và mở rộng (13-0) cho ứng dụng để chỉ nhận các
tin nhắn mà phần mềm cần. Việc lọc phần cứng này tiết kiệm tài nguyên CPU cần thiết để thực
hiện lọc bằng phần mềm. Mỗi dãy bộ lọc x bao gồm hai thanh ghi 32 bit, CAN_FxR0 và CAN_FxR1.

Chiều rộng có thể mở rộng

Để tối ưu hóa và điều chỉnh các bộ lọc theo nhu cầu của ứng dụng, mỗi ngân hàng bộ lọc có thể được điều
chỉnh tỷ lệ độc lập. Tùy thuộc vào quy mô bộ lọc mà ngân hàng bộ lọc cung cấp:

• Một bộ lọc 32 bit cho các bit STDID[10:0], EXTID[17:0], IDE và RTR.

• Hai bộ lọc 16-bit cho các bit STDID[10:0], RTR, IDE và EXTID[17:15].

Tham khảo Hình 230.

Hơn nữa, các bộ lọc có thể được cấu hình ở chế độ mặt nạ hoặc ở chế độ danh sách định danh.

Chế độ mặt nạ

Trong chế độ mặt nạ, các thanh ghi định danh được liên kết với các thanh ghi mặt nạ chỉ định
bit nào của mã định danh được xử lý là “phải khớp” hoặc “không quan tâm”.

Chế độ danh sách định danh

Trong chế độ danh sách định danh , các thanh ghi mặt nạ được sử dụng làm thanh ghi định danh. Do đó, thay vì

xác định một mã định danh và một mặt nạ, hai mã định danh được chỉ định, nhân đôi số lượng mã định danh đơn lẻ.

664/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Mạng vùng điều khiển (bxCAN)

số nhận dạng. Tất cả các bit của mã định danh đến phải khớp với các bit được chỉ định trong thanh
ghi bộ lọc.

Cấu hình chế độ và quy mô ngân hàng lọc

Các dãy bộ lọc được cấu hình bằng thanh ghi CAN_FMR tương ứng. Để định cấu hình ngân hàng bộ lọc,
nó phải được hủy kích hoạt bằng cách xóa bit FACT trong thanh ghi CAN_FAR. Thang đo bộ lọc được cấu
hình bằng bit FSCx tương ứng trong thanh ghi CAN_FS1R, tham khảo Hình 230. Danh sách mã định danh
hoặc chế độ mặt nạ mã định danh cho các thanh ghi Mặt nạ/Mã định danh tương ứng được cấu hình bằng các
bit FBMx trong thanh ghi CAN_FMR.

Để lọc một nhóm số nhận dạng, hãy định cấu hình các thanh ghi Mặt nạ/Mã định danh ở chế độ mặt nạ.

Để chọn các mã định danh đơn lẻ, hãy định cấu hình các thanh ghi Mặt nạ/Mã định danh ở chế độ danh sách mã định danh.

Các bộ lọc không được ứng dụng sử dụng sẽ bị vô hiệu hóa.

Mỗi bộ lọc trong một dãy bộ lọc được đánh số (gọi là Số Bộ lọc) từ 0 đến mức tối đa tùy thuộc vào chế độ
và quy mô của từng dãy bộ lọc.

Liên quan đến cấu hình bộ lọc, hãy tham khảo Hình 230.

Hình 230. Cấu hình quy mô ngân hàng bộ lọc - tổ chức đăng ký

Số bộ

Một bộ lọc 32 bit - Mặt nạ nhận dạng lọc

NHẬN DẠNG
CAN_FxR1[31:24] CAN_FxR1[23:16] CAN_FxR1[15:8] CAN_FxR1[7:0] N
Mặt nạ CAN_FxR2[31:24] CAN_FxR2[23:16] CAN_FxR2[15:8] CAN_FxR2[7:0]
xMB=
F
0

Lập bản đồ STID[10:3] STID[2:0] EXID[17:13] EXID[12:5] EXID[4:0] IDE RTR 0


xCS=
F
1

Hai bộ lọc 32 bit - Danh sách định danh

N
NHẬN DẠNG
CAN_FxR1[31:24] CAN_FxR1[23:16] CAN_FxR1[15:8] CAN_FxR1[7:0]
xMB=
F
1

NHẬN DẠNG
CAN_FxR2[31:24] CAN_FxR2[23:16] CAN_FxR2[15:8] CAN_FxR2[7:0] n+1

Lập bản đồ STID[10:3] STID[2:0] EXID[17:13] EXID[12:5] EXID[4:0] IDE RTR 0

Hai bộ lọc 16 bit - Mặt nạ nhận dạng

NHẬN DẠNG
CAN_FxR1[15:8] CAN_FxR1[7:0] N
Mặt nạ CAN_FxR1[31:24] CAN_FxR1[23:16]
xMB=
F
0

NHẬN DẠNG
CAN_FxR2[15:8] CAN_FxR2[7:0] n+1
Mặt nạ CAN_FxR2[31:24] CAN_FxR2[23:16]
Lập bản đồ STID[10:3] STID[2:0] RTR IDE EXID[17:15]
xCS=
F
0

Bốn bộ lọc 16 bit - Danh sách định danh

NHẬN DẠNG
CAN_FxR1[15:8] CAN_FxR1[7:0] N
NHẬN DẠNG
CAN_FxR1[31:24] CAN_FxR1[23:16] n+1
xMB=
F
1

NHẬN DẠNG
CAN_FxR2[15:8] CAN_FxR2[7:0] n+2
NHẬN DẠNG
CAN_FxR2[31:24] CAN_FxR2[23:16] n+3

Lập bản đồ STID[10:3] STID[2:0] RTR IDE EXID[17:15]

x = số ngân hàng lọc


ID=Số nhận dạng
ấBC
h
ul
Q
m
n
h

hlC
đ
n
h
b
uiì
yọô
g
à

ếọg
à

ht
n
ncâ
n

ncâ
n
.1
g

g
2

1
Các bit này được đặt trong thanh ghi CAN_FS1R
2
Các bit này được đặt trong thanh ghi CAN_FM1R

RM0008 Phiên bản 21 665/1136

698
Machine Translated by Google

Mạng vùng điều khiển (bxCAN) RM0008

Lọc chỉ mục đối sánh

Khi một tin nhắn đã được nhận trong FIFO, nó sẽ có sẵn cho ứng dụng. Thông thường, dữ liệu ứng
dụng được sao chép vào các vị trí SRAM. Để sao chép dữ liệu đến đúng vị trí, ứng dụng phải xác
định dữ liệu bằng mã định danh. Để tránh điều này và để dễ dàng truy cập vào các vị trí SRAM, bộ
điều khiển CAN cung cấp Chỉ mục Kết hợp Bộ lọc.

Chỉ mục này được lưu trữ trong hộp thư cùng với thông báo theo quy tắc ưu tiên bộ lọc. Do đó, mỗi
tin nhắn nhận được đều có chỉ mục khớp bộ lọc liên quan.

Chỉ mục Kết hợp Bộ lọc có thể được sử dụng theo hai cách:

• So sánh chỉ mục Filter Match với danh sách các giá trị mong đợi.

• Sử dụng Filter Match Index làm chỉ mục trên một mảng để truy cập đích dữ liệu
vị trí.

Đối với các bộ lọc không có mặt nạ, phần mềm không còn phải so sánh mã định danh nữa.

Nếu bộ lọc bị che, phần mềm sẽ chỉ so sánh với các bit bị che.

Giá trị chỉ mục của số bộ lọc không tính đến trạng thái kích hoạt của dãy bộ lọc. Ngoài ra, hai

sơ đồ đánh số độc lập được sử dụng, một sơ đồ cho mỗi FIFO.


Tham khảo Hình 231 để biết ví dụ.

Hình 231. Ví dụ về đánh số bộ lọc

Lọc FIFO0 Số bộ Lọc FIFO1 Số bộ


Ngân hàng lọc Ngân hàng lọc

0 0
0 2
Danh sách ID (32-bit)
1
Mặt nạ ID (16-bit) 1

2
1 2 4
Mặt nạ ID (32-bit) Danh sách ID (32-bit) 3

3
4 Đã tắt 4
3 7
Danh sách ID (16-bit) 5
Mặt nạ ID (16-bit) 5
6

Đã tắt 7 6
5 số 8
Mặt nạ ID (16-bit) 7
Danh sách ID (32-bit) số 8

số 8

9 Đã tắt 9
6 10
Mặt nạ ID (16-bit) 10 10
Danh sách ID (16-bit)
11

11 12
9 11
Danh sách ID (32-bit) Danh sách ID (32-bit)
12 13

13 12 14
Mặt nạ 13 ID (32-bit) Mặt nạ ID (32-bit)

ID = Mã định danh

666/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Mạng vùng điều khiển (bxCAN)

Lọc quy tắc ưu tiên

Tùy thuộc vào sự kết hợp bộ lọc, có thể xảy ra trường hợp một mã định danh vượt qua thành công một
số bộ lọc. Trong trường hợp này, giá trị khớp bộ lọc được lưu trong hộp thư nhận được chọn theo các
quy tắc ưu tiên sau:

• Bộ lọc 32 bit được ưu tiên hơn bộ lọc 16 bit.

• Đối với các bộ lọc có tỷ lệ bằng nhau, chế độ Danh sách định danh được ưu tiên hơn Chế độ định danh
Chế độ mặt nạ

• Đối với các bộ lọc có tỷ lệ và chế độ bằng nhau, mức độ ưu tiên được đưa ra bởi số bộ lọc (giá trị càng thấp

số thì mức độ ưu tiên càng cao).

Hình 232. Cơ chế lọc - Ví dụ

Ba ngân hàng bộ lọc ở chế độ Danh sách không xác định 32 bit,
phần còn lại ở chế độ Mặt nạ nhận dạng 32 bit

Tin nhắn đã nhận

Mã định danh Điều khiển Dữ liệu

Ngân hàng lọc


số Nhận FIFO
Mã định danh 0
0 Mã định danh 1 Tin nhắn
Mã định danh 4 Mã định danh số 4 Trận đấu Đã lưu trữ
2
ca
hn ád
ị D
s
đ

Mã định danh 5

Mã định danh
1 2 Số bộ lọc được lưu trữ trong
Mặt nạ FMI
Lọc trường Chỉ mục phù

hợp trong thanh ghi CAN_RDTxR


nt
g ậạ
n hn
ặ N
d
M
&

Mã định danh
4 Mặt nạ
3

Không có trận đấu

Thành lập

Tin nhắn đã bị hủy

Ví dụ trên thể hiện nguyên lý lọc của bxCAN. Khi nhận được tin nhắn, mã định danh trước tiên sẽ được so
sánh với các bộ lọc được định cấu hình ở chế độ danh sách mã định danh. Nếu có sự trùng khớp, thông báo
sẽ được lưu trong FIFO được liên kết và chỉ mục của bộ lọc khớp sẽ được lưu trong Chỉ mục so khớp bộ
lọc. Như được hiển thị trong ví dụ, mã định danh khớp với Mã định danh số 2 do đó nội dung tin
nhắn và FMI 2 được lưu trữ trong FIFO.

Nếu không khớp, mã định danh đến sẽ được so sánh với các bộ lọc được định cấu hình ở chế độ mặt nạ.

Nếu mã định danh không khớp với bất kỳ mã định danh nào được định cấu hình trong bộ lọc thì thông báo sẽ
bị phần cứng loại bỏ mà không làm ảnh hưởng đến phần mềm.

RM0008 Phiên bản 21 667/1136

698
Machine Translated by Google

Mạng vùng điều khiển (bxCAN) RM0008

24.7.5 Lưu trữ tin nhắn


Giao diện giữa phần mềm và phần cứng cho các thông báo CAN được thực hiện bằng
các hộp thư. Hộp thư chứa tất cả thông tin liên quan đến tin nhắn; thông tin nhận
dạng, dữ liệu, điều khiển, trạng thái và dấu thời gian.

Truyền hộp thư

Phần mềm thiết lập tin nhắn sẽ được truyền trong hộp thư truyền trống. Trạng thái truyền
được biểu thị bằng phần cứng trong thanh ghi CAN_TSR.

Bảng 179. Truyền ánh xạ hộp thư

Bù đắp để truyền địa chỉ cơ sở hộp thư (byte) Tên đăng ký

0 CAN_TIxR
4 CAN_TDTxR
số 8
CAN_TDLxR
12 CAN_TDHxR

Nhận hộp thư

Khi một tin nhắn đã được nhận, nó sẽ có sẵn cho phần mềm trong hộp thư đầu ra FIFO.
Khi phần mềm đã xử lý tin nhắn (ví dụ: đọc nó), phần mềm phải giải phóng hộp thư đầu ra
FIFO bằng bit RFOM trong thanh ghi CAN_RFR để cung cấp tin nhắn đến tiếp theo. Chỉ số khớp
bộ lọc được lưu trữ trong trường MFMI của thanh ghi CAN_RDTxR. Giá trị dấu thời gian 16
bit được lưu trong trường TIME[15:0] của CAN_RDTxR.

Bảng 180. Nhận ánh xạ hộp thư

Offset để nhận địa chỉ cơ sở hộp thư (byte) Tên đăng ký

0 CAN_RIxR
4 CAN_RDTxR
số 8
CAN_RDLxR
12 CAN_RDHxR

668/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Mạng vùng điều khiển (bxCAN)

Hình 233. Sơ đồ trạng thái lỗi CAN

Khi TEC hoặc REC > 127

LỖI HOẠT ĐỘNG


LỖI THỤ ĐỘNG

Khi TEC và REC < 128,

*
Khi 128 11 bit lặn xảy ra: Khi TEC > 255

TẮT XE BUÝT

ai15903

RM0008 Phiên bản 21 669/1136

698
Machine Translated by Google

Mạng vùng điều khiển (bxCAN) RM0008

24.7.6 Quản lý lỗi

Việc quản lý lỗi như được mô tả trong giao thức CAN được xử lý hoàn toàn bằng phần cứng
bằng cách sử dụng Bộ đếm lỗi truyền (giá trị TEC, trong thanh ghi CAN_ESR) và Bộ đếm lỗi
nhận (giá trị REC, trong thanh ghi CAN_ESR), được tăng hoặc giảm theo tình trạng lỗi. Để
biết thông tin chi tiết về quản lý TEC và REC, hãy tham khảo tiêu chuẩn CAN.

Cả hai đều có thể được đọc bằng phần mềm để xác định tính ổn định của mạng.
Hơn nữa, phần cứng CAN cung cấp thông tin chi tiết về trạng thái lỗi hiện tại trong thanh
ghi CAN_ESR. Bằng thanh ghi CAN_IER (bit ERRIE, v.v.), phần mềm có thể cấu hình việc tạo
ngắt khi phát hiện lỗi một cách rất linh hoạt.

Phục hồi Bus-Off

Trạng thái Bus-Off đạt được khi TEC lớn hơn 255, trạng thái này được biểu thị bằng bit BOFF
trong thanh ghi CAN_ESR. Ở trạng thái Bus-Off, bxCAN không thể truyền và nhận tin nhắn
nữa.

Tùy thuộc vào bit ABOM trong thanh ghi CAN_MCR, bxCAN sẽ tự động khôi phục sau khi tắt Bus
(lỗi hoạt động trở lại) hoặc theo yêu cầu phần mềm. Nhưng trong cả hai trường hợp, bxCAN
phải đợi ít nhất trình tự khôi phục được chỉ định trong tiêu chuẩn CAN (128 lần xuất hiện
của 11 bit lặn liên tiếp được giám sát trên CANRX).

Nếu ABOM được đặt, bxCAN sẽ tự động bắt đầu trình tự khôi phục sau khi nó chuyển sang
trạng thái Tắt Bus.

Nếu ABOM bị xóa, phần mềm phải bắt đầu trình tự khôi phục bằng cách yêu cầu bxCAN vào
và thoát khỏi chế độ khởi tạo.

Ghi chú: Ở chế độ khởi tạo, bxCAN không giám sát tín hiệu CANRX, do đó nó không thể hoàn thành
trình tự khôi phục. Để khôi phục, bxCAN phải ở chế độ bình thường.

24.7.7 Thời gian bit

Logic định thời bit giám sát đường bus nối tiếp và thực hiện lấy mẫu và điều chỉnh điểm mẫu
bằng cách đồng bộ hóa trên cạnh bit bắt đầu và đồng bộ hóa lại trên các cạnh sau.

Hoạt động của nó có thể được giải thích đơn giản bằng cách chia thời gian bit danh nghĩa thành ba đoạn
như sau:

• Đoạn đồng bộ hóa (SYNC_SEG): một sự thay đổi bit dự kiến sẽ xảy ra trong đoạn thời gian
này. Nó có độ dài cố định là lượng tử một lần (1 x tq).
• Đoạn bit 1 (BS1): xác định vị trí của điểm mẫu. Nó bao gồm
PROP_SEG và PHASE_SEG1 của tiêu chuẩn CAN. Thời lượng của nó có thể được lập trình
trong khoảng từ 1 đến 16 lượng tử thời gian nhưng có thể được kéo dài tự động để bù
cho độ lệch pha dương do sự khác biệt về tần số của các nút khác nhau của mạng.

• Đoạn bit 2 (BS2): xác định vị trí của điểm truyền. Nó đại diện cho
PHASE_SEG2 của tiêu chuẩn CAN. Thời lượng của nó được lập trình trong khoảng từ 1
đến 8 lượng tử thời gian nhưng cũng có thể được tự động rút ngắn để bù cho độ
lệch pha âm.

Độ rộng nhảy đồng bộ hóa lại (SJW) xác định giới hạn trên cho mức độ kéo dài hoặc rút
ngắn của các phân đoạn bit. Nó được lập trình từ 1 đến 4 lượng tử thời gian.

670/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Mạng vùng điều khiển (bxCAN)

Một cạnh hợp lệ được định nghĩa là sự chuyển đổi đầu tiên trong một khoảng thời gian bit từ mức bus
trội sang mức bus lặn với điều kiện bản thân bộ điều khiển không gửi bit lặn.

Nếu phát hiện thấy cạnh hợp lệ trong BS1 thay vì SYNC_SEG, BS1 sẽ được mở rộng lên tới SJW
để điểm mẫu bị trễ.

Ngược lại, nếu một cạnh hợp lệ được phát hiện trong BS2 thay vì SYNC_SEG, BS2 sẽ được rút
ngắn tối đa SJW để điểm truyền được di chuyển sớm hơn.

Để bảo vệ chống lại các lỗi lập trình, chỉ có thể cấu hình thanh ghi Bit Timing (CAN_BTR)
khi thiết bị ở chế độ Chờ.

Ghi chú: Để biết mô tả chi tiết về cơ chế đồng bộ hóa và định thời bit CAN, hãy tham khảo tiêu chuẩn
ISO 11898.

Hình 234. Định thời bit

THỜI GIAN BIT DANH HIỆU

SYNC_SEG PHẦN BIT 1 (BS1) PHẦN BIT 2 (BS2)

1 xtq tBS1 tBS2

ĐIỂM MẪU ĐIỂM TRUYỀN

= 1
Tốc độ truyền ----------------------------------------------

Danh nghĩaBitTime

Danh nghĩaBitTime 1 = t + t
BS1
+ t
BS2
q

với:

tBS1 = tq x (TS1[3:0] + 1),

tBS2 = tq x (TS2[2:0] + 1),

tq = (BRP[9:0] + 1) x tPCLK

trong đó tq đề cập đến Lượng tử thời gian


tPCLK = khoảng thời gian của đồng hồ APB,

BRP[9:0], TS1[3:0] và TS2[2:0] được xác định trong thanh ghi CAN_BTR.

RM0008 Phiên bản 21 671/1136

698
Machine Translated by Google

Mạng vùng điều khiển (bxCAN) RM0008

Hình 235. Khung CAN

Không gian giữa các khung


Không gian giữa các khung Khung dữ liệu (Mã định danh tiêu chuẩn) hoặc Khung quá tải
*
44 + 8 N
Lĩnh vực trọng tài Trường Ctrl Trường dữ liệu Trường CRC Trường xác nhận

2
*
32 6 số 8 N 16 7

NHẬN DẠNG
DLC CRC EOF

0r
EDI
RTR
FOS

KCA
Không gian giữa các khung

Không gian giữa các khung Khung dữ liệu (Mã định danh mở rộng) hoặc Khung quá tải
*
64 + 8 N

Lĩnh vực trọng tài Lĩnh vực trọng tài Trường Ctrl Trường dữ liệu Trường CRC Trường xác nhận

2
*
32 32 6 số 8 N 16 7

NHẬN DẠNG
DLC CRC EOF

1r
0r
EDI

RTR
RRS
FOS

KCA
Không gian giữa các khung
Không gian giữa các khung Khung từ xa hoặc Khung quá tải
44

Lĩnh vực trọng tài Trường Ctrl Trường CRC Trường xác nhận

2
32 6 16 7

NHẬN DẠNG
DLC CRC EOF
0r
EDI
RTR
FOS

KCA
Khung dữ liệu hoặc
Không gian giữa các khung
Khung từ xa Khung lỗi hoặc Khung quá tải Ghi chú:

Lỗi 0 <= N <= 8


Tiếng vang cờ Dấu phân cách lỗi
Lá cờ
6 6 số 8
SOF = Bắt đầu khung hình

ID = Mã định danh

RTR = Yêu cầu truyền từ xa

Khung dữ liệu hoặc IDE = Bit mở rộng định danh

Không gian giữa các khung


Khung từ xa r0 = Bit dự trữ
Bất kỳ khung hình nào

Đình chỉ
tạm dừng Xe buýt nhàn rỗi DLC = Mã độ dài dữ liệu
Quá trình lây truyền
3
số 8
CRC = Mã dự phòng tuần hoàn

Cờ lỗi: 6 bit trội nếu nút bị lỗi

hoạt động khác 6 bit lặn.


Cuối Khung hoặc

Dấu phân cách lỗi hoặc Không gian giữa các khung Tạm dừng truyền: áp dụng cho lỗi
Dấu phân cách quá tải Khung quá tải hoặc Khung lỗi
chỉ các nút thụ động.

Quá tải Quá tải Quá tải EOF = Kết thúc khung
Dấu phân cách
Cờ 6 Tiếng

vọng 6 số 8 ACK = Bit xác nhận

Ctrl = Kiểm soát

ai15154

24,8 bxCAN ngắt

Bốn vectơ ngắt được dành riêng cho bxCAN. Mỗi nguồn ngắt có thể được kích hoạt hoặc vô hiệu
hóa độc lập bằng thanh ghi CAN Interrupt Enable (CAN_IER).

672/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Mạng vùng điều khiển (bxCAN)

Hình 236. Cờ sự kiện và tạo ngắt

CAN_IER
CHUYỂN GIAO

NGẮT

&
TMEIE
+
RQCP0
CAN_TSR RQCP1
RQCP2

FMP0
FMPIE0
& FIFO 0
NGẮT

CAN_RF0R ĐẦY ĐỦ0


FFIE0
& +

FOVR0
FOVIE0
&

FMP1
FMPIE1
& FIFO 1
NGẮT

CAN_RF1R ĐẦY ĐỦ1


FFIE1
& +

FOVR1
FOVIE1
&

errie

&
EWGIE
EWGF

&
EPVIE
CAN_ESR EPVF
+ &
&
BOFIE LỖI
BOFF CAN_MSR THAY ĐỔI TRẠNG THÁI

LỖI

&
LECIE
NGẮT
1 LEC 6
+

WKUI
WKUIE
&
CAN_MSR
SLAKI
SLKIE
&

• Ngắt truyền có thể được tạo ra bởi các sự kiện sau:

– Hộp thư truyền 0 trở nên trống, bit RQCP0 trong bộ thanh ghi CAN_TSR.

– Hộp thư truyền 1 trở nên trống, bit RQCP1 trong bộ thanh ghi CAN_TSR.

– Hộp thư truyền 2 trở nên trống, bit RQCP2 trong bộ thanh ghi CAN_TSR.

• Ngắt FIFO 0 có thể được tạo ra bởi các sự kiện sau:

– Nhận được tin nhắn mới, các bit FMP0 trong thanh ghi CAN_RF0R không phải là '00'.

– Điều kiện đầy đủ FIFO0, bit FULL0 trong bộ thanh ghi CAN_RF0R.

– Điều kiện tràn FIFO0, bit FOVR0 trong bộ thanh ghi CAN_RF0R.

• Ngắt FIFO 1 có thể được tạo ra bởi các sự kiện sau:

– Nhận được tin nhắn mới, các bit FMP1 trong thanh ghi CAN_RF1R không phải là '00'.

– Điều kiện đầy đủ FIFO1, bit FULL1 trong bộ thanh ghi CAN_RF1R.

– Điều kiện tràn FIFO1, bit FOVR1 trong bộ thanh ghi CAN_RF1R.

• Lỗi và ngắt thay đổi trạng thái có thể được tạo ra bởi các sự kiện sau:

– Tình trạng lỗi, để biết thêm chi tiết về tình trạng lỗi, hãy tham khảo thanh ghi Trạng
thái Lỗi CAN (CAN_ESR).

RM0008 Phiên bản 21 673/1136

698
Machine Translated by Google

Mạng vùng điều khiển (bxCAN) RM0008

– Điều kiện đánh thức, SOF được giám sát trên tín hiệu CAN Rx.

– Vào chế độ Ngủ.

24.9 CAN đăng ký


Các thanh ghi ngoại vi phải được truy cập bằng từ (32 bit).

24.9.1 Đăng ký bảo vệ quyền truy cập

Việc truy cập sai vào một số thanh ghi cấu hình nhất định có thể khiến phần cứng tạm thời làm
xáo trộn toàn bộ mạng CAN. Do đó, thanh ghi CAN_BTR chỉ có thể được sửa đổi bằng phần mềm
trong khi phần cứng CAN ở chế độ khởi tạo.

Mặc dù việc truyền dữ liệu không chính xác sẽ không gây ra sự cố ở cấp độ mạng CAN nhưng nó
có thể làm ảnh hưởng nghiêm trọng đến ứng dụng. Hộp thư truyền chỉ có thể được sửa đổi bằng
phần mềm khi nó ở trạng thái trống, tham khảo Hình 228.

Các giá trị bộ lọc có thể được sửa đổi bằng cách vô hiệu hóa các dãy bộ lọc liên quan hoặc bằng
cách đặt bit FINIT. Ngoài ra, việc sửa đổi cấu hình bộ lọc (tỷ lệ, chế độ và gán FIFO) trong
các thanh ghi CAN_FMxR, CAN_FSxR và CAN_FFAR chỉ có thể được thực hiện khi chế độ khởi tạo bộ
lọc được đặt (FINIT=1) trong thanh ghi CAN_FMR.

24.9.2 CAN thanh ghi điều khiển và trạng thái

Tham khảo Phần 2.2 trên trang 45 để biết danh sách các chữ viết tắt được sử dụng trong mô tả đăng ký.

Thanh ghi điều khiển chính CAN (CAN_MCR)

Độ lệch địa chỉ: 0x00


Giá trị đặt lại: 0x0001 0002

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

DBF
Kín đáo
rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CÀI LẠI TTCM ABOM AWUM NART RFLM TXFP NGỦ INRQ
Kín đáo
rs rw rw rw rw rw rw rw rw

Bit 31:17 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 16 DBF: Gỡ lỗi đóng băng

0: CÓ THỂ hoạt động trong quá trình gỡ lỗi

1: Việc thu/truyền CAN bị treo trong quá trình gỡ lỗi. FIFO tiếp nhận vẫn có thể được truy cập/kiểm

soát bình thường.

Bit 15 RESET: thiết lập lại tổng thể phần mềm bxCAN

0: Hoạt động bình thường.

1: Buộc thiết lập lại tổng thể bxCAN -> Chế độ ngủ được kích hoạt sau khi đặt lại (bit FMP và thanh ghi

CAN_MCR được khởi tạo thành giá trị đặt lại). Bit này được tự động đặt lại về 0.

Bit 14:8 Dành riêng, phải được giữ ở giá trị đặt lại.

674/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Mạng vùng điều khiển (bxCAN)

Bit 7 TTCM: Chế độ truyền thông được kích hoạt theo thời gian

0: Chế độ giao tiếp kích hoạt theo thời gian bị vô hiệu hóa.

1: Đã bật chế độ Giao tiếp kích hoạt theo thời gian

Lưu ý: Để biết thêm thông tin về chế độ Giao tiếp kích hoạt theo thời gian, hãy tham khảo Phần 24.7.2.

Bit 6 ABOM: Quản lý ngắt bus tự động

Bit này điều khiển hoạt động của phần cứng CAN khi rời khỏi trạng thái Bus-Off.

0: Trạng thái Bus-Off được để lại theo yêu cầu phần mềm, sau khi 128 lần xuất hiện của 11 bit lặn được
theo dõi và phần mềm lần đầu tiên thiết lập và xóa bit INRQ của thanh ghi CAN_MCR.

1: Trạng thái Bus-Off được phần cứng tự động để lại sau khi giám sát được 128 lần xuất hiện của 11 bit lặn.

Để biết thông tin chi tiết về trạng thái Bus-Off, hãy tham khảo Phần 24.7.6.

Bit 5 AWUM: Chế độ đánh thức tự động

Bit này điều khiển hoạt động của phần cứng CAN khi nhận tin nhắn trong chế độ Ngủ.

0: Chế độ Ngủ được để lại theo yêu cầu phần mềm bằng cách xóa bit SLEEP của thanh ghi CAN_MCR.

1: Chế độ Ngủ được phần cứng tự động để lại khi phát hiện thông báo CAN.

Bit SLEEP của thanh ghi CAN_MCR và bit SLAK của thanh ghi CAN_MSR bị xóa bằng phần cứng.

Bit 4 NART: Không tự động truyền lại

0: Phần cứng CAN sẽ tự động truyền lại tin nhắn cho đến khi truyền thành công theo tiêu chuẩn
CAN.
1: Một tin nhắn sẽ chỉ được truyền một lần, độc lập với kết quả truyền (thành công, lỗi hoặc trọng
tài bị mất).

Bit 3 RFLM: Nhận chế độ khóa FIFO

0: Nhận FIFO không bị khóa khi tràn. Khi FIFO nhận đầy, tin nhắn đến tiếp theo sẽ ghi đè lên tin
nhắn trước đó.
1: Nhận FIFO bị khóa chống tràn. Khi FIFO nhận đầy, tin nhắn đến tiếp theo sẽ bị loại bỏ.

Bit 2 TXFP: Truyền ưu tiên FIFO

Bit này kiểm soát thứ tự truyền khi một số hộp thư đang chờ xử lý cùng một lúc.

0: Mức độ ưu tiên được điều khiển bởi mã định danh của tin nhắn

1: Mức độ ưu tiên theo thứ tự yêu cầu (theo trình tự thời gian)

Bit 1 SLEEP: Yêu cầu chế độ ngủ

Bit này được thiết lập bằng phần mềm để yêu cầu phần cứng CAN chuyển sang chế độ Ngủ. Chế độ ngủ sẽ
được chuyển sang ngay khi hoạt động CAN hiện tại (truyền hoặc nhận khung CAN) hoàn tất.

Bit này được xóa bằng phần mềm để thoát khỏi chế độ Ngủ.
Bit này bị xóa bằng phần cứng khi bit AWUM được đặt và bit SOF được phát hiện trên tín hiệu CAN Rx.

Bit này được đặt sau khi đặt lại - CAN bắt đầu ở chế độ Ngủ.

RM0008 Phiên bản 21 675/1136

698
Machine Translated by Google

Mạng vùng điều khiển (bxCAN) RM0008

Bit 0 INRQ: Yêu cầu khởi tạo

Phần mềm xóa bit này để chuyển phần cứng sang chế độ bình thường. Khi 11 bit lặn liên tiếp được giám sát

trên tín hiệu Rx, phần cứng CAN được đồng bộ hóa và sẵn sàng để truyền và nhận. Phần cứng báo hiệu sự kiện
này bằng cách xóa bit INAK trong thanh ghi CAN_MSR.

Phần mềm đặt bit này để yêu cầu phần cứng CAN vào chế độ khởi tạo. Khi phần mềm đã đặt bit INRQ, phần

cứng CAN sẽ đợi cho đến khi hoạt động CAN hiện tại (truyền hoặc nhận) hoàn tất trước khi vào chế độ
khởi tạo. Phần cứng báo hiệu sự kiện này bằng cách đặt bit INAK trong thanh ghi CAN_MSR.

Thanh ghi trạng thái chính CAN (CAN_MSR)

Độ lệch địa chỉ: 0x04


Giá trị đặt lại: 0x0000 0C02

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

RX MẪU RXM TXM SLAKI WKUI ERRI SLAK INAK


Kín đáo. Kín đáo
r r r r rc_w1 rc_w1 rc_w1 r r

Bit 31:12 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 11 RX: tín hiệu CAN Rx

Theo dõi giá trị thực tế của chân CAN_RX .

Bit 10 SAMP: Điểm mẫu cuối cùng

Giá trị của RX trên điểm mẫu cuối cùng (giá trị bit nhận được hiện tại).

Bit 9 RXM: Chế độ nhận

Phần cứng CAN hiện là bộ thu.

Bit 8 TXM: Chế độ truyền

Phần cứng CAN hiện đang là máy phát.

Bit 7:5 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 4 SLAKI: Ngắt xác nhận giấc ngủ

Khi SLKIE=1, bit này được thiết lập bằng phần cứng để báo hiệu rằng bxCAN đã vào Chế độ ngủ. Khi được
đặt, bit này sẽ tạo ra ngắt thay đổi trạng thái nếu bit SLKIE trong thanh ghi CAN_IER được đặt.

Bit này được xóa bằng phần mềm hoặc bằng phần cứng khi SLAK bị xóa.

Lưu ý: Khi SLKIE=0, không thể bỏ phiếu trên SLAKI. Trong trường hợp này bit SLAK có thể
được thăm dò ý kiến.

Bit 3 WKUI: Ngắt đánh thức

Bit này được thiết lập bằng phần cứng để báo hiệu rằng bit SOF đã được phát hiện trong khi phần
cứng CAN ở chế độ Ngủ. Việc đặt bit này sẽ tạo ra ngắt thay đổi trạng thái nếu bit WKUIE trong thanh
ghi CAN_IER được đặt.

Bit này được xóa bằng phần mềm.

676/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Mạng vùng điều khiển (bxCAN)

Bit 2 ERRI: Lỗi ngắt

Bit này được thiết lập bằng phần cứng khi một bit CAN_ESR được đặt để phát hiện lỗi và ngắt tương ứng
trong CAN_IER được bật. Việc đặt bit này sẽ tạo ra ngắt thay đổi trạng thái nếu bit ERRIE trong thanh ghi
CAN_IER được đặt.
Bit này được xóa bằng phần mềm.

Bit 1 SLAK: Xác nhận giấc ngủ

Bit này được thiết lập bởi phần cứng và cho phần mềm biết rằng phần cứng CAN hiện đang ở chế độ Ngủ. Bit
này xác nhận yêu cầu chế độ Ngủ từ phần mềm (đặt bit SLEEP trong thanh ghi CAN_MCR).

Bit này bị xóa bằng phần cứng khi phần cứng CAN đã rời khỏi chế độ Ngủ (để được đồng bộ hóa trên
bus CAN). Để được đồng bộ hóa, phần cứng phải giám sát chuỗi 11 bit lặn liên tiếp trên tín hiệu
CAN RX.

Lưu ý: Quá trình thoát khỏi chế độ Ngủ được kích hoạt khi bit SLEEP trong thanh ghi CAN_MCR bị xóa. Tham khảo
bit AWUM của mô tả thanh ghi CAN_MCR để biết thông tin chi tiết về cách xóa bit SLEEP

Bit 0 INAK: Xác nhận khởi tạo

Bit này được thiết lập bởi phần cứng và cho phần mềm biết rằng phần cứng CAN hiện đang ở chế độ khởi
tạo. Bit này xác nhận yêu cầu khởi tạo từ phần mềm (đặt bit INRQ trong thanh ghi CAN_MCR).

Bit này bị xóa bằng phần cứng khi phần cứng CAN đã rời khỏi chế độ khởi tạo (để được đồng bộ hóa trên bus
CAN). Để được đồng bộ hóa, phần cứng phải giám sát chuỗi 11 bit lặn liên tiếp trên tín hiệu CAN RX.

CÓ THỂ truyền thanh ghi trạng thái (CAN_TSR)

Độ lệch địa chỉ: 0x08


Giá trị đặt lại: 0x1C00 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

THẤP2 THẤP1 THẤP0 TME2 TME1 TME0 MÃ[1:0] ABRQ2 TERR2 ALST2 TXOK2 RQCP2
Kín đáo
r r r r r r r r rs rc_w1 rc_w1 rc_w1 rc_w1

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

ABRQ1 Kín đáo TERR1 ALST1 TXOK1 RQCP1 ABRQ0 TERR0 ALST0 TXOK0 RQCP0
Kín đáo
rs Res. rs
rc_w1 rc_w1 rc_w1 rc_w1 rc_w1 rc_w1 rc_w1 rc_w1

Bit 31 LOW2: Cờ ưu tiên thấp nhất cho hộp thư 2

Bit này được thiết lập bằng phần cứng khi có nhiều hơn một hộp thư đang chờ truyền và hộp thư 2 có mức
ưu tiên thấp nhất.

Bit 30 LOW1: Cờ ưu tiên thấp nhất cho hộp thư 1

Bit này được thiết lập bằng phần cứng khi có nhiều hơn một hộp thư đang chờ truyền và hộp thư 1 có mức
ưu tiên thấp nhất.

Bit 29 LOW0: Cờ ưu tiên thấp nhất cho hộp thư 0

Bit này được thiết lập bằng phần cứng khi có nhiều hơn một hộp thư đang chờ truyền và hộp thư 0 có mức
ưu tiên thấp nhất.

Lưu ý: Các bit THẤP[2:0] được đặt thành 0 khi chỉ có một hộp thư đang chờ xử lý.

Bit 28 TME2: Truyền hộp thư 2 trống Bit này

được thiết lập bằng phần cứng khi không có yêu cầu truyền nào đang chờ xử lý cho hộp thư 2.

Bit 27 TME1: Truyền hộp thư 1 trống Bit này

được thiết lập bằng phần cứng khi không có yêu cầu truyền nào đang chờ xử lý cho hộp thư 1.

RM0008 Phiên bản 21 677/1136

698
Machine Translated by Google

Mạng vùng điều khiển (bxCAN) RM0008

Bit 26 TME0: Truyền hộp thư 0 trống

Bit này được thiết lập bằng phần cứng khi không có yêu cầu truyền nào đang chờ xử lý đối với hộp thư 0.

Bit 25:24 CODE[1:0]: Mã hộp thư

Trong trường hợp có ít nhất một hộp thư truyền trống thì giá trị mã bằng số hộp thư truyền tiếp
theo còn trống.

Trong trường hợp tất cả các hộp thư truyền đang chờ xử lý, giá trị mã bằng với số lượng hộp thư
truyền có mức ưu tiên thấp nhất.

Bit 23 ABRQ2: Hủy yêu cầu đối với hộp thư 2

Được thiết lập bằng phần mềm để hủy yêu cầu truyền cho hộp thư tương ứng.

Xóa bằng phần cứng khi hộp thư trống.


Việc thiết lập bit này không có tác dụng khi hộp thư không chờ truyền.

Bit 22:20 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 19 TERR2: Lỗi truyền của hộp thư 2

Bit này được thiết lập khi TX trước đó bị lỗi do có lỗi.

Bit 18 ALST2: Mất trọng tài cho hộp thư 2

Bit này được thiết lập khi TX trước đó bị lỗi do mất trọng tài.

Bit 17 TXOK2: Truyền OK của hộp thư 2

Phần cứng cập nhật bit này sau mỗi lần truyền.

0: Lần truyền trước đó không thành công


1: Lần truyền trước đã thành công
Bit này được thiết lập bằng phần cứng khi yêu cầu truyền trên hộp thư 2 được hoàn thành thành công.
Tham khảo Hình 228.

Bit 16 RQCP2: Yêu cầu hoàn thành hộp thư2

Được thiết lập bởi phần cứng khi yêu cầu cuối cùng (truyền hoặc hủy bỏ) đã được thực hiện.
Xóa bằng phần mềm ghi số “1” hoặc bằng phần cứng theo yêu cầu truyền (TXRQ2 được đặt trong thanh
ghi CAN_TMID2R).
Xóa bit này sẽ xóa tất cả các bit trạng thái (TXOK2, ALST2 và TERR2) cho Hộp thư 2.

Bit 15 ABRQ1: Hủy yêu cầu đối với hộp thư 1

Được thiết lập bằng phần mềm để hủy yêu cầu truyền cho hộp thư tương ứng.
Xóa bằng phần cứng khi hộp thư trống.
Việc thiết lập bit này không có tác dụng khi hộp thư không chờ truyền.

Bit 14:12 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 11 TERR1: Lỗi truyền của hộp thư1

Bit này được thiết lập khi TX trước đó bị lỗi do có lỗi.

Bit 10 ALST1: Mất trọng tài cho hộp thư1

Bit này được thiết lập khi TX trước đó bị lỗi do mất trọng tài.

Bit 9 TXOK1: Truyền OK của hộp thư1

Phần cứng cập nhật bit này sau mỗi lần truyền.

0: Lần truyền trước đó không thành công


1: Lần truyền trước đã thành công

Bit này được thiết lập bằng phần cứng khi yêu cầu truyền trên hộp thư 1 đã được hoàn thành thành
công. Tham khảo Hình 228

Bit 8 RQCP1: Yêu cầu hoàn thành hộp thư1

Được thiết lập bởi phần cứng khi yêu cầu cuối cùng (truyền hoặc hủy bỏ) đã được thực hiện.

Xóa bằng phần mềm ghi số “1” hoặc bằng phần cứng theo yêu cầu truyền (TXRQ1 được đặt trong thanh
ghi CAN_TI1R).
Xóa bit này sẽ xóa tất cả các bit trạng thái (TXOK1, ALST1 và TERR1) cho Hộp thư 1.

678/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Mạng vùng điều khiển (bxCAN)

Bit 7 ABRQ0: Hủy yêu cầu đối với hộp thư0

Được thiết lập bằng phần mềm để hủy yêu cầu truyền cho hộp thư tương ứng.
Xóa bằng phần cứng khi hộp thư trống.
Việc thiết lập bit này không có tác dụng khi hộp thư không chờ truyền.

Bit 6:4 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 3 TERR0: Lỗi truyền của hộp thư0

Bit này được thiết lập khi TX trước đó bị lỗi do có lỗi.

Bit 2 ALST0: Mất trọng tài cho hộp thư0

Bit này được thiết lập khi TX trước đó bị lỗi do mất trọng tài.

Bit 1 TXOK0: Truyền OK của hộp thư0

Phần cứng cập nhật bit này sau mỗi lần truyền.

0: Lần truyền trước đó không thành công


1: Lần truyền trước đã thành công

Bit này được thiết lập bằng phần cứng khi yêu cầu truyền trên hộp thư 1 đã được hoàn thành thành công.
Tham khảo Hình 228

Bit 0 RQCP0: Yêu cầu hoàn thành hộp thư0

Được thiết lập bởi phần cứng khi yêu cầu cuối cùng (truyền hoặc hủy bỏ) đã được thực hiện.
Xóa bằng phần mềm ghi số “1” hoặc bằng phần cứng theo yêu cầu truyền (TXRQ0 được đặt trong thanh ghi
CAN_TI0R).
Xóa bit này sẽ xóa tất cả các bit trạng thái (TXOK0, ALST0 và TERR0) cho Hộp thư 0.

CÓ THỂ nhận thanh ghi FIFO 0 (CAN_RF0R)

Độ lệch địa chỉ: 0x0C


Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

RFOM0 FOVR0 ĐẦY ĐỦ0 FMP0[1:0]


Kín đáo Res.
rs rc_w1 rc_w1 r r

Bit 31:6 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 5 RFOM0: Giải phóng hộp thư đầu ra FIFO 0

Được thiết lập bằng phần mềm để giải phóng hộp thư đầu ra của FIFO. Hộp thư đầu ra chỉ có thể được
giải phóng khi có ít nhất một thư đang chờ xử lý trong FIFO. Đặt bit này khi FIFO trống không có hiệu
lực. Nếu có ít nhất hai thư đang chờ xử lý trong FIFO, phần mềm phải giải phóng hộp thư đầu ra để truy
cập thư tiếp theo.
Xóa bằng phần cứng khi hộp thư đầu ra được giải phóng.

Bit 4 FOVR0: tràn FIFO 0

Bit này được thiết lập bằng phần cứng khi một tin nhắn mới được nhận và vượt qua bộ lọc trong khi
FIFO đã đầy.

Bit này được xóa bằng phần mềm.

Bit 3 ĐẦY ĐỦ0: FIFO 0 đầy đủ

Được thiết lập bằng phần cứng khi ba tin nhắn được lưu trữ trong FIFO.
Bit này được xóa bằng phần mềm.

Bit 2 Dành riêng, phải được giữ ở giá trị đặt lại.

RM0008 Phiên bản 21 679/1136

698
Machine Translated by Google

Mạng vùng điều khiển (bxCAN) RM0008

Bit 1:0 FMP0[1:0]: Tin nhắn FIFO 0 đang chờ xử lý

Các bit này cho biết có bao nhiêu tin nhắn đang chờ xử lý trong FIFO nhận.
FMP được tăng lên mỗi khi phần cứng lưu trữ một tin nhắn mới vào FIFO. FMP bị giảm mỗi khi phần mềm
giải phóng hộp thư đầu ra bằng cách đặt bit RFOM0.

CÓ THỂ nhận thanh ghi FIFO 1 (CAN_RF1R)

Độ lệch địa chỉ: 0x10


Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

RFOM1 FOVR1 ĐẦY ĐỦ1 FMP1[1:0]


Kín đáo Res.
rs rc_w1 rc_w1 r r

Bit 31:6 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 5 RFOM1: Giải phóng hộp thư đầu ra FIFO 1

Được thiết lập bằng phần mềm để giải phóng hộp thư đầu ra của FIFO. Hộp thư đầu ra chỉ có thể được giải
phóng khi có ít nhất một thư đang chờ xử lý trong FIFO. Đặt bit này khi FIFO trống không có hiệu lực. Nếu
có ít nhất hai thư đang chờ xử lý trong FIFO, phần mềm phải giải phóng hộp thư đầu ra để truy cập thư
tiếp theo.
Xóa bằng phần cứng khi hộp thư đầu ra được giải phóng.

Bit 4 FOVR1: tràn FIFO 1

Bit này được thiết lập bằng phần cứng khi một tin nhắn mới được nhận và vượt qua bộ lọc trong khi FIFO
đã đầy.

Bit này được xóa bằng phần mềm.

Bit 3 ĐẦY ĐỦ1: FIFO 1 đầy đủ

Được thiết lập bằng phần cứng khi ba tin nhắn được lưu trữ trong FIFO.
Bit này được xóa bằng phần mềm.

Bit 2 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 1:0 FMP1[1:0]: Tin nhắn FIFO 1 đang chờ xử lý

Các bit này cho biết có bao nhiêu tin nhắn đang chờ xử lý trong FIFO1 nhận.
FMP1 được tăng lên mỗi khi phần cứng lưu trữ một tin nhắn mới vào FIFO1. FMP bị giảm mỗi khi phần mềm
giải phóng hộp thư đầu ra bằng cách đặt bit RFOM1.

CAN ngắt cho phép đăng ký (CAN_IER)

Độ lệch địa chỉ: 0x14


Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

SLKIE WKUIE
Kín đáo
rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

LE C BOF EPV EWG FOV FF FMP FOV FF FMP TME


errie
Kín đáo I E I E I E I E
Res. IE1 IE1 IE1 IE0 IE0 IE0 I E

rw rw rw rw rw rw rw rw rw rw rw rw

680/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Mạng vùng điều khiển (bxCAN)

Bit 31:18 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 17 SLKIE: Cho phép ngắt khi ngủ 0: Không

bị ngắt khi bit SLAKI được đặt.

1: Ngắt được tạo khi bit SLAKI được đặt.

Bit 16 WKUIE: Cho phép ngắt đánh thức 0: Không bị

gián đoạn khi WKUI được đặt.

1: Ngắt được tạo khi bit WKUI được đặt.

Bit 15 ERRIE: Cho phép ngắt lỗi 0: Sẽ không

có ngắt nào được tạo ra khi tình trạng lỗi đang chờ xử lý trong CAN_ESR.

1: Một ngắt sẽ được tạo khi tình trạng lỗi đang chờ xử lý trong CAN_ESR.

Bit 14:12 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 11 LECIE: Cho phép ngắt mã lỗi cuối cùng

0: Bit ERRI sẽ không được đặt khi mã lỗi trong LEC[2:0] được đặt bằng phần cứng khi phát hiện lỗi.

1: Bit ERRI sẽ được đặt khi mã lỗi trong LEC[2:0] được đặt bằng phần cứng khi phát hiện lỗi.

Bit 10 BOFIE: Cho phép ngắt ngắt bus 0: Bit ERRI

sẽ không được đặt khi BOFF được đặt.

1: Bit ERRI sẽ được đặt khi BOFF được đặt.

Bit 9 EPVIE: Lỗi kích hoạt ngắt thụ động

0: Bit ERRI sẽ không được đặt khi EPVF được đặt.

1: Bit ERRI sẽ được đặt khi EPVF được đặt.

Bit 8 EWGIE: Cho phép ngắt cảnh báo lỗi

0: Bit ERRI sẽ không được đặt khi EWGF được đặt.

1: Bit ERRI sẽ được đặt khi EWGF được đặt.

Bit 7 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 6 FOVIE1: Cho phép ngắt tràn FIFO 0: Không ngắt khi

FOVR được đặt.

1: Ngắt tạo khi FOVR được thiết lập.

Bit 5 FFIE1: Cho phép ngắt hoàn toàn FIFO

0: Không bị gián đoạn khi bit FULL được đặt.

1: Ngắt được tạo khi bit FULL được đặt.

Bit 4 FMPIE1: Thông báo FIFO đang chờ kích hoạt ngắt 0: Không có

ngắt được tạo ra khi trạng thái của các bit FMP[1:0] không phải là 00b.

1: Ngắt được tạo khi trạng thái của các bit FMP[1:0] không phải là 00b.

Bit 3 FOVIE0: Cho phép ngắt tràn FIFO 0: Không ngắt khi

bit FOVR được đặt.

1: Ngắt được tạo khi bit FOVR được đặt.

RM0008 Phiên bản 21 681/1136

698
Machine Translated by Google

Mạng vùng điều khiển (bxCAN) RM0008

Bit 2 FFIE0: Cho phép ngắt hoàn toàn FIFO

0: Không bị gián đoạn khi bit FULL được đặt.

1: Ngắt được tạo khi bit FULL được đặt.

Bit 1 FMPIE0: Thông báo FIFO đang chờ kích hoạt ngắt

0: Không tạo ra ngắt khi trạng thái của các bit FMP[1:0] không phải là 00b.
1: Ngắt được tạo khi trạng thái của các bit FMP[1:0] không phải là 00b.

Bit 0 TMEIE: Cho phép ngắt hộp thư trống khi truyền

0: Không bị gián đoạn khi bit RQCPx được đặt.


1: Ngắt được tạo khi bit RQCPx được đặt.

Lưu ý: Tham khảo Phần 24.8: ngắt bxCAN.

Thanh ghi trạng thái lỗi CAN (CAN_ESR)

Độ lệch địa chỉ: 0x18


Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

GHI[7:0] TEC[7:0]
rrrrrrrrrrrrrrr

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

LEC[2:0] BOFF EPVF EWGF


Kín đáo Res.
rw rw rw r r r

Bit 31:24 REC[7:0]: Bộ đếm lỗi nhận

Phần thực hiện cơ chế hạn chế lỗi của giao thức CAN. Trong trường hợp xảy ra lỗi trong quá trình thu, bộ
đếm này sẽ tăng lên 1 hoặc 8 tùy thuộc vào tình trạng lỗi được xác định theo tiêu chuẩn CAN. Sau mỗi
lần nhận thành công, bộ đếm giảm đi 1 hoặc đặt lại về 120 nếu giá trị của nó cao hơn 128. Khi giá trị
bộ đếm vượt quá 127, bộ điều khiển CAN sẽ chuyển sang trạng thái lỗi thụ động.

Bit 23:16 TEC[7:0]: Byte có ý nghĩa nhỏ nhất của bộ đếm lỗi truyền 9 bit

Phần thực hiện cơ chế hạn chế lỗi của giao thức CAN.

Bit 15:7 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 6:4 LEC[2:0]: Mã lỗi cuối cùng

Trường này được thiết lập bằng phần cứng và chứa mã cho biết tình trạng lỗi của lỗi cuối cùng được phát
hiện trên bus CAN. Nếu một tin nhắn đã được truyền (nhận hoặc truyền) mà không có lỗi thì
trường này sẽ bị xóa về '0'.
Các bit LEC[2:0] có thể được đặt thành giá trị 0b111 bằng phần mềm. Chúng được cập nhật bằng phần cứng
để cho biết trạng thái liên lạc hiện tại.

000: Không có lỗi

001: Lỗi nội dung

010: Lỗi biểu mẫu

011: Lỗi xác nhận


100: Lỗi bit lặn
101: Lỗi chi phối bit

110: Lỗi CRC

111: Cài đặt bằng phần mềm

Bit 3 Dành riêng, phải được giữ ở giá trị đặt lại.

682/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Mạng vùng điều khiển (bxCAN)

Bit 2 BOFF: Cờ ngắt bus

Bit này được thiết lập bởi phần cứng khi nó chuyển sang trạng thái ngắt bus. Trạng thái ngắt bus được nhập khi

tràn TEC, lớn hơn 255, tham khảo Mục 24.7.6.

Bit 1 EPVF: Cờ thụ động lỗi

Bit này được thiết lập bằng phần cứng khi đã đạt đến giới hạn Lỗi thụ động (Bộ đếm lỗi nhận hoặc Bộ đếm lỗi

truyền>127).

Bit 0 EWGF: Cờ cảnh báo lỗi

Bit này được thiết lập bằng phần cứng khi đạt đến giới hạn cảnh báo (Bộ đếm lỗi

nhận hoặc Bộ đếm lỗi truyền 96).

Thanh ghi thời gian bit CAN (CAN_BTR)

Độ lệch địa chỉ: 0x1C


Giá trị đặt lại: 0x0123 0000

Thanh ghi này chỉ có thể được truy cập bằng phần mềm khi phần cứng CAN ở chế độ khởi
tạo.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

SILM LBKM SJW[1:0] Res. TS2[2:0] TS1[3:0]


Kín đáo
rw rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

BRP[9:0]
Kín đáo
rw rw rw rw rw rw rw rw rw rw

Bit 31 SILM: Chế độ im lặng (gỡ lỗi)

0: Hoạt động bình thường


1: Chế độ im lặng

Bit 30 LBKM: Chế độ lặp lại (gỡ lỗi)

0: Chế độ quay lại vòng lặp bị tắt

1: Đã bật Chế độ quay lại vòng lặp

Bit 29:26 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 25:24 SJW[1:0]: Độ rộng bước nhảy đồng bộ hóa lại

Các bit này xác định số lượng tử thời gian tối đa mà phần cứng CAN được phép kéo dài hoặc rút ngắn một chút

để thực hiện đồng bộ lại.

tRJW = tq x (SJW[1:0] + 1)

Bit 23 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 22:20 TS2[2:0]: Đoạn thời gian 2

Các bit này xác định số lượng lượng tử thời gian trong Đoạn thời gian 2.

tBS2 = tq x (TS2[2:0] + 1)

RM0008 Phiên bản 21 683/1136

698
Machine Translated by Google

Mạng vùng điều khiển (bxCAN) RM0008

Bit 19:16 TS1[3:0]: Đoạn thời gian 1

Các bit này xác định số lượng tử thời gian trong Đoạn thời gian
1 tBS1 = tq x (TS1[3:0] + 1)
Để biết thêm thông tin về thời gian bit, hãy tham khảo Phần 24.7.7.

Bit 15:10 Dự trữ, phải được giữ ở giá trị đặt lại.

Bits 9:0 BRP[9:0]: Bộ đếm trước tốc độ

truyền Các bit này xác định độ dài của lượng tử

thời gian. tq = (BRP[9:0]+1) x tPCLK

24.9.3 CAN hộp thư đăng ký


Chương này mô tả các thanh ghi của hộp thư truyền và nhận. Tham khảo Phần 24.7.5:
Lưu trữ tin nhắn để ánh xạ thanh ghi chi tiết.

Hộp thư truyền và nhận có cùng thanh ghi ngoại trừ: • Trường FMI

trong thanh ghi CAN_RDTxR. • Hộp thư nhận luôn

được bảo vệ chống ghi. • Hộp thư truyền chỉ

được phép ghi khi trống, bit TME tương ứng trong bộ thanh ghi CAN_TSR.

Có ba Hộp thư TX và hai Hộp thư RX Hộp thư cho phép , như trong Hình 237. Mỗi RX

truy cập vào FIFO độ sâu 3 cấp, quyền truy cập chỉ được cung cấp cho thư nhận được cũ nhất
trong FIFO. Mỗi hộp thư bao gồm bốn thanh ghi.

Hình 237. Hộp thư RX và TX

CAN_RI0R CAN_RI1R CAN_TI0R CAN_TI1R CAN_TI2R

CAN_RDT0R CAN_RDT1R CAN_TDT0R CAN_TDT1R CAN_TDT2R

CAN_RL0R CAN_RL1R CAN_TDL0R CAN_TDL1R CAN_TDL2R

CAN_RH0R CAN_RH1R CAN_TDH0R CAN_TDH1R CAN_TDH2R

FIFO0 FIFO1 Ba hộp thư Tx

684/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Mạng vùng điều khiển (bxCAN)

Thanh ghi định danh hộp thư CAN TX (CAN_TIxR) (x=0..2)

Độ lệch địa chỉ: 0x180, 0x190, 0x1A0


Giá trị đặt lại: 0xXXXX XXXX (trừ bit 0, TXRQ = 0)

Tất cả các thanh ghi TX đều được bảo vệ chống ghi khi hộp thư đang chờ truyền (đặt lại TMEx).

Thanh ghi này cũng thực hiện điều khiển yêu cầu TX (bit 0) - giá trị đặt lại 0.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

STID[10:0]/EXID[28:18] EXID[17:13]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

EXID[12:0] IDE RTR TXRQ

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:21 STID[10:0]/EXID[28:18]: Mã định danh chuẩn hoặc mã định danh mở rộng

Mã định danh tiêu chuẩn hoặc MSB của mã định danh mở rộng (tùy thuộc vào giá trị bit IDE).

Bit 20:3 EXID[17:0]: Mã định danh mở rộng


LSB của mã định danh mở rộng.

IDE Bit 2 : Phần mở rộng định danh

Bit này xác định loại thông báo nhận dạng trong hộp thư.
0: Mã định danh tiêu chuẩn.

1: Mã định danh mở rộng.

Bit 1 RTR: Yêu cầu truyền từ xa


0: Khung dữ liệu
1: Khung từ xa

Bit 0 TXRQ: Truyền yêu cầu hộp thư

Được thiết lập bằng phần mềm để yêu cầu truyền cho hộp thư tương ứng.

Xóa bằng phần cứng khi hộp thư trống.

RM0008 Phiên bản 21 685/1136

698
Machine Translated by Google

Mạng vùng điều khiển (bxCAN) RM0008

Kiểm soát độ dài dữ liệu hộp thư CAN và thanh ghi dấu thời gian (CAN_TDTxR)
(x=0..2)

Tất cả các bit của thanh ghi này được bảo vệ ghi khi hộp thư không ở trạng thái trống.

Độ lệch địa chỉ: 0x184, 0x194, 0x1A4


Giá trị đặt lại: 0xXXXX XXXX

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

THỜI GIAN[15:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

TGT DLC[3:0]
Kín đáo Kín đáo
rw rw rw rw rw

Bits 31:16 TIME[15:0]: Dấu thời gian của tin nhắn

Trường này chứa giá trị bộ định thời 16 bit được ghi lại khi truyền SOF.

Bit 15:9 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 8 TGT: Truyền thời gian toàn cầu

Bit này chỉ hoạt động khi phần cứng ở chế độ Giao tiếp kích hoạt thời gian, bit TTCM của thanh ghi
CAN_MCR được đặt.

0: Dấu thời gian TIME[15:0] không được gửi.

1: Giá trị dấu thời gian TIME[15:0] được gửi trong hai byte dữ liệu cuối cùng của tin nhắn 8 byte:
TIME[7:0] trong byte dữ liệu 7 và TIME[15:8] trong byte dữ liệu 6, thay thế dữ liệu được ghi trong
thanh ghi CAN_TDHxR[31:16] (DATA6[7:0] và DATA7[7:0]). DLC phải được lập trình thành 8 để hai byte này
được gửi qua bus CAN.

Bit 7:4 Dự trữ, phải được giữ ở giá trị đặt lại.

Bits 3:0 DLC[3:0]: Mã chiều dài dữ liệu

Trường này xác định số byte dữ liệu mà khung dữ liệu chứa hoặc yêu cầu khung từ xa.

Một thông báo có thể chứa từ 0 đến 8 byte dữ liệu, tùy thuộc vào giá trị trong trường DLC.

686/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Mạng vùng điều khiển (bxCAN)

CAN thanh ghi dữ liệu hộp thư ở mức thấp (CAN_TDLxR) (x=0..2)

Tất cả các bit của thanh ghi này được bảo vệ ghi khi hộp thư không ở trạng thái trống.

Độ lệch địa chỉ: 0x188, 0x198, 0x1A8


Giá trị đặt lại: 0xXXXX XXXX

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

DATA3[7:0] DATA2[7:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DỮ LIỆU1[7:0] DỮ LIỆU0[7:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:24 DATA3[7:0]: Byte dữ liệu 3 Byte

dữ liệu 3 của tin nhắn.

Bit 23:16 DATA2[7:0]: Byte dữ liệu 2 Byte

dữ liệu 2 của tin nhắn.

Bit 15:8 DATA1[7:0]: Byte dữ liệu 1 Byte

dữ liệu 1 của tin nhắn.

Bit 7:0 DATA0[7:0]: Byte dữ liệu 0

Byte dữ liệu 0 của tin nhắn.

Một tin nhắn có thể chứa từ 0 đến 8 byte dữ liệu và bắt đầu bằng byte 0.

Thanh ghi cao dữ liệu hộp thư CAN (CAN_TDHxR) (x=0..2)

Tất cả các bit của thanh ghi này được bảo vệ ghi khi hộp thư không ở trạng thái trống.

Độ lệch địa chỉ: 0x18C, 0x19C, 0x1AC


Giá trị đặt lại: 0xXXXX XXXX

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

DATA7[7:0] DATA6[7:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DATA5[7:0] DATA4[7:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:24 DATA7[7:0]: Byte dữ liệu 7 Byte

dữ liệu 7 của tin nhắn.

Lưu ý: Nếu TGT của thông báo này và TTCM đang hoạt động, DATA7 và DATA6 sẽ được thay thế bằng giá trị tem
TIME.

Bit 23:16 DATA6[7:0]: Byte dữ liệu 6 Byte

dữ liệu 6 của tin nhắn.

Bit 15:8 DATA5[7:0]: Byte dữ liệu 5 Byte

dữ liệu 5 của tin nhắn.

Bit 7:0 DATA4[7:0]: Byte dữ liệu 4


Byte dữ liệu 4 của tin nhắn.

RM0008 Phiên bản 21 687/1136

698
Machine Translated by Google

Mạng vùng điều khiển (bxCAN) RM0008

CÓ THỂ nhận thanh ghi định danh hộp thư FIFO (CAN_RIxR) (x=0..1)

Độ lệch địa chỉ: 0x1B0, 0x1C0


Giá trị đặt lại: 0xXXXX XXXX

Tất cả các thanh ghi RX đều được bảo vệ chống ghi.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

STID[10:0]/EXID[28:18] EXID[17:13]
rrrrrrrrrrrrrrr
15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

EXID[12:0] IDE RTR


Res.
rrrrrrrrrrrrrr

Bit 31:21 STID[10:0]/EXID[28:18]: Mã định danh chuẩn hoặc mã định danh mở rộng

Mã định danh tiêu chuẩn hoặc MSB của mã định danh mở rộng (tùy thuộc vào giá trị bit IDE).

Bit 20:3 EXID[17:0]: Mã định danh mở rộng

LSB của mã định danh mở rộng.

IDE Bit 2 : Phần mở rộng định danh

Bit này xác định loại thông báo nhận dạng trong hộp thư.
0: Mã định danh tiêu chuẩn.

1: Mã định danh mở rộng.

Bit 1 RTR: Yêu cầu truyền từ xa

0: Khung dữ liệu
1: Khung từ xa

Bit 0 Dành riêng, phải được giữ ở giá trị đặt lại.

688/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Mạng vùng điều khiển (bxCAN)

CÓ THỂ nhận kiểm soát độ dài dữ liệu hộp thư FIFO và thanh ghi tem thời gian (CAN_RDTxR)
(x=0..1)

Độ lệch địa chỉ: 0x1B4, 0x1C4


Giá trị đặt lại: 0xXXXX XXXX

Tất cả các thanh ghi RX đều được bảo vệ chống ghi.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

THỜI GIAN[15:0]

rrrrrrrrrrrrrrr
15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

FMI[7:0] DLC[3:0]
Kín đáo
rrrrrrrr rrrr

Bits 31:16 TIME[15:0]: Dấu thời gian của tin nhắn

Trường này chứa giá trị bộ đếm thời gian 16 bit được ghi lại khi phát hiện SOF.

Bit 15:8 FMI[7:0]: Lọc chỉ số khớp

Thanh ghi này chứa chỉ mục của bộ lọc mà thông báo được lưu trong hộp thư được chuyển qua. Để biết
thêm chi tiết về lọc định danh, hãy tham khảo Phần 24.7.4

Bit 7:4 Dự trữ, phải được giữ ở giá trị đặt lại.

Bits 3:0 DLC[3:0]: Mã chiều dài dữ liệu

Trường này xác định số byte dữ liệu mà khung dữ liệu chứa (0 đến 8). Nó là 0 trong trường hợp yêu cầu
khung từ xa.

RM0008 Phiên bản 21 689/1136

698
Machine Translated by Google

Mạng vùng điều khiển (bxCAN) RM0008

CÓ THỂ nhận thanh ghi dữ liệu hộp thư FIFO ở mức thấp (CAN_RDLxR) (x=0..1)

Tất cả các bit của thanh ghi này được bảo vệ ghi khi hộp thư không ở trạng thái trống.

Độ lệch địa chỉ: 0x1B8, 0x1C8


Giá trị đặt lại: 0xXXXX XXXX

Tất cả các thanh ghi RX đều được bảo vệ chống ghi.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

DATA3[7:0] DATA2[7:0]
rrrrrrrrrrrrrrr
15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DỮ LIỆU1[7:0] DỮ LIỆU0[7:0]

rrrrrrrrrrrrrrr

Bit 31:24 DATA3[7:0]: Byte dữ liệu 3 Byte

dữ liệu 3 của tin nhắn.

Bit 23:16 DATA2[7:0]: Byte dữ liệu 2 Byte

dữ liệu 2 của tin nhắn.

Bit 15:8 DATA1[7:0]: Byte dữ liệu 1 Byte

dữ liệu 1 của tin nhắn.

Bit 7:0 DATA0[7:0]: Byte dữ liệu 0 Byte

dữ liệu 0 của tin nhắn.


Một tin nhắn có thể chứa từ 0 đến 8 byte dữ liệu và bắt đầu bằng byte 0.

CÓ THỂ nhận thanh ghi cao dữ liệu hộp thư FIFO (CAN_RDHxR) (x=0..1)

Độ lệch địa chỉ: 0x1BC, 0x1CC


Giá trị đặt lại: 0xXXXX XXXX

Tất cả các thanh ghi RX đều được bảo vệ chống ghi.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

DATA7[7:0] DATA6[7:0]
rrrrrrrrrrrrrrr
15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DATA5[7:0] DATA4[7:0]
rrrrrrrrrrrrrrr

Bit 31:24 DATA7[7:0]: Byte dữ liệu 7 Byte

dữ liệu 3 của tin nhắn.

Bit 23:16 DATA6[7:0]: Byte dữ liệu 6 Byte

dữ liệu 2 của tin nhắn.

Bit 15:8 DATA5[7:0]: Byte dữ liệu 5 Byte

dữ liệu 1 của tin nhắn.

Bit 7:0 DATA4[7:0]: Byte dữ liệu 4 Byte

dữ liệu 0 của tin nhắn.

690/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Mạng vùng điều khiển (bxCAN)

24.9.4 CAN lọc các thanh ghi

CAN lọc thanh ghi chính (CAN_FMR)


Độ lệch địa chỉ: 0x200
Giá trị đặt lại: 0x2A1C 0E01

Tất cả các bit của thanh ghi này được thiết lập và xóa bằng phần mềm.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CAN2SB[5:0] CUỐI CÙNG

Kín đáo Kín đáo


rw rw rw rw rw rw rw

Bit 31:14 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 13:8 CAN2SB[5:0]: Ngân hàng khởi động CAN2

Các bit này được thiết lập và xóa bằng phần mềm. Họ xác định ngân hàng bắt đầu cho giao diện CAN2
(Slave) trong phạm vi từ 0 đến 27.

Lưu ý: Khi CAN2SB[5:0] = 28d, tất cả các bộ lọc tới CAN1 đều có thể được sử dụng.

Khi CAN2SB[5:0] được đặt thành 0, không có bộ lọc nào được gán cho CAN1.

Bit 7:1 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 0 FINIT: Chế độ khởi tạo bộ lọc

Chế độ khởi tạo cho dãy bộ lọc

0: Chế độ lọc hoạt động.

1: Chế độ khởi tạo cho bộ lọc.

RM0008 Phiên bản 21 691/1136

698
Machine Translated by Google

Mạng vùng điều khiển (bxCAN) RM0008

Thanh ghi chế độ lọc CAN (CAN_FM1R)

Độ lệch địa chỉ: 0x204


Giá trị đặt lại: 0x0000 0000

Thanh ghi này chỉ có thể được ghi khi chế độ khởi tạo bộ lọc được đặt (FINIT=1) trong thanh
ghi CAN_FMR.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

FBM27 FBM26 FBM25 FBM24 FBM23 FBM22 FBM21 FBM20 FBM19 FBM18 FBM17 FBM16
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

FBM15 FBM14 FBM13 FBM12 FBM11 FBM10 FBM9 FBM8 FBM7 FBM6 FBM5 FBM4 FBM3 FBM2 FBM1 FBM0

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Ghi chú: Tham khảo Hình 230.

Bit 31:28 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 27:0 FBMx: Chế độ lọc

Chế độ thanh ghi của Bộ lọc x.


0: Hai thanh ghi 32 bit của dãy bộ lọc x ở chế độ Mặt nạ định danh.
1: Hai thanh ghi 32-bit của dãy bộ lọc x ở chế độ Danh sách định danh.

Lưu ý: Bit 27:14 chỉ khả dụng trong các thiết bị có đường kết nối và được bảo lưu theo cách khác.

Thanh ghi tỷ lệ bộ lọc CAN (CAN_FS1R)

Độ lệch địa chỉ: 0x20C


Giá trị đặt lại: 0x0000 0000

Thanh ghi này chỉ có thể được ghi khi chế độ khởi tạo bộ lọc được đặt (FINIT=1) trong thanh
ghi CAN_FMR.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

FSC27 FSC26 FSC25 FSC24 FSC23 FSC22 FSC21 FSC20 FSC19 FSC18 FSC17 FSC16
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

FSC15 FSC14 FSC13 FSC12 FSC11 FSC10 FSC9 FSC8 FSC7 FSC6 FSC5 FSC4 FSC3 FSC2 FSC1 FSC0

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:28 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 27:0 FSCx: Cấu hình thang đo bộ lọc

Các bit này xác định cấu hình tỷ lệ của Bộ lọc 13-0.

0: Cấu hình tỷ lệ 16 bit kép


1: Cấu hình thang đo 32 bit đơn

Lưu ý: Bit 27:14 chỉ khả dụng trong các thiết bị có đường kết nối và được bảo lưu theo cách khác.

Ghi chú: Tham khảo Hình 230.

692/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Mạng vùng điều khiển (bxCAN)

CAN lọc thanh ghi gán FIFO (CAN_FFA1R)


Độ lệch địa chỉ: 0x214
Giá trị đặt lại: 0x0000 0000

Thanh ghi này chỉ có thể được ghi khi chế độ khởi tạo bộ lọc được đặt (FINIT=1) trong thanh
ghi CAN_FMR.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

FFA27 FFA26 FFA25 FFA24 FFA23 FFA22 FFA21 FFA20 FFA19 FFA18 FFA17 FFA16
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

FFA15 FFA14 FFA13 FFA12 FFA11 FFA10 FFA9 FFA8 FFA7 FFA6 FFA5 FFA4 FFA3 FFA2 FFA1 FFA0

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:28 Dự trữ, phải được giữ ở giá trị đặt lại.

Bits 27:0 FFAx: Lọc gán FIFO cho bộ lọc x

Tin nhắn đi qua bộ lọc này sẽ được lưu trữ trong FIFO được chỉ định.

0: Bộ lọc được gán cho FIFO 0

1: Bộ lọc được gán cho FIFO 1

Lưu ý: Bit 27:14 chỉ khả dụng trong các thiết bị có đường kết nối và được bảo lưu theo cách khác.

CAN lọc kích hoạt thanh ghi (CAN_FA1R)


Độ lệch địa chỉ: 0x21C
Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

FACT27 FACT26 FACT25 FACT24 FACT23 FACT22 FACT21 FACT20 FACT19 FACT18 FACT17 FACT16
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

FACT15 FACT14 FACT13 FACT12 FACT11 FACT10 FACT9 FACT8 FACT7 FACT6 FACT5 FACT4 FACT3 FACT2 FACT1 FACT0

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:28 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 27:0 FACTx: Bộ lọc đang hoạt động

Phần mềm đặt bit này để kích hoạt Filter x. Để sửa đổi các thanh ghi Filter x (CAN_FxR[0:7]), bit FACTx phải

được xóa hoặc bit FINIT của thanh ghi CAN_FMR phải được đặt.
0: Bộ lọc x không hoạt động

1: Bộ lọc x đang hoạt động

Lưu ý: Bit 27:14 chỉ khả dụng trong các thiết bị có đường kết nối và được bảo lưu theo cách khác.

RM0008 Phiên bản 21 693/1136

698
Machine Translated by Google

Mạng vùng điều khiển (bxCAN) RM0008

Ngân hàng lọc tôi đăng ký x (CAN_FiRx) (i=0..27, x=1, 2)

Độ lệch địa chỉ: 0x240..0x31C


Giá trị đặt lại: 0xXXXX XXXX

n thiết bị đường kết nối có 28 dãy lọc, i=0 .. 27, ở các thiết bị khác có 14 dãy lọc i = 0 ..13. Mỗi
dãy bộ lọc i bao gồm hai thanh ghi 32 bit, CAN_FiR[2:1].

Thanh ghi này chỉ có thể được sửa đổi khi bit FACTx của thanh ghi CAN_FAxR bị xóa hoặc khi bit FINIT của
thanh ghi CAN_FMR được đặt.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

FB31 FB30 FB29 FB28 FB27 FB26 FB25 FB24 FB23 FB22 FB21 FB20 FB19 FB18 FB17 FB16

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

FB15 FB14 FB13 FB12 FB11 FB10 FB9 FB8 FB7 FB6 FB5 FB4 FB3 FB2 FB1 FB0

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Trong tất cả các cấu hình:

Bit 31:0 FB[31:0]: Lọc bit

Mã định danh

Mỗi bit của thanh ghi chỉ định mức bit tương ứng của mã định danh dự kiến.
0: Bit chiếm ưu thế được mong đợi

1: Bit lặn được mong đợi


Mặt nạ

Mỗi bit của thanh ghi chỉ định xem bit của thanh ghi định danh liên quan có khớp với bit tương ứng của
mã định danh dự kiến hay không.

0: Không quan tâm, bit không được dùng để so sánh

1: Phải khớp, bit của mã định danh đến phải có cùng mức đã được chỉ định trong thanh ghi mã định danh
tương ứng của bộ lọc.

Ghi chú: Tùy thuộc vào cấu hình quy mô và chế độ của bộ lọc, chức năng của mỗi thanh ghi có thể khác nhau. Để biết
ánh xạ bộ lọc, mô tả chức năng và liên kết các thanh ghi mặt nạ, hãy tham khảo Phần 24.7.4.

Thanh ghi Mặt nạ/Mã định danh ở chế độ mặt nạ có ánh xạ bit giống như trong chế độ danh sách mã
định danh .

Để biết ánh xạ/địa chỉ đăng ký của các ngân hàng bộ lọc, hãy tham khảo Bảng 181.

694/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Mạng vùng điều khiển (bxCAN)

Bản đồ đăng ký 24.9.5 bxCAN

Tham khảo Phần 2.3: Bản đồ bộ nhớ cho các địa chỉ biên của thanh ghi. Trong các thiết bị
đường kết nối, các thanh ghi từ offset 0x200 đến 31C chỉ có trong CAN1.

Bảng 181. Bản đồ đăng ký bxCAN và giá trị đặt lại

1
5
ố8
s

7
6

0
3
9

2
4
Đăng ký bù đắp

11
CAN_MCR

FBD
0x000 Kín đáo Kín đáo

QRNI
PFXT
TRAN

MLFR
MCTT

MOBA

ỦGN
UV
T
ÀL
C

YỜ
IẠ

TỆI
Đặt lại giá trị 1 0 0 0 0 0 0 0 1 0

CAN_MSR

MXR

MXT

KANI
IỖL
0x004 Kín đáo Res.

KCALS
IUKW
UẪM

IKALS
Đặt lại giá trị 1100 00010

CAN_TSR
0x008 Res. Res. Res..

2TSLA

1TSLA

0TSLA
2RRET

2KOXT

1RRET

1KOXT

0RRET

0KOXT
2PCQR

1PCQR

0PCQR
2QRBA

1QRBA

0QRBA
]0:2[EMT
]0:2[PẤHT

]0:1[ÃM

Đặt lại giá trị 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

CAN_RF0R
0x00C Kín đáo

YẦĐ
0RVOF
0MOFR

]0:1[0PMF

o íđ
K
Đặt lại giá trị 000 00

CAN_RF1R
0x010 Kín đáo

YẦĐ
1RVOF
1MOFR

]0:1[1PMF

o íđ
K
Đặt lại giá trị 000 00

CAN_IER
0x014 Kín đáo Res.

1EIFF

0EIFF
EICEL
EIKLS

EIVPE
EIFOB
eirre

EIEMT
EIGWE
EIUKW

1EIVOF

0EIVOF
1EIPMF

0EIPMF
náíđ
K

0 0 0 0 0 0 0 0 0 0 0 0 0 0
o

Đặt lại giá trị

CAN_ESR GHI[7:0] TEC[7:0]


0x018 Kín đáo

FVPE
FFOB

FGWE
]0:2[CEL

náíđ
K

Giá trị đặt lại 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


o

CAN_BTR TS2[2:0] TS1[3:0] BRP[9:0]


MLIS

0x01C Kín đáo Kín đáo


MKBL

]0:1[WJS


o íđ
K

Đặt lại giá trị 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0

0x020-
Kín đáo
0x17F

CAN_TI0R STID[10:0]/EXID[28:18] EXID[17:0]


EDI

RTR

0x180
QRXT

Đặt lại giá trị xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx 0

CAN_TDT0R THỜI GIAN[15:0] DLC[3:0]


TGT

0x184 Kín đáo Kín đáo

Đặt lại giá trị xxxxxxxxxxxxxxxxx x xxxx

CAN_TDL0R DATA3[7:0] DATA2[7:0] DỮ LIỆU1[7:0] DỮ LIỆU0[7:0]


0x188

Đặt lại giá trị xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx

RM0008 Phiên bản 21 695/1136


698
Machine Translated by Google

Mạng vùng điều khiển (bxCAN) RM0008

Bảng 181. Bản đồ đăng ký bxCAN và giá trị đặt lại (tiếp theo)

1
5
ố8
s

7
6

0
3
9

2
4
Đăng ký bù đắp

CAN_TDH0R DATA7[7:0] DATA6[7:0] DATA5[7:0] DATA4[7:0]


0x18C

Đặt lại giá trị xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx

CAN_TI1R STID[10:0]/EXID[28:18] EXID[17:0]


0x190

RTR
QRXT
Đặt lại giá trị xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx 0

CAN_TDT1R THỜI GIAN[15:0] DLC[3:0]


0x194 Kín đáo Kín đáo

TGT
Đặt lại giá trị xxxxxxxxxxxxxxxxx x xxxx

CAN_TDL1R DATA3[7:0] DATA2[7:0] DỮ LIỆU1[7:0] DỮ LIỆU0[7:0]


0x198

Đặt lại giá trị xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx

CAN_TDH1R DATA7[7:0] DATA6[7:0] DATA5[7:0] DATA4[7:0]


0x19C

Đặt lại giá trị xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx

CAN_TI2R STID[10:0]/EXID[28:18] EXID[17:0]


0x1A0

RTR
QRXT
Đặt lại giá trị xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx 0

CAN_TDT2R THỜI GIAN[15:0] DLC[3:0]


0x1A4 Kín đáo Kín đáo

TGT
Đặt lại giá trị xxxxxxxxxxxxxxxxx x xxxx

CAN_TDL2R DATA3[7:0] DATA2[7:0] DỮ LIỆU1[7:0] DỮ LIỆU0[7:0]


0x1A8

Đặt lại giá trị xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx

CAN_TDH2R DATA7[7:0] DATA6[7:0] DATA5[7:0] DATA4[7:0]


0x1AC

Đặt lại giá trị xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx

CAN_RI0R STID[10:0]/EXID[28:18] EXID[17:0]


0x1B0 RTR
Đặt lại giá trị xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ná
o íđ
K

CAN_RDT0R THỜI GIAN[15:0] FMI[7:0] DLC[3:0]


0x1B4 Kín đáo

Đặt lại giá trị xxxxxxxxxxxxxxxxxxxxxxxxxxx xxxx

CAN_RDL0R DATA3[7:0] DATA2[7:0] DỮ LIỆU1[7:0] DỮ LIỆU0[7:0]


0x1B8

Đặt lại giá trị xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx

CAN_RDH0R DATA7[7:0] DATA6[7:0] DATA5[7:0] DATA4[7:0]


0x1BC

Đặt lại giá trị xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx

CAN_RI1R STID[10:0]/EXID[28:18] EXID[17:0]


RTR

0x1C0
Đặt lại giá trị xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

o íđ
K

696/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Mạng vùng điều khiển (bxCAN)

Bảng 181. Bản đồ đăng ký bxCAN và giá trị đặt lại (tiếp theo)

1
5
ố8
s

7
6

0
3
Đăng ký bù đắp

2
4
CAN_RDT1R THỜI GIAN[15:0] FMI[7:0] DLC[3:0]
0x1C4 Kín đáo

Đặt lại giá trị xxxxxxxxxxxxxxxxxxxxxxxxxxx xxxx

CAN_RDL1R DATA3[7:0] DATA2[7:0] DỮ LIỆU1[7:0] DỮ LIỆU0[7:0]


0x1C8

Đặt lại giá trị xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx

CAN_RDH1R DATA7[7:0] DATA6[7:0] DATA5[7:0] DATA4[7:0]


0x1CC

Đặt lại giá trị xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx

0x1D0-
Kín đáo
0x1FF

CAN_FMR CAN2SB[5:0]
0x200 Kín đáo Kín đáo

IN UC
ỐÙ
Đặt lại giá trị 0 0 1 1 1 0 1

G
CAN_FM1R FBM[27:0]
0x204 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0x208 Kín đáo

CAN_FS1R FSC[27:0]
0x20C Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0x210 Kín đáo

CAN_FFA1R FFA[27:0]
0x214 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0x218 Kín đáo

CAN_FA1R SỰ THẬT[27:0]
0x21C Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0x220 Kín đáo

0x224-
Kín đáo
0x23F

CAN_F0R1 FB[31:0]
0x240
Đặt lại giá trị xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx

CAN_F0R2 FB[31:0]
0x244
Đặt lại giá trị xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx

CAN_F1R1 FB[31:0]
0x248
Đặt lại giá trị xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx

RM0008 Phiên bản 21 697/1136

698
Machine Translated by Google

Mạng vùng điều khiển (bxCAN) RM0008

Bảng 181. Bản đồ đăng ký bxCAN và giá trị đặt lại (tiếp theo)

1
5
ố8
s

7
6

0
3
Đăng ký bù đắp

09
1

2
4
CAN_F1R2 FB[31:0]
0x24C

Đặt lại giá trị xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx

. . .
. . .
. . .
. . .

CAN_F27R1 FB[31:0]
0x318

Đặt lại giá trị xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx

CAN_F27R2 FB[31:0]
0x31C

Đặt lại giá trị xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx

698/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

25 Giao diện ngoại vi nối tiếp (SPI)

Các thiết bị mật độ thấp là bộ vi điều khiển STM32F101xx, STM32F102xx và STM32F103xx


trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

Các thiết bị có mật độ trung bình là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 64 đến 128 Kbyte.

Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ nhớ
Flash nằm trong khoảng từ 256 đến 512 Kbyte.

Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ


nhớ Flash nằm trong khoảng từ 768 Kbyte đến 1 Mbyte.

Các thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

25.1 giới thiệu SPI

Trong các thiết bị đường dây kết nối và mật độ XL và mật độ cao, giao diện SPI cung cấp hai
chức năng chính, hỗ trợ giao thức SPI hoặc giao thức âm thanh I2S . Theo mặc định, chức năng SPI
được chọn. Có thể chuyển giao diện từ SPI sang I2S bằng phần mềm.

Trong các thiết bị Cat.1 và Cat.2, giao thức I2S không khả dụng.

Giao diện ngoại vi nối tiếp (SPI) cho phép giao tiếp nối tiếp một nửa/song công hoàn
toàn, đồng bộ với các thiết bị bên ngoài. Giao diện có thể được cấu hình làm giao diện chính và
trong trường hợp này, nó cung cấp đồng hồ giao tiếp (SCK) cho thiết bị phụ bên ngoài. Giao
diện cũng có khả năng hoạt động trong cấu hình multimaster.

Nó có thể được sử dụng cho nhiều mục đích khác nhau, bao gồm truyền đồng bộ đơn giản trên hai
đường truyền với đường dữ liệu hai chiều hoặc liên lạc đáng tin cậy bằng cách sử dụng kiểm tra CRC.

I2S cũng là một giao diện truyền thông nối tiếp đồng bộ. Nó có thể giải quyết bốn tiêu chuẩn âm
thanh khác nhau bao gồm tiêu chuẩn I2S Philips, tiêu chuẩn phù hợp với MSB và LSB và tiêu chuẩn
PCM. Nó có thể hoạt động như một thiết bị phụ hoặc thiết bị chủ ở chế độ song công hoàn toàn
(sử dụng 4 chân) hoặc ở chế độ bán song công (sử dụng 6 chân). Đồng hồ chính có thể được cung
cấp bởi giao diện cho thành phần phụ bên ngoài khi I2S được định cấu hình làm giao tiếp
bậc thầy.

Cảnh báo: Vì một số chân SPI3/I2S3 được chia sẻ với các chân JTAG
(SPI3_NSS/I2S3_WS với JTDI và SPI3_SCK/I2S3_CK với JTDO), chúng không
được điều khiển bởi bộ điều khiển IO và được dành riêng cho việc
sử dụng JTAG (sau mỗi lần Đặt lại).
Với mục đích này, trước khi định cấu hình các chân SPI3/I2S3, người
dùng phải tắt JTAG và sử dụng giao diện SWD (khi gỡ lỗi ứng dụng)

hoặc tắt cả hai giao diện JTAG/SWD (đối với các ứng dụng độc lập). Để
biết thêm thông tin về cấu hình của các chân giao diện
JTAG/SWD, hãy tham khảo Phần 9.3.5: Ánh xạ lại chức năng thay thế JTAG/
SWD.

RM0008 Phiên bản 21 699/1136

751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

25,2 Các tính năng chính của SPI và I2S

25.2.1 tính năng SPI

• Truyền đồng bộ song công hoàn toàn trên ba dòng

• Truyền đồng bộ đơn giản trên hai đường có hoặc không có đường dữ liệu hai chiều
• Lựa chọn định dạng khung truyền 8 hoặc 16 bit

• Hoạt động chính hoặc phụ

• Khả năng chế độ Multimaster

• 8 bộ đếm trước tốc độ baud ở chế độ chính ( tối đa fPCLK/2)

• Tần số chế độ phụ (fPCLK/2 max)


• Giao tiếp nhanh hơn cho cả chủ và nô lệ

• Quản lý NSS bằng phần cứng hoặc phần mềm cho cả master và Slave: thay đổi động
của các hoạt động chủ/phụ

• Có thể lập trình được pha và cực của đồng hồ

• Lập trình thứ tự dữ liệu với dịch chuyển MSB-first hoặc LSB-first

• Cờ truyền và nhận chuyên dụng có khả năng ngắt

• Cờ trạng thái bận bus SPI


• Tính năng CRC phần cứng để truyền thông tin cậy:

– Giá trị CRC có thể được truyền dưới dạng byte cuối cùng ở chế độ Tx

– Tự động kiểm tra lỗi CRC cho byte nhận được cuối cùng

• Lỗi chế độ chính, cờ tràn và lỗi CRC có khả năng ngắt


• Bộ đệm truyền và nhận 1 byte có khả năng DMA: Yêu cầu Tx và Rx

700/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

25.2.2 Tính năng I2S

• Giao tiếp bán song công (chỉ máy phát hoặc máy thu)

• Hoạt động chính hoặc phụ


• Bộ đếm gộp tuyến tính có thể lập trình 8 bit để đạt tần số mẫu âm thanh chính xác (từ 8
kHz đến 192 kHz)

• Định dạng dữ liệu có thể là 16 bit, 24 bit hoặc 32 bit

• Khung gói được cố định thành 16 bit (khung dữ liệu 16 bit) hoặc 32 bit (khung dữ liệu 16 bit, 24
bit, 32 bit) theo kênh âm thanh

• Lập trình phân cực đồng hồ (trạng thái ổn định)

• Cờ tràn trong chế độ truyền phụ và cờ tràn trong chế độ nhận (chính
và nô lệ)
• Thanh ghi 16-bit để truyền và nhận với một thanh ghi dữ liệu cho cả hai bên kênh

• Các giao thức I2S được hỗ trợ :

– Chuẩn I2S Phillipps

– Căn chuẩn MSB (căn lề trái)

– Chuẩn LSB-justified (căn lề phải)

– Chuẩn PCM (có đồng bộ khung ngắn và dài trên khung kênh 16 bit
hoặc khung dữ liệu 16 bit được mở rộng thành khung kênh 32 bit)

• Hướng dữ liệu luôn là MSB đầu tiên

• Khả năng DMA để truyền và nhận (rộng 16 bit)

• Đồng hồ chính có thể được xuất ra để điều khiển thành phần âm thanh bên ngoài. Tỷ lệ được
cố định ở 256 × FS (trong đó FS là tần số lấy mẫu âm thanh)
• Trong các thiết bị có đường kết nối, cả I2S (I2S2 và I2S3) đều có PLL chuyên dụng
(PLL3) để tạo ra đồng hồ chính xác hơn nữa.

RM0008 Phiên bản 21 701/1136

751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

25,3 Mô tả chức năng SPI

25.3.1 Mô tả chung
Sơ đồ khối của SPI được hiển thị trong Hình 238.

Hình 238. Sơ đồ khối SPI

Bus địa chỉ và dữ liệu

Đọc

Bộ đệm Rx

SPI_CR2
MOSI
TXE RXNE LỖI TXDM RXDM
0 0 SSOE
I E I E I E AEN AEN

MISO Đăng kí ca
LSB đầu tiên
SPI_SR

MOD CRC
BSY OVR 0 0 TXE RXNE
Bộ đệm Tx F LỖI

Viết

0
Kiểm soát truyền thông
1

SCK
BR[2:0]
Máy phát tốc độ Baud

LSB
SPE BR2 BR1 BR0 MSTR CPOL CPHA
ĐẦU TIÊN

SPI_CR1

Logic điều khiển chính BIDI BIDI CRC RX


CRCEN DFF SSM SSI
CÁCH THỨC OE Kế tiếp CHỈ MỘT

NSS

MS51604V1

Thông thường, SPI được kết nối với các thiết bị bên ngoài thông qua bốn chân:

• MISO: Dữ liệu Master In/Slave Out. Chân này có thể được sử dụng để truyền dữ liệu ở chế độ phụ
và nhận dữ liệu ở chế độ chính.

• MOSI: Dữ liệu Master Out/Slave In. Chân này có thể được sử dụng để truyền dữ liệu ở chế
độ chính và nhận dữ liệu ở chế độ phụ.

• SCK: Đầu ra Serial Clock cho SPI master và đầu vào cho SPI Slave.

• NSS: Lựa chọn nô lệ. Đây là chân tùy chọn để chọn thiết bị phụ. Chân này hoạt động như một
'chọn chip' để cho phép SPI chủ giao tiếp với các nô lệ riêng lẻ và tránh tranh chấp
trên các đường dữ liệu. Đầu vào NSS phụ có thể được điều khiển bởi các cổng IO tiêu chuẩn
trên thiết bị chính. Chân NSS cũng có thể được sử dụng làm đầu ra nếu được bật (bit SSOE)
và được điều khiển ở mức thấp nếu SPI ở cấu hình chính. Theo cách này, tất cả các chân
NSS từ các thiết bị được kết nối với chân NSS chính sẽ thấy mức thấp và trở thành nô lệ
khi chúng được cấu hình ở chế độ phần cứng NSS. Khi được định cấu hình ở chế độ chính
với NSS được định cấu hình làm đầu vào (MSTR=1 và SSOE=0) và nếu NSS được kéo xuống mức
thấp, SPI sẽ chuyển sang trạng thái lỗi chế độ chính: bit MSTR sẽ tự động bị xóa và
thiết bị được định cấu hình ở chế độ phụ (tham khảo Mục 25.3.10).

Một ví dụ cơ bản về kết nối giữa một master và một Slave được minh họa trong Hình 239.

702/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

Hình 239. Ứng dụng chính/đơn phụ

Bậc thầy Nô lệ

MSBit LSBit MSBit LSBit


MISO MISO
Thanh ghi dịch 8 bit Thanh ghi dịch 8 bit

MOSI MOSI

đồng hồ SPI SCK SCK

máy phát điện

NSS(1) NSS(1)
VDD

Không được sử dụng nếu NSS được quản lý

bằng phần mềm


ai14745

1. Ở đây, chân NSS được cấu hình làm đầu vào.

Các chân MOSI được kết nối với nhau và các chân MISO được kết nối với nhau. Bằng cách này,
dữ liệu được truyền nối tiếp giữa chủ và phụ (bit quan trọng nhất được chuyển trước).

Việc giao tiếp luôn được khởi xướng bởi chủ. Khi thiết bị chính truyền dữ liệu đến thiết bị
phụ qua chân MOSI, thiết bị phụ sẽ phản hồi qua chân MISO. Điều này ngụ ý giao tiếp song công
hoàn toàn với cả dữ liệu ra và dữ liệu được đồng bộ hóa với cùng một tín hiệu đồng hồ
(được cung cấp bởi thiết bị chính thông qua chân SCK).

Quản lý chân chọn nô lệ (NSS)

Quản lý lựa chọn nô lệ phần cứng hoặc phần mềm có thể được thiết lập bằng cách sử dụng bit SSM
trong thanh ghi SPI_CR1.

• Phần mềm quản lý NSS (SSM=1)

Thông tin chọn nô lệ được điều khiển nội bộ bởi giá trị của bit SSI trong thanh ghi
SPI_CR1. Chân NSS bên ngoài vẫn còn trống cho các mục đích sử dụng ứng dụng khác.

• Quản lý NSS phần cứng (SSM = 0)

Có thể có hai cấu hình tùy thuộc vào cấu hình đầu ra NSS (bit SSOE trong thanh ghi SPI_CR2).

– Đã bật đầu ra NSS (SSM = 0, SSOE = 1)

Cấu hình này chỉ được sử dụng khi thiết bị hoạt động ở chế độ chính. Tín hiệu NSS
được điều khiển ở mức thấp khi thiết bị chủ bắt đầu liên lạc và được giữ ở mức
thấp cho đến khi SPI bị tắt.

– Đầu ra NSS bị vô hiệu hóa (SSM = 0, SSOE = 0)

Cấu hình này cho phép khả năng đa chủ cho các thiết bị hoạt động ở chế độ chính.
Đối với các thiết bị được đặt làm nô lệ, chân NSS hoạt động như đầu vào NSS cổ
điển: nô lệ được chọn khi NSS ở mức thấp và được bỏ chọn khi NSS ở mức cao.

RM0008 Phiên bản 21 703/1136

751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

Pha đồng hồ và cực đồng hồ

Bốn mối quan hệ thời gian có thể có thể được chọn bằng phần mềm, sử dụng các bit CPOL và CPHA trong
thanh ghi SPI_CR1. Bit CPOL (phân cực đồng hồ) kiểm soát giá trị trạng thái ổn định của đồng hồ khi
không có dữ liệu nào được truyền. Bit này ảnh hưởng đến cả chế độ master và Slave. Nếu CPOL được đặt
lại, chân SCK có trạng thái không hoạt động ở mức thấp. Nếu CPOL được đặt, chân SCK có trạng thái
không hoạt động ở mức cao.

Nếu bit CPHA (pha đồng hồ) được đặt, cạnh thứ hai trên chân SCK (cạnh giảm nếu bit CPOL được đặt
lại, cạnh tăng nếu bit CPOL được đặt) là nhấp nháy chụp MSBit. Dữ liệu được chốt khi xảy ra chuyển
đổi đồng hồ thứ hai. Nếu bit CPHA được đặt lại, cạnh đầu tiên trên chân SCK (cạnh giảm nếu bit CPOL
được đặt, cạnh tăng nếu bit CPOL được đặt lại) là nhấp nháy chụp MSBit. Dữ liệu được chốt khi xảy
ra chuyển đổi đồng hồ đầu tiên.

Sự kết hợp giữa các bit CPOL (phân cực đồng hồ) và CPHA (pha đồng hồ) chọn cạnh đồng hồ thu thập dữ
liệu.

Hình 240 thể hiện quá trình truyền SPI với bốn sự kết hợp của các bit CPHA và CPOL.
Sơ đồ có thể được hiểu là sơ đồ định thời chính hoặc phụ trong đó chân SCK, chân MISO, chân MOSI
được kết nối trực tiếp giữa thiết bị chính và thiết bị phụ.

Ghi chú: Trước khi thay đổi bit CPOL/CPHA, SPI phải được tắt bằng cách đặt lại bit SPE.

Master và Slave phải được lập trình với cùng chế độ định giờ.

Trạng thái không hoạt động của SCK phải tương ứng với cực được chọn trong thanh ghi SPI_CR1 (bằng
cách kéo SCK lên nếu CPOL=1 hoặc kéo SCK xuống nếu CPOL=0).

Định dạng khung dữ liệu (8 hoặc 16 bit) được chọn thông qua bit DFF trong thanh ghi SPI_CR1 và xác
định độ dài dữ liệu trong quá trình truyền/nhận.

704/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

Hình 240. Sơ đồ định thời đồng hồ dữ liệu

CPHA =1
CPOL = 1

CPOL = 0

MOSI MSBit LSBit

MISO MSBit LSBit

NSS

(làm nô lệ)

Chụp nhấp nháy

CPHA =0

CPOL = 1

CPOL = 0

MOSI MSBit LSBit

MISO MSBit LSBit

NSS
(làm nô lệ)

Chụp nhấp nháy

ai17154d

1. Các thời gian này được hiển thị bằng việc đặt lại bit LSBFIRST trong thanh ghi SPI_CR1.

Định dạng khung dữ liệu

Dữ liệu có thể được chuyển ra ngoài MSB-first hoặc LSB-first tùy thuộc vào giá trị
của bit LSBFIRST trong thanh ghi SPI_CR1.

Mỗi khung dữ liệu dài 8 hoặc 16 bit tùy thuộc vào kích thước của dữ liệu được lập trình
bằng bit DFF trong thanh ghi SPI_CR1. Định dạng khung dữ liệu đã chọn có thể áp dụng
cho việc truyền và/hoặc nhận.

RM0008 Phiên bản 21 705/1136

751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

25.3.2 Định cấu hình SPI ở chế độ nô lệ

Trong cấu hình phụ, đồng hồ nối tiếp được nhận trên chân SCK từ thiết bị chính. Giá trị được đặt
trong các bit BR[2:0] trong thanh ghi SPI_CR1 không ảnh hưởng đến tốc độ truyền dữ liệu.

Ghi chú: Nên kích hoạt SPI Slave trước khi Master gửi đồng hồ. Nếu không, việc truyền dữ liệu không mong muốn

có thể xảy ra. Thanh ghi dữ liệu của nô lệ cần phải sẵn sàng trước cạnh đầu tiên của đồng hồ giao tiếp hoặc
trước khi kết thúc quá trình giao tiếp đang diễn ra. Bắt buộc phải đặt cực tính của đồng hồ giao
tiếp về giá trị trạng thái ổn định trước khi bật máy phụ và máy chủ.

Thực hiện theo quy trình bên dưới để định cấu hình SPI ở chế độ phụ:

Thủ tục

1. Đặt bit DFF để xác định định dạng khung dữ liệu 8 hoặc 16 bit

2. Chọn các bit CPOL và CPHA để xác định một trong bốn mối quan hệ giữa
truyền dữ liệu và đồng hồ nối tiếp (xem Hình 240). Để truyền dữ liệu chính xác, các bit CPOL và CPHA
phải được cấu hình theo cùng một cách trong thiết bị phụ và thiết bị chính.

3. Định dạng khung (MSB-first hoặc LSB-first tùy thuộc vào giá trị của bit LSBFIRST trong thanh ghi SPI_CR1)
phải giống với thiết bị chính.

4. Ở chế độ Phần cứng (tham khảo Quản lý chân chọn phụ (NSS)), chân NSS phải được kết nối với tín hiệu
mức thấp trong chuỗi truyền byte hoàn chỉnh. Trong chế độ phần mềm NSS, đặt bit SSM và xóa bit SSI
trong thanh ghi SPI_CR1.

5. Xóa bit MSTR và đặt bit SPE (cả trong thanh ghi SPI_CR1) để gán
chân cho các chức năng thay thế.

Trong cấu hình này, chân MOSI là đầu vào dữ liệu và chân MISO là đầu ra dữ liệu.

Trình tự truyền

Byte dữ liệu được tải song song vào bộ đệm Tx trong chu kỳ ghi.

Trình tự truyền bắt đầu khi thiết bị phụ nhận được tín hiệu đồng hồ và bit quan trọng nhất của dữ liệu trên
chân MOSI của nó. Các bit còn lại (7 bit ở định dạng khung dữ liệu 8 bit và 15 bit ở định dạng khung dữ liệu
16 bit) được tải vào thanh ghi thay đổi. Cờ TXE trong thanh ghi SPI_SR được đặt khi truyền dữ liệu từ Bộ
đệm Tx sang thanh ghi dịch chuyển và ngắt được tạo ra nếu bit TXEIE trong thanh ghi SPI_CR2 được đặt.

Nhận chuỗi

Đối với người nhận, khi quá trình truyền dữ liệu hoàn tất:

• Dữ liệu trong thanh ghi shift được chuyển tới Bộ đệm Rx và cờ RXNE (SPI_SR
đăng ký) được thiết lập

• Ngắt được tạo nếu bit RXNEIE được đặt trong thanh ghi SPI_CR2.

Sau cạnh đồng hồ lấy mẫu cuối cùng, bit RXNE được thiết lập, một bản sao của byte dữ liệu nhận được trong
thanh ghi dịch chuyển sẽ được chuyển đến bộ đệm Rx. Khi thanh ghi SPI_DR được đọc, thiết bị ngoại vi
SPI trả về giá trị được đệm này.

Việc xóa bit RXNE được thực hiện bằng cách đọc thanh ghi SPI_DR.

706/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

25.3.3 Định cấu hình SPI ở chế độ chính

Trong cấu hình chính, đồng hồ nối tiếp được tạo trên chân SCK.

Thủ tục

1. Chọn các bit BR[2:0] để xác định tốc độ truyền của đồng hồ nối tiếp (xem thanh ghi SPI_CR1).

2. Chọn các bit CPOL và CPHA để xác định một trong bốn mối quan hệ giữa việc truyền dữ liệu và
đồng hồ nối tiếp (xem Hình 240).
3. Đặt bit DFF để xác định định dạng khung dữ liệu 8 hoặc 16 bit

4. Định cấu hình bit LSBFIRST trong thanh ghi SPI_CR1 để xác định định dạng khung.
5. Nếu chân NSS được yêu cầu ở chế độ đầu vào, ở chế độ phần cứng, hãy kết nối chân NSS với
tín hiệu mức cao trong chuỗi truyền byte hoàn chỉnh. Trong chế độ phần mềm NSS, đặt bit SSM
và SSI trong thanh ghi SPI_CR1. Nếu chân NSS được yêu cầu ở chế độ đầu ra thì chỉ nên đặt
bit SSOE.

6. Các bit MSTR và SPE phải được đặt (chúng chỉ được đặt nếu chân NSS được kết nối với tín hiệu
mức cao).

Trong cấu hình này, chân MOSI là đầu ra dữ liệu và chân MISO là đầu vào dữ liệu.

Trình tự truyền

Trình tự truyền bắt đầu khi một byte được ghi vào Bộ đệm Tx.

Byte dữ liệu được tải song song vào thanh ghi dịch chuyển (từ bus bên trong) trong quá trình
truyền bit đầu tiên và sau đó được chuyển ra nối tiếp sang MSB chân MOSI trước hoặc LSB
trước tùy thuộc vào bit LSBFIRST trong thanh ghi SPI_CR1. Cờ TXE được đặt khi truyền dữ liệu từ
Bộ đệm Tx sang thanh ghi dịch và ngắt được tạo ra nếu bit TXEIE trong thanh ghi SPI_CR2 được đặt.

Nhận chuỗi

Đối với người nhận, khi quá trình truyền dữ liệu hoàn tất:

• Dữ liệu trong thanh ghi dịch được chuyển tới Bộ đệm RX và cờ RXNE được đặt

• Một ngắt được tạo ra nếu bit RXNEIE được đặt trong thanh ghi SPI_CR2

Ở cạnh đồng hồ lấy mẫu cuối cùng, bit RXNE được thiết lập, một bản sao của byte dữ liệu nhận được
trong thanh ghi dịch chuyển sẽ được chuyển đến bộ đệm Rx. Khi thanh ghi SPI_DR được đọc,
thiết bị ngoại vi SPI trả về giá trị được đệm này.

Việc xóa bit RXNE được thực hiện bằng cách đọc thanh ghi SPI_DR.

Luồng truyền liên tục có thể được duy trì nếu dữ liệu tiếp theo được truyền được đặt vào bộ đệm
Tx sau khi quá trình truyền được bắt đầu. Lưu ý rằng cờ TXE phải là '1 trước khi thực hiện bất
kỳ nỗ lực ghi bộ đệm Tx nào.

Ghi chú: Khi một chủ đang giao tiếp với các nô lệ SPI cần được bỏ chọn giữa các lần truyền, chân NSS
phải được cấu hình là GPIO hoặc một GPIO khác phải được sử dụng và bật tắt bằng phần mềm.

25.3.4 Định cấu hình SPI cho giao tiếp bán song công

SPI có khả năng hoạt động ở chế độ bán song công với 2 cấu hình.
• 1 đồng hồ và 1 dây dữ liệu 2 chiều

• 1 đồng hồ và 1 dây dữ liệu (chỉ nhận hoặc chỉ truyền)

RM0008 Phiên bản 21 707/1136

751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

1 đồng hồ và 1 dây dữ liệu hai chiều (BIDIMODE = 1)

Chế độ này được bật bằng cách đặt bit BIDIMODE trong thanh ghi SPI_CR1. Ở chế độ này, SCK
được sử dụng cho đồng hồ và MOSI ở chế độ chính hoặc MISO ở chế độ phụ được sử dụng để
truyền dữ liệu. Hướng truyền (Đầu vào/Đầu ra) được chọn bởi bit BIDIOE trong thanh ghi
SPI_CR1. Khi bit này bằng 1, dòng dữ liệu là đầu ra nếu không nó là đầu vào.

1 đồng hồ và 1 dây dữ liệu một chiều (BIDIMODE = 0)

Ở chế độ này, ứng dụng có thể sử dụng SPI ở chế độ chỉ truyền hoặc ở chế độ chỉ nhận.

• Chế độ chỉ truyền tương tự như chế độ song công hoàn toàn (BIDIMODE=0, RXONLY=0):
dữ liệu được truyền trên chân truyền (MOSI ở chế độ chính hoặc MISO ở chế độ phụ) và
chân nhận (MISO ở chế độ chính hoặc MOSI ở chế độ phụ) có thể được sử dụng làm IO cho
mục đích chung. Trong trường hợp này, ứng dụng chỉ cần bỏ qua bộ đệm Rx (nếu thanh ghi
dữ liệu được đọc thì nó không chứa giá trị nhận được).
• Ở chế độ chỉ nhận, ứng dụng có thể tắt chức năng đầu ra SPI bằng cách đặt bit RXONLY trong
thanh ghi SPI_CR1. Trong trường hợp này, nó giải phóng chân IO truyền (MOSI ở chế độ
chính hoặc MISO ở chế độ phụ), do đó nó có thể được sử dụng cho các mục đích khác.

Để bắt đầu liên lạc ở chế độ chỉ nhận, hãy định cấu hình và bật SPI:
• Ở chế độ chính, quá trình giao tiếp bắt đầu ngay lập tức và dừng khi bit SPE bị xóa và
quá trình nhận hiện tại dừng lại. Không cần đọc cờ BSY ở chế độ này. Nó luôn được đặt
khi giao tiếp SPI đang diễn ra.
• Ở chế độ nô lệ, SPI tiếp tục nhận miễn là NSS được kéo xuống (hoặc bit SSI bị xóa ở chế
độ phần mềm NSS) và SCK đang chạy.

25.3.5 Quy trình truyền và nhận dữ liệu

Bộ đệm Rx và Tx

Khi tiếp nhận, dữ liệu được nhận và sau đó được lưu trữ vào bộ đệm Rx bên trong trong khi
Khi truyền, dữ liệu trước tiên được lưu trữ vào bộ đệm Tx bên trong trước khi được truyền đi.

Quyền truy cập đọc của thanh ghi SPI_DR trả về giá trị được đệm Rx trong khi quyền truy
cập ghi vào SPI_DR sẽ lưu dữ liệu đã ghi vào bộ đệm Tx.

708/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

Trình tự bắt đầu ở chế độ chính

• Ở chế độ song công hoàn toàn (BIDIMODE=0 và RXONLY=0)

– Trình tự bắt đầu khi dữ liệu được ghi vào thanh ghi SPI_DR (bộ đệm Tx).

– Sau đó, dữ liệu được tải song song từ bộ đệm Tx vào thanh ghi dịch 8 bit trong quá
trình truyền bit đầu tiên và sau đó được chuyển ra nối tiếp sang chân MOSI.

– Đồng thời, dữ liệu nhận được trên chân MISO được chuyển nối tiếp sang chân 8-
thanh ghi dịch bit và sau đó được tải song song vào thanh ghi SPI_DR (bộ đệm Rx).
• Ở chế độ chỉ nhận một chiều (BIDIMODE=0 và RXONLY=1)

– Chuỗi bắt đầu ngay khi SPE=1

– Chỉ bộ thu được kích hoạt và dữ liệu nhận được trên chân MISO được chuyển nối tiếp
sang thanh ghi dịch chuyển 8 bit và sau đó được tải song song vào thanh ghi SPI_DR
(bộ đệm Rx).
• Ở chế độ hai chiều, khi truyền (BIDIMODE=1 và BIDIOE=1)

– Trình tự bắt đầu khi dữ liệu được ghi vào thanh ghi SPI_DR (bộ đệm Tx).

– Sau đó, dữ liệu được tải song song từ bộ đệm Tx vào thanh ghi dịch 8 bit trong quá
trình truyền bit đầu tiên và sau đó được chuyển ra nối tiếp sang chân MOSI.
– Không nhận được dữ liệu.
• Ở chế độ hai chiều, khi nhận (BIDIMODE=1 và BIDIOE=0)

– Trình tự bắt đầu ngay khi SPE=1 và BIDIOE=0.

– Dữ liệu nhận được trên chân MOSI được chuyển nối tiếp sang thanh ghi dịch chuyển 8
bit và sau đó được tải song song vào thanh ghi SPI_DR (bộ đệm Rx).

– Bộ phát không được kích hoạt và không có dữ liệu nào được chuyển nối tiếp sang MOSI
ghim.

Trình tự bắt đầu ở chế độ nô lệ

• Ở chế độ song công hoàn toàn (BIDIMODE=0 và RXONLY=0)

– Trình tự bắt đầu khi thiết bị phụ nhận được tín hiệu đồng hồ và bit đầu tiên của dữ
liệu trên chân MOSI của nó. 7 bit còn lại được nạp vào thanh ghi dịch.

– Đồng thời, dữ liệu được tải song song từ bộ đệm Tx vào thanh ghi dịch 8 bit trong quá
trình truyền bit đầu tiên, sau đó được chuyển ra nối tiếp sang chân MISO. Phần
mềm phải ghi dữ liệu để gửi trước khi thiết bị chính SPI bắt đầu quá trình
truyền.
• Ở chế độ chỉ nhận một chiều (BIDIMODE=0 và RXONLY=1)

– Trình tự bắt đầu khi thiết bị phụ nhận được tín hiệu đồng hồ và bit đầu tiên của dữ
liệu trên chân MOSI của nó. 7 bit còn lại được nạp vào thanh ghi dịch.

– Bộ phát không được kích hoạt và không có dữ liệu nào được chuyển nối tiếp sang MISO
ghim.

• Ở chế độ hai chiều, khi truyền (BIDIMODE=1 và BIDIOE=1)

– Trình tự bắt đầu khi thiết bị phụ nhận được tín hiệu đồng hồ và bit đầu tiên trong bộ
đệm Tx được truyền trên chân MISO.

– Dữ liệu sau đó được tải song song từ bộ đệm Tx vào thanh ghi dịch 8 bit
trong quá trình truyền bit đầu tiên và sau đó chuyển sang chân MISO. Các

RM0008 Phiên bản 21 709/1136

751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

phần mềm phải ghi dữ liệu để gửi trước khi thiết bị SPI chính bắt đầu quá trình truyền.

– Không nhận được dữ liệu.

• Ở chế độ hai chiều, khi nhận (BIDIMODE=1 và BIDIOE=0)

– Trình tự bắt đầu khi thiết bị phụ nhận được tín hiệu đồng hồ và bit đầu tiên của dữ liệu trên
chân MISO của nó.

– Dữ liệu nhận được trên chân MISO được chuyển nối tiếp sang thanh ghi dịch chuyển 8 bit và
sau đó được tải song song vào thanh ghi SPI_DR (bộ đệm Rx).

– Bộ phát không được kích hoạt và không có dữ liệu nào được chuyển nối tiếp sang MISO
ghim.

Xử lý việc truyền và nhận dữ liệu

Cờ TXE (bộ đệm Tx trống) được đặt khi dữ liệu được truyền từ bộ đệm Tx sang thanh ghi dịch. Nó chỉ
ra rằng bộ đệm Tx bên trong đã sẵn sàng để tải dữ liệu tiếp theo.
Một ngắt có thể được tạo ra nếu bit TXEIE trong thanh ghi SPI_CR2 được đặt. Việc xóa bit TXE được
thực hiện bằng cách ghi vào thanh ghi SPI_DR.

Ghi chú: Phần mềm phải đảm bảo rằng cờ TXE được đặt thành 1 trước khi thử ghi vào bộ đệm Tx. Nếu không, nó
sẽ ghi đè dữ liệu được ghi trước đó vào bộ đệm Tx.

Cờ RXNE (bộ đệm Rx không trống) được đặt ở cạnh đồng hồ lấy mẫu cuối cùng, khi dữ liệu được truyền
từ thanh ghi dịch sang bộ đệm Rx. Nó chỉ ra rằng dữ liệu đã sẵn sàng để đọc từ thanh ghi SPI_DR. Một
ngắt có thể được tạo ra nếu bit RXNEIE trong thanh ghi SPI_CR2 được đặt. Việc xóa bit RXNE
được thực hiện bằng cách đọc thanh ghi SPI_DR.

Đối với một số cấu hình, cờ BSY có thể được sử dụng trong lần truyền dữ liệu cuối cùng để đợi cho
đến khi quá trình truyền hoàn tất.

Quy trình truyền và nhận song công hoàn toàn ở chế độ chính hoặc phụ (BIDIMODE=0 và RXONLY=0)

Phần mềm phải tuân theo quy trình này để truyền và nhận dữ liệu (xem Hình 241 và Hình 242):

1. Kích hoạt SPI bằng cách đặt bit SPE thành 1.

2. Ghi mục dữ liệu đầu tiên được truyền vào thanh ghi SPI_DR (điều này sẽ xóa TXE
lá cờ).

3. Đợi cho đến khi TXE=1 và ghi mục dữ liệu thứ hai cần truyền. Sau đó đợi cho đến khi

RXNE=1 và đọc SPI_DR để lấy mục dữ liệu nhận được đầu tiên (điều này sẽ xóa bit RXNE). Lặp lại
thao tác này cho từng mục dữ liệu được truyền/nhận cho đến khi nhận được n-1 dữ liệu.

4. Đợi cho đến khi RXNE=1 và đọc dữ liệu nhận được cuối cùng.

5. Đợi cho đến khi TXE=1 rồi đợi cho đến khi BSY=0 trước khi tắt SPI.

Quy trình này cũng có thể được thực hiện bằng cách sử dụng các chương trình con ngắt chuyên dụng
được khởi chạy ở mỗi cạnh lên của cờ RXNE hoặc TXE.

710/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

Hình 241. Hành vi TXE/RXNE/BSY ở chế độ Master / full-duplex (BIDIMODE=0 và


RXONLY=0) trong trường hợp truyền liên tục

Ví dụ ở chế độ Master với CPOL=1, CPHA=1

SCK

DỮ LIỆU1 = 0xF1 DỮ LIỆU2 = 0xF2 DỮ LIỆU3 = 0xF3

MISO/MOSI (ra) b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7

thiết lập bằng phần cứng thiết lập bằng phần cứng

xóa bằng phần mềm xóa bằng phần mềm thiết lập bằng phần cứng
Cờ TXE

Bộ đệm Tx 0xF1 0xF2 0xF3


(viết SPI_DR)

Cờ BSY thiết lập bằng phần cứng thiết lập lại bằng phần cứng

DỮ LIỆU 1 = 0xA1 DỮ LIỆU 2 = 0xA2 DỮ LIỆU 3 = 0xA3

MISO/MOSI (trong) b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7

thiết lập bằng phần cứng xóa bằng phần mềm


Cờ RXNE

Bộ đệm Rx
0xA1 0xA2 0xA3
(đọc SPI_DR)

phần mềm phần mềm đợi cho phần mềm đợi phần mềm đợi cho phần mềm đợi phần mềm đợi
ghi 0xF1 đến khi TXE=1 và cho đến khi đến khi TXE=1 và cho đến khi cho đến khi

vào SPI_DR ghi 0xF2 vào RXNE=1 và đọc ghi 0xF3 vào RXNE=1 và đọc RXNE=1 và đọc

SPI_DR 0xA1 từ SPI_DR SPI_DR 0xA2 từ SPI_ DR 0xA3 từ SPI_DR


ai17343

RM0008 Phiên bản 21 711/1136

751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

Hình 242. Hành vi TXE/RXNE/BSY ở chế độ Slave/full-duplex (BIDIMODE=0,


RXONLY=0) trong trường hợp truyền liên tục

Ví dụ ở chế độ Slave với CPOL=1, CPHA=1

SCK

DỮ LIỆU 1 = 0xF1 DỮ LIỆU 2 = 0xF2 DỮ LIỆU 3 = 0xF3

MISO/MOSI (ra) b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7

thiết lập bằng phần cứng thiết lập bằng phần cứng

xóa bằng phần mềm xóa bằng phần mềm thiết lập bằng phần cứng
Cờ TXE

Bộ đệm Tx 0xF1 0xF2 0xF3


(ghi vào SPI_DR)

Cờ BSY thiết lập bằng cách xóa bằng phần mềm thiết lập lại bằng phần cứng

DỮ LIỆU 1 = 0xA1 DỮ LIỆU 2 = 0xA2 DỮ LIỆU 3 = 0xA3

MISO/MOSI (trong) b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7

thiết lập bằng phần cứng xóa bằng phần mềm


Cờ RXNE

Bộ đệm Rx
0xA1 0xA2 0xA3
(đọc từ SPI_DR)

phần mềm phần mềm đợi cho phần mềm đợi cho phần mềm đợi cho phần mềm đợi cho phần mềm đợi cho

ghi 0xF1 đến khi TXE=1 và đến khi RXNE=1 đến khi TXE=1 và đến khi RXNE=1 đến khi RXNE=1

vào SPI_DR ghi 0xF2 vào và đọc 0xA1 ghi 0xF3 vào và đọc 0xA2 và đọc 0xA3

SPI_DR từ SPI_DR SPI_DR từ SPI_ DR từ SPI_DR

ai17344

Thủ tục chỉ truyền (BIDIMODE=0 RXONLY=0)

Trong chế độ này, quy trình có thể được giảm bớt như mô tả bên dưới và bit BSY có thể được sử
dụng để đợi cho đến khi quá trình truyền hoàn tất (xem Hình 243 và Hình 244).

1. Kích hoạt SPI bằng cách đặt bit SPE thành 1.

2. Ghi mục dữ liệu đầu tiên để gửi vào thanh ghi SPI_DR (điều này sẽ xóa bit TXE).

3. Đợi cho đến khi TXE=1 và ghi mục dữ liệu tiếp theo sẽ được truyền. Lặp lại bước này cho mỗi mục
dữ liệu được truyền đi.

4. Sau khi ghi mục dữ liệu cuối cùng vào thanh ghi SPI_DR, hãy đợi cho đến khi TXE=1, sau đó đợi cho
đến khi BSY=0, điều này cho biết quá trình truyền dữ liệu cuối cùng đã hoàn tất.

Quy trình này cũng có thể được thực hiện bằng cách sử dụng các chương trình con ngắt chuyên dụng
được khởi chạy ở mỗi cạnh lên của cờ TXE.

Ghi chú: Trong quá trình liên lạc không liên tục, có độ trễ khoảng thời gian xung nhịp 2 APB giữa thao tác
ghi vào SPI_DR và cài đặt bit BSY. Do đó, ở chế độ chỉ truyền, trước tiên bắt buộc phải đợi cho
đến khi TXE được thiết lập và sau đó cho đến khi BSY bị xóa sau khi ghi dữ liệu cuối cùng.

Sau khi truyền hai mục dữ liệu ở chế độ chỉ truyền, cờ OVR được đặt trong thanh ghi SPI_SR do dữ liệu
nhận được không bao giờ được đọc.

712/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

Hình 243. Hành vi TXE/BSY ở chế độ chỉ truyền Chính (BIDIMODE=0 và RXONLY=0)
trong trường hợp chuyển khoản liên tục

Ví dụ ở chế độ Master với CPOL=1, CPHA=1

SCK

DỮ LIỆU 1 = 0xF1 DỮ LIỆU 2 = 0xF2 DỮ LIỆU 3 = 0xF3

MISO/MOSI (ra) b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7

thiết lập bằng phần cứng thiết lập bằng phần cứng

xóa bằng phần mềm xóa bằng phần mềm


Cờ TXE thiết lập bằng phần cứng

Bộ đệm 0xF1 0xF2 0xF3

Tx (ghi vào SPI_DR)

Cờ BSY thiết lập bằng phần cứng thiết lập lại bằng phần cứng

phần mềm ghi 0xF1 phần mềm đợi cho phần mềm đợi cho
vào đến khi TXE=1 và đến khi TXE=1 và
phần mềm đợi cho đến khi TXE=1 phần mềm đợi cho đến khi BSY=0
SPI_DR ghi 0xF2 vào ghi 0xF3 vào

SPI_DR SPI_DR
ai17345

Hình 244. TXE/BSY ở chế độ chỉ truyền Slave (BIDIMODE=0 và RXONLY=0) trong trường hợp truyền liên tục

Ví dụ ở chế độ nô lệ với CPOL=1, CPHA=1

SCK

DỮ LIỆU 1 = 0xF1 DỮ LIỆU 2 = 0xF2 DỮ LIỆU 3 = 0xF3

MISO/MOSI (ra) b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7

thiết lập bằng phần cứng thiết lập bằng phần cứng

Cờ TXE xóa bằng phần mềm xóa bằng phần mềm thiết lập bằng phần cứng

Bộ đệm 0xF1 0xF2 0xF3


Tx (ghi vào SPI_DR)

Cờ BSY thiết lập bằng phần cứng thiết lập lại bằng phần cứng

phần mềm ghi 0xF1 phần mềm đợi cho phần mềm đợi cho
vào đến khi TXE=1 và đến khi TXE=1 và
phần mềm đợi đến khi TXE=1 phần mềm đợi đến khi BSY=0
SPI_DR ghi 0xF2 vào ghi 0xF3 vào

SPI_DR SPI_DR
ai17346

Quy trình truyền hai chiều (BIDIMODE=1 và BIDIOE=1)

Trong chế độ này, quy trình tương tự như quy trình ở chế độ Chỉ truyền ngoại trừ cả hai
bit BIDIMODE và BIDIOE đều phải được đặt trong thanh ghi SPI_CR2 trước khi bật SPI.

Quy trình chỉ nhận một chiều (BIDIMODE=0 và RXONLY=1)

Trong chế độ này, quy trình có thể được giảm bớt như mô tả bên dưới (xem Hình 245):

RM0008 Phiên bản 21 713/1136

751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

1. Đặt bit RXONLY trong thanh ghi SPI_CR1.

2. Kích hoạt SPI bằng cách đặt bit SPE thành 1:

a) Ở chế độ chính, điều này ngay lập tức kích hoạt việc tạo đồng hồ SCK và dữ liệu được nhận
nối tiếp cho đến khi SPI bị tắt (SPE=0).

b) Ở chế độ phụ, dữ liệu được nhận khi thiết bị chính SPI điều khiển NSS ở mức thấp và
tạo ra đồng hồ SCK.

3. Đợi cho đến khi RXNE=1 và đọc thanh ghi SPI_DR để lấy dữ liệu đã nhận (điều này sẽ xóa bit RXNE).
Lặp lại thao tác này cho từng mục dữ liệu được nhận.

Quy trình này cũng có thể được thực hiện bằng cách sử dụng các chương trình con ngắt chuyên dụng
được khởi chạy ở mỗi cạnh lên của cờ RXNE.

Ghi chú: Nếu cần phải tắt SPI sau lần truyền cuối cùng, hãy làm theo khuyến nghị được mô tả trong
Phần 25.3.8.

Hình 245. Hành vi của RXNE ở chế độ chỉ nhận (BIDIRMODE=0 và RXONLY=1)
trong trường hợp chuyển khoản liên tục

Ví dụ với CPOL=1, CPHA=1, RXONLY=1

SCK

DỮ LIỆU 1 = 0xA1 DỮ LIỆU 2 = 0xA2 DỮ LIỆU 3 = 0xA3

MISO/MOSI (trong) b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7

thiết lập bằng phần cứng xóa bằng phần mềm


Cờ RXNE

Bộ đệm Rx 0xA1 0xA2 0xA3


(đọc từ SPI_DR)

phần mềm đợi cho đến khi RXNE=1 phần mềm đợi cho đến khi RXNE=1 phần mềm đợi cho đến khi RXNE=1

và đọc 0xA1 từ SPI_DR và đọc 0xA2 từ SPI_DR và đọc 0xA3 từ SPI_DR

ai17347

Quy trình nhận hai chiều (BIDIMODE=1 và BIDIOE=0)

Trong chế độ này, quy trình này tương tự như quy trình ở chế độ Chỉ nhận ngoại trừ bit BIDIMODE
phải được đặt và bit BIDIOE bị xóa trong thanh ghi SPI_CR2 trước khi bật SPI.

Chuyển liên tục và không liên tục

Khi truyền dữ liệu ở chế độ chính, nếu phần mềm đủ nhanh để phát hiện từng cạnh lên của TXE (hoặc
ngắt TXE) và ghi ngay vào thanh ghi SPI_DR trước khi quá trình truyền dữ liệu đang diễn ra hoàn tất,
thì quá trình giao tiếp được cho là liên tục. Trong trường hợp này, không có sự gián đoạn trong việc
tạo đồng hồ SPI giữa mỗi mục dữ liệu và bit BSY không bao giờ bị xóa giữa mỗi lần truyền dữ liệu.

Ngược lại, nếu phần mềm không đủ nhanh, điều này có thể dẫn đến một số gián đoạn trong quá trình
giao tiếp. Trong trường hợp này, bit BSY bị xóa giữa mỗi lần truyền dữ liệu (xem Hình 246).

Trong chế độ chỉ nhận chính (RXONLY=1), giao tiếp luôn liên tục và cờ BSY luôn được đọc ở mức 1.

714/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

Ở chế độ phụ, tính liên tục của giao tiếp được quyết định bởi thiết bị chính SPI. Trong mọi
trường hợp, ngay cả khi quá trình liên lạc diễn ra liên tục, cờ BSY sẽ ở mức thấp giữa mỗi lần
truyền trong khoảng thời gian tối thiểu là một chu kỳ đồng hồ SPI (xem Hình 244).

Hình 246. Hành vi TXE/BSY khi truyền (BIDIRMODE=0 và RXONLY=0) trong trường hợp truyền không
liên tục

Ví dụ với CPOL=1, CPHA=1

SCK

DỮ LIỆU 1 = 0xF1 DỮ LIỆU 2 = 0xF2 DỮ LIỆU 3 = 0xF3

MOSI (ra) b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7

Cờ TXE

Bộ đệm Tx 0xF1 0xF2 0xF3


(ghi vào SPI_DR)

Cờ BSY

phần mềm ghi 0xF1 vào phần mềm đợi cho đến khi TXE=1 nhưng phần mềm đợi cho đến khi TXE=1 nhưng phần mềm đợi cho phần mềm đợi cho đến khi BSY=0

SPI_DR bị trễ để ghi 0xF2 vào SPI_DR bị trễ để ghi 0xF3 vào đến khi TXE=1

SPI_DR

ai17348

25.3.6 Tính toán CRC


Một máy tính CRC đã được triển khai để đảm bảo độ tin cậy của truyền thông. Các máy tính
CRC riêng biệt được triển khai cho dữ liệu truyền và dữ liệu nhận. CRC được tính toán bằng cách
sử dụng đa thức lập trình nối tiếp trên mỗi bit. Nó được tính toán trên cạnh đồng hồ lấy mẫu
được xác định bởi các bit CPHA và CPOL trong thanh ghi SPI_CR1.

Ghi chú: SPI này cung cấp hai loại tiêu chuẩn tính toán CRC phụ thuộc trực tiếp vào định dạng khung dữ
liệu được chọn để truyền và/hoặc nhận: dữ liệu 8 bit (CR8) và dữ liệu 16 bit (CRC16).

Tính toán CRC được kích hoạt bằng cách đặt bit CRCEN trong thanh ghi SPI_CR1. Hành động này
đặt lại các thanh ghi CRC (SPI_RXCRCR và SPI_TXCRCR). Ở chế độ song công hoàn toàn hoặc chỉ
phát, khi việc truyền được quản lý bởi phần mềm (chế độ CPU), cần phải ghi bit CRCNEXT ngay sau
khi dữ liệu cuối cùng được truyền được ghi vào SPI_DR. Khi kết thúc lần truyền dữ liệu cuối
cùng này, giá trị SPI_TXCRCR sẽ được truyền đi.

Ở chế độ chỉ nhận và khi việc truyền được quản lý bằng phần mềm (chế độ CPU), cần phải ghi bit
CRCNEXT sau khi nhận được dữ liệu cuối cùng thứ hai. CRC được nhận ngay sau lần nhận dữ liệu
cuối cùng và việc kiểm tra CRC sau đó được thực hiện.

Khi kết thúc quá trình truyền dữ liệu và CRC, cờ CRCERR trong thanh ghi SPI_SR được đặt nếu
xảy ra lỗi trong quá trình truyền.

Nếu dữ liệu có trong bộ đệm TX, giá trị CRC chỉ được truyền sau khi truyền byte dữ liệu. Trong
quá trình truyền CRC, bộ tính CRC bị tắt và giá trị thanh ghi không thay đổi.

Có thể giao tiếp SPI bằng CRC thông qua quy trình sau:

RM0008 Phiên bản 21 715/1136

751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

1. Lập trình các giá trị CPOL, CPHA, LSBFirst, BR, SSM, SSI và MSTR.

2. Lập trình đa thức trong thanh ghi SPI_CRCPR.

3. Kích hoạt tính toán CRC bằng cách đặt bit CRCEN trong thanh ghi SPI_CR1. Cái này
cũng xóa các thanh ghi SPI_RXCRCR và SPI_TXCRCR.

4. Kích hoạt SPI bằng cách đặt bit SPE trong thanh ghi SPI_CR1.

5. Bắt đầu liên lạc và duy trì liên lạc cho đến khi tất cả trừ một byte hoặc nửa từ được
truyền hoặc nhận.

– Ở chế độ song công hoàn toàn hoặc chỉ dành cho máy phát, khi việc truyền được
quản lý bằng phần mềm, khi ghi byte hoặc nửa từ cuối cùng vào bộ đệm Tx,
hãy đặt bit CRCNEXT trong thanh ghi SPI_CR1 để cho biết CRC sẽ được truyền sau khi
truyền của byte cuối cùng.

– Ở chế độ chỉ máy thu, đặt bit CRCNEXT ngay sau khi nhận dữ liệu thứ hai đến dữ liệu cuối
cùng để chuẩn bị cho SPI chuyển sang Giai đoạn CRC khi kết thúc quá trình nhận dữ
liệu cuối cùng. Tính toán CRC bị đóng băng trong quá trình chuyển CRC.

6. Sau khi truyền byte hoặc nửa từ cuối cùng, SPI sẽ chuyển sang giai đoạn kiểm tra và
truyền CRC. Ở chế độ song công hoàn toàn hoặc chế độ chỉ máy thu, CRC nhận được
sẽ được so sánh với giá trị SPI_RXCRCR. Nếu giá trị không khớp, cờ CRCERR trong SPI_SR
được đặt và ngắt có thể được tạo khi bit ERRIE trong thanh ghi SPI_CR2 được đặt.

Ghi chú: Khi SPI ở chế độ phụ, hãy cẩn thận chỉ bật tính toán CRC khi đồng hồ ổn định, nghĩa là khi đồng
hồ ở trạng thái ổn định. Nếu không, có thể tính toán CRC sai. Trên thực tế, CRC nhạy cảm với
đồng hồ đầu vào phụ SCK ngay khi CRCEN được đặt và điều này bất kể giá trị của bit SPE là
bao nhiêu.

Với tần số bitrate cao, hãy cẩn thận khi truyền CRC. Vì số chu kỳ CPU được sử dụng phải càng
thấp càng tốt trong giai đoạn truyền CRC, nên không được phép gọi các chức năng phần mềm
trong chuỗi truyền CRC để tránh lỗi trong dữ liệu cuối cùng và quá trình nhận CRC. Trong thực
tế, bit CRCNEXT phải được ghi trước khi kết thúc quá trình truyền/nhận dữ liệu
cuối cùng.

Đối với tần số tốc độ bit cao, nên sử dụng chế độ DMA để tránh suy giảm hiệu suất tốc độ SPI do
việc truy cập CPU ảnh hưởng đến băng thông SPI.

Khi các thiết bị được cấu hình là nô lệ và chế độ phần cứng NSS được sử dụng, chân NSS cần
được giữ ở mức thấp giữa pha dữ liệu và pha CRC.

Khi SPI được cấu hình ở chế độ phụ với tính năng CRC được bật, việc tính toán CRC diễn ra
ngay cả khi mức cao được áp dụng trên chân NSS. Điều này có thể xảy ra chẳng hạn trong trường
hợp môi trường nhiều nô lệ trong đó chủ giao tiếp xử lý luân phiên các nô lệ.

Giữa việc bỏ chọn nô lệ (mức cao trên NSS) và lựa chọn nô lệ mới (mức thấp trên NSS), giá
trị CRC phải bị xóa ở cả hai phía chính và phụ để đồng bộ hóa lại chủ và phụ cho tính
toán CRC tương ứng của chúng.

Để xóa CRC, hãy làm theo quy trình dưới đây:

1. Vô hiệu hóa SPI (SPE=0)


2. Xóa bit CRCEN

3. Đặt bit CRCEN

4. Kích hoạt SPI (SPE = 1)

716/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

25.3.7 Cờ trạng thái


Bốn cờ trạng thái được cung cấp cho ứng dụng để giám sát hoàn toàn trạng thái của bus SPI.

Cờ trống bộ đệm Tx (TXE)

Khi được đặt, cờ này cho biết bộ đệm Tx trống và dữ liệu được truyền tiếp theo có
thể được tải vào bộ đệm. Cờ TXE bị xóa khi ghi vào thanh ghi SPI_DR.

Bộ đệm Rx không trống (RXNE)

Khi được đặt, cờ này cho biết có dữ liệu nhận được hợp lệ trong bộ đệm Rx. Nó bị xóa khi
SPI_DR được đọc.

cờ BẬN

Cờ BSY này được đặt và xóa bằng phần cứng (việc ghi vào cờ này không có hiệu lực). Cờ BSY
cho biết trạng thái của lớp giao tiếp của SPI.

Khi BSY được đặt, nó cho biết SPI đang bận liên lạc. Có một ngoại lệ trong chế độ chính/chế
độ nhận hai chiều (MSTR=1 và BDM=1 và BDOE=0) trong đó cờ BSY được giữ ở mức thấp trong quá
trình thu.

Cờ BSY rất hữu ích để phát hiện kết thúc truyền nếu phần mềm muốn tắt SPI và chuyển sang chế
độ Dừng (hoặc tắt đồng hồ ngoại vi). Điều này tránh làm hỏng lần chuyển cuối cùng. Đối
với điều này, thủ tục được mô tả dưới đây phải được tôn trọng nghiêm ngặt.

Cờ BSY cũng hữu ích để tránh xung đột ghi trong hệ thống đa chủ.

Cờ BSY được đặt khi quá trình truyền bắt đầu, ngoại trừ chế độ chính/chế độ nhận hai chiều
(MSTR=1 và BDM=1 và BDOE=0).

Nó được xóa:

• khi quá trình truyền kết thúc (ngoại trừ ở chế độ chính nếu quá trình truyền liên tục)
• khi SPI bị vô hiệu hóa

• khi xảy ra lỗi ở chế độ chính (MODF=1)

Khi giao tiếp không liên tục, cờ BSY ở mức thấp giữa mỗi lần giao tiếp.

Khi truyền thông liên tục:

• ở chế độ chính, cờ BSY được giữ ở mức cao trong tất cả các lần truyền
• ở chế độ nô lệ, cờ BSY ở mức thấp trong một chu kỳ xung nhịp SPI giữa mỗi lần truyền

Ghi chú: Không sử dụng cờ BSY để xử lý mỗi lần truyền hoặc nhận dữ liệu. Thay vào đó, tốt hơn là sử
dụng cờ TXE và RXNE.

RM0008 Phiên bản 21 717/1136

751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

25.3.8 Vô hiệu hóa SPI

Khi quá trình truyền bị chấm dứt, ứng dụng có thể dừng liên lạc bằng cách tắt thiết bị ngoại vi SPI. Điều này
được thực hiện bằng cách xóa bit SPE.

Đối với một số cấu hình, việc tắt SPI và vào chế độ Dừng trong khi quá trình truyền đang diễn ra có thể
khiến quá trình truyền hiện tại bị hỏng và/hoặc cờ BSY có thể trở nên không đáng tin cậy.

Để tránh bất kỳ ảnh hưởng nào trong số đó, bạn nên tuân thủ quy trình sau khi tắt SPI:

Ở chế độ song công hoàn toàn chính hoặc phụ (BIDIMODE=0, RXONLY=0)

1. Đợi đến khi RXNE=1 để nhận dữ liệu cuối cùng

2. Đợi đến khi TXE=1

3. Sau đó đợi cho đến khi BSY=0

4. Tắt SPI (SPE=0) và cuối cùng vào chế độ Dừng (hoặc tắt thiết bị ngoại vi
cái đồng hồ)

Ở chế độ chỉ truyền một chiều chính hoặc phụ (BIDIMODE=0,


RXONLY=0) hoặc chế độ truyền hai chiều (BIDIMODE=1, BIDIOE=1)

Sau khi dữ liệu cuối cùng được ghi vào thanh ghi SPI_DR:

1. Đợi đến khi TXE=1

2. Sau đó đợi cho đến khi BSY=0

3. Tắt SPI (SPE=0) và cuối cùng vào chế độ Dừng (hoặc tắt thiết bị ngoại vi
cái đồng hồ)

Ở chế độ chỉ nhận một chiều chính (MSTR=1, BIDIMODE=0,


RXONLY=1) hoặc chế độ nhận hai chiều (MSTR=1, BIDIMODE=1, BIDIOE=0)

Trường hợp này phải được quản lý theo cách cụ thể để đảm bảo rằng SPI không thực hiện một đợt chuyển
tiền mới:

1. Đợi lần xuất hiện thứ hai đến lần cuối cùng của RXNE=1 (n–1)

2. Sau đó đợi một chu kỳ xung nhịp SPI (sử dụng vòng lặp phần mềm) trước khi tắt SPI
(TỐC ĐỘ=0)

3. Sau đó đợi RXNE=1 cuối cùng trước khi vào chế độ Dừng (hoặc tắt đồng hồ ngoại vi)

Ghi chú: Trong chế độ nhận hai chiều chính (MSTR=1 và BDM=1 và BDOE=0), cờ BSY được giữ ở mức thấp trong quá trình
truyền.

Ở chế độ chỉ nhận phụ (MSTR=0, BIDIMODE=0, RXONLY=1) hoặc chế độ nhận
hai chiều (MSTR=0, BIDIMODE=1, BIDOE=0)

1. Bạn có thể tắt SPI (ghi SPE=1) bất cứ lúc nào: quá trình truyền hiện tại sẽ hoàn tất trước khi SPI bị
vô hiệu hóa một cách hiệu quả

2. Sau đó, nếu bạn muốn vào chế độ Dừng, trước tiên bạn phải đợi cho đến khi BSY = 0 trước khi vào
chế độ Dừng (hoặc tắt đồng hồ ngoại vi).

718/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

25.3.9 Giao tiếp SPI sử dụng DMA (địa chỉ bộ nhớ trực tiếp)

Để hoạt động ở tốc độ tối đa, SPI cần được cung cấp dữ liệu để truyền và dữ liệu nhận
được trên bộ đệm Rx phải được đọc để tránh bị tràn. Để tạo điều kiện thuận lợi cho việc
chuyển giao, SPI có tính năng DMA thực hiện giao thức yêu cầu/xác nhận đơn giản.

Quyền truy cập DMA được yêu cầu khi bit kích hoạt trong thanh ghi SPI_CR2 được bật.
Các yêu cầu riêng biệt phải được đưa ra cho bộ đệm Tx và Rx (xem Hình 247 và Hình
248):
• Trong quá trình truyền, yêu cầu DMA được đưa ra mỗi khi TXE được đặt thành 1. Sau
đó, DMA ghi vào thanh ghi SPI_DR (điều này sẽ xóa cờ TXE).
• Khi tiếp nhận, yêu cầu DMA được đưa ra mỗi khi RXNE được đặt thành 1. Sau đó, DMA sẽ
đọc thanh ghi SPI_DR (điều này sẽ xóa cờ RXNE).

Khi SPI chỉ được sử dụng để truyền dữ liệu, chỉ có thể kích hoạt kênh SPI Tx DMA. Trong
trường hợp này, cờ OVR được đặt vì dữ liệu nhận được không được đọc.

Khi SPI chỉ được sử dụng để nhận dữ liệu, chỉ có thể kích hoạt kênh SPI Rx DMA.

Ở chế độ truyền, khi DMA đã ghi tất cả dữ liệu cần truyền (cờ TCIF được đặt trong thanh ghi
DMA_ISR), cờ BSY có thể được giám sát để đảm bảo rằng giao tiếp SPI hoàn tất. Điều
này là cần thiết để tránh làm hỏng lần truyền cuối cùng trước khi tắt SPI hoặc vào chế độ
Dừng. Đầu tiên phần mềm phải đợi cho đến khi TXE=1 và sau đó cho đến khi BSY=0.

Ghi chú: Trong quá trình liên lạc không liên tục, có độ trễ khoảng thời gian xung nhịp 2 APB giữa
thao tác ghi vào SPI_DR và cài đặt bit BSY. Do đó, trước tiên bắt buộc phải đợi cho đến
khi TXE=1 và sau đó là BSY=0 sau khi ghi dữ liệu cuối cùng.

RM0008 Phiên bản 21 719/1136

751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

Hình 247. Truyền dẫn sử dụng DMA

Ví dụ với CPOL=1, CPHA=1

SCK

DỮ LIỆU 1 = 0xF1 DỮ LIỆU 2 = 0xF2 DỮ LIỆU 3 = 0xF3

MISO/MOSI (ra) b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7

thiết lập bằng phần cứng


thiết lập bằng phần cứng

xóa bằng cách ghi DMA rõ ràng bằng cách viết DMA thiết lập bằng phần cứng
Cờ TXE

cài lại

Cờ BSY thiết lập bằng phần cứng


bằng phần cứng

Yêu cầu DMA bị DMA bỏ qua vì


Quá trình chuyển DMA đã hoàn tất

Bộ đệm Tx 0xF1 0xF2 0xF3


(ghi vào SPI_DR)

DMA ghi vào SPI_DR

thiết lập bằng phần cứng xóa bằng phần mềm


Cờ DMA TCIF

(chuyển DMA hoàn tất)

phần mềm cấu hình các DMA viết DMA viết DMA viết Quá trình truyền phần mềm đợi cho phần mềm đợi cho đến khi BSY=0

Kênh DMA SPI Tx DATA1 vào DATA2 vào DATA3 vào DMA hoàn tất (TCIF=1 trong đến khi TXE=1

để gửi 3 mục dữ liệu SPI_DR SPI_DR SPI_DR DMA_ISR)


và kích hoạt SPI
ai17349

Hình 248. Tiếp nhận sử dụng DMA

Ví dụ với CPOL=1, CPHA=1

SCK

DỮ LIỆU 1 = 0xA1 DỮ LIỆU 2 = 0xA2 DỮ LIỆU 3 = 0xA3

MISO/MOSI (trong) b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7

thiết lập bằng phần cứng rõ ràng bằng cách đọc DMA
Cờ RXNE

Yêu cầu DMA

Bộ đệm Rx
0xA1 0xA2 0xA3
(đọc từ SPI_DR)

DMA đọc từ SPI_DR

thông thoáng

thiết lập bằng phần cứng


bằng phần mềm
cờ DMA TCIF

(chuyển DMA hoàn tất)

phần mềm cấu hình các DMA đọc DMA đọc DMA đọc Quá trình truyền DMA
Kênh DMA SPI Rx DATA1 từ DATA2 từ DATA3 từ đã hoàn tất (TCIF=1 trong
để nhận 3 mục dữ liệu SPI_DR SPI_DR SPI_DR DMA_ISR)
và kích hoạt SPI
ai17350

720/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

Khả năng DMA với CRC

Khi giao tiếp SPI được bật với giao tiếp CRC và chế độ DMA, việc truyền và nhận CRC ở cuối
giao tiếp sẽ tự động mà không cần sử dụng bit CRCNEXT. Sau khi nhận CRC, CRC phải được đọc trong
thanh ghi SPI_DR để xóa cờ RXNE.

Khi kết thúc quá trình truyền dữ liệu và CRC, cờ CRCERR trong SPI_SR được đặt nếu xảy ra lỗi
trong quá trình truyền.

25.3.10 Cờ lỗi
Lỗi chế độ chính (MODF)

Lỗi chế độ chính xảy ra khi thiết bị chính có chân NSS bị kéo xuống mức thấp (ở chế độ phần
cứng NSS) hoặc bit SSI ở mức thấp (ở chế độ phần mềm NSS), điều này sẽ tự động đặt bit MODF. Lỗi
chế độ chính ảnh hưởng đến thiết bị ngoại vi SPI theo các cách sau:

• Bit MODF được đặt và ngắt SPI được tạo ra nếu bit ERRIE được đặt.

• Bit SPE bị xóa. Điều này chặn tất cả đầu ra từ thiết bị và vô hiệu hóa SPI
giao diện.

• Bit MSTR bị xóa, do đó buộc thiết bị chuyển sang chế độ phụ.

Sử dụng trình tự phần mềm sau để xóa bit MODF:

1. Thực hiện quyền truy cập đọc hoặc ghi vào thanh ghi SPI_SR trong khi bit MODF được đặt.

2. Sau đó ghi vào thanh ghi SPI_CR1.

Để tránh bất kỳ xung đột nô lệ nào trong một hệ thống bao gồm nhiều MCU, chân NSS phải được kéo
lên cao trong trình tự xóa bit MODF. Các bit SPE và MSTR có thể được khôi phục về trạng thái ban
đầu sau trình tự xóa này.

Để bảo mật, phần cứng không cho phép cài đặt các bit SPE và MSTR trong khi bit MODF được đặt.

Trong thiết bị phụ, bit MODF không thể được đặt. Tuy nhiên, trong cấu hình multimaster, thiết bị
có thể ở chế độ phụ với bộ bit MODF này. Trong trường hợp này, bit MODF chỉ ra rằng có thể đã
xảy ra xung đột đa chủ đối với việc điều khiển hệ thống. Có thể sử dụng quy trình ngắt để khôi phục
hoàn toàn khỏi trạng thái này bằng cách thực hiện đặt lại hoặc quay lại trạng thái mặc định.

Tình trạng tràn ngập

Tình trạng tràn xảy ra khi thiết bị chính đã gửi byte dữ liệu và thiết bị phụ chưa xóa bit
RXNE do byte dữ liệu trước đó được truyền.
Khi xảy ra tình trạng tràn:

• Bit OVR được thiết lập và một ngắt được tạo ra nếu bit ERRIE được thiết lập.

Trong trường hợp này, nội dung bộ đệm của máy thu sẽ không được cập nhật với dữ liệu mới nhận
được từ thiết bị chính. Việc đọc từ thanh ghi SPI_DR sẽ trả về byte này. Tất cả các byte
được truyền tiếp theo khác sẽ bị mất.

Việc xóa bit OVR được thực hiện bằng cách đọc từ thanh ghi SPI_DR, sau đó là quyền truy cập đọc
vào thanh ghi SPI_SR.

RM0008 Phiên bản 21 721/1136

751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

lỗi CRC

Cờ này được sử dụng để xác minh tính hợp lệ của giá trị nhận được khi bit CRCEN trong
thanh ghi SPI_CR1 được đặt. Cờ CRCERR trong thanh ghi SPI_SR được đặt nếu giá trị
nhận được trong thanh ghi dịch chuyển không khớp với giá trị SPI_RXCRCR của máy thu.

25.3.11 SPI bị gián đoạn

Bảng 182. Yêu cầu ngắt SPI

Sự kiện gián đoạn Cờ sự kiện Kích hoạt bit điều khiển

Truyền cờ trống bộ đệm TXE TXEIE

Cờ nhận bộ đệm không trống RXNE RXNEIE

Sự kiện lỗi Chế độ chính MODF

Lỗi tràn OVR errie

Cờ lỗi CRC CRCERR

722/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

25,4 Mô tả chức năng I2S


Giao thức âm thanh I2S không khả dụng ở các thiết bị có mật độ thấp và trung bình. Phần này
chỉ liên quan đến các thiết bị đường dây kết nối, mật độ XL và mật độ cao.

25.4.1 Mô tả chung về I2S

Sơ đồ khối của I2S được hiển thị trong Hình 249.

Hình 249. Sơ đồ khối I2S

Bus địa chỉ và dữ liệu

Bộ đệm Tx

CH
BSY OVR MODF CRC UDR TxE RxNE
LỖI BÊN
16-bit

MOSI/ SD

Đăng kí ca
MISO
LSB đầu tiên Giao tiếp
16-bit
điều khiển

Bộ đệm Rx

NSS/WS

I2SCFG I2SSTD CK DATLEN CH


[1:0] LEN
[1:0] [1:0] POL

I2S
MODI2SE

Logic điều khiển chính

giá thầu
giá thầu CRC CRC Rx
DFF SSM SSI
cách thức OE VN Kế tiếp
chỉ một

SPI LSB
SPE BR2 BR1 BR0 MSTR CPOL CPHA
máy phát tốc độ baud Đầu tiên

CK

Máy phát xung nhịp I 2S


I2S_CK

I2SMOD

MCK
MCKOEODD I2SDIV[7:0] I2SxCLK

ai14748

RM0008 Phiên bản 21 723/1136

751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

SPI có thể hoạt động như giao diện I2S âm thanh khi khả năng I2S được bật (bằng cách
đặt bit I2SMOD trong thanh ghi SPI_I2SCFGR). Giao diện này sử dụng hầu hết các chân, cờ
và ngắt giống như SPI.

I2S chia sẻ ba chân chung với SPI:

• SD: Dữ liệu nối tiếp (được ánh xạ trên chân MOSI) để truyền hoặc nhận hai lần
kênh dữ liệu ghép kênh (chỉ ở chế độ bán song công).

• WS: Word Select (ánh xạ trên chân NSS) là đầu ra tín hiệu điều khiển dữ liệu trong master
chế độ và đầu vào ở chế độ nô lệ.

• CK: Serial Clock (được ánh xạ trên chân SCK) là đầu ra xung nhịp nối tiếp ở chế độ chính và
đầu vào xung nhịp nối tiếp ở chế độ phụ.

Có thể sử dụng một chân bổ sung khi cần đầu ra đồng hồ chính cho một số thiết bị âm thanh
bên ngoài:

• MCK: Đồng hồ chính (được ánh xạ riêng) được sử dụng, khi I2S được cấu hình ở chế độ
chính (và khi bit MCKOE trong thanh ghi SPI_I2SPR được đặt), để xuất ra đồng
hồ bổ sung này được tạo ở tốc độ tần số được cấu hình sẵn bằng 256 × FS , trong đó
FS là tần số lấy mẫu âm thanh.

I2S sử dụng bộ tạo xung nhịp riêng để tạo ra xung nhịp truyền thông khi nó được đặt ở
chế độ chính . Bộ tạo xung nhịp này cũng là nguồn đầu ra của xung nhịp chính. Hai
thanh ghi bổ sung có sẵn ở chế độ I2S . Một cái được liên kết với cấu hình bộ
tạo xung nhịp SPI_I2SPR và cái còn lại là thanh ghi cấu hình I2S chung SPI_I2SCFGR
(tiêu chuẩn âm thanh, chế độ phụ/chế độ chính, định dạng dữ liệu, khung gói, phân
cực đồng hồ, v.v.).

Thanh ghi SPI_CR1 và tất cả các thanh ghi CRC không được sử dụng ở chế độ I2S . Tương
tự, bit SSOE trong thanh ghi SPI_CR2 và các bit MODF và CRCERR trong SPI_SR không được sử
dụng.

I2S sử dụng cùng một thanh ghi SPI để truyền dữ liệu (SPI_DR) ở chế độ rộng 16 bit.

25.4.2 Giao thức âm thanh được hỗ trợ

Bus ba đường chỉ phải xử lý dữ liệu âm thanh thường được ghép theo thời gian trên
hai kênh: kênh bên phải và kênh bên trái. Tuy nhiên chỉ có một thanh ghi 16 bit cho việc
truyền và nhận. Vì vậy, phần mềm có thể ghi vào thanh ghi dữ liệu giá trị thích hợp
tương ứng với phía kênh được xem xét hoặc đọc dữ liệu từ thanh ghi dữ liệu và xác định
kênh tương ứng bằng cách kiểm tra bit CHSIDE trong thanh ghi SPI_SR. Kênh Bên trái
luôn được gửi trước, sau đó là kênh bên phải (CHSIDE không có ý nghĩa gì đối với giao thức
PCM).

Bốn khung dữ liệu và gói có sẵn. Dữ liệu có thể được gửi với định dạng:
• Dữ liệu 16 bit được đóng gói trong khung 16 bit

• Dữ liệu 16 bit được đóng gói trong khung 32 bit

• Dữ liệu 24 bit được đóng gói trong khung 32 bit

• Dữ liệu 32 bit được đóng gói trong khung 32 bit

Khi sử dụng dữ liệu 16 bit mở rộng trên gói 32 bit, 16 bit đầu tiên (MSB) là các bit quan
trọng, LSB 16 bit bị buộc về 0 mà không cần thao tác phần mềm hoặc yêu cầu DMA (chỉ một
thao tác đọc/ghi ).

724/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

Khung dữ liệu 24 bit và 32 bit cần hai thao tác đọc hoặc ghi CPU vào/từ SPI_DR hoặc hai
thao tác DMA nếu DMA được ưu tiên cho ứng dụng. Đối với khung dữ liệu 24 bit cụ thể, 8 bit
không có ý nghĩa được mở rộng thành 32 bit với 0 bit (bằng phần cứng).

Đối với tất cả các định dạng dữ liệu và tiêu chuẩn truyền thông, bit quan trọng nhất luôn được gửi
trước (MSB trước).

Giao diện I2S hỗ trợ bốn tiêu chuẩn âm thanh, có thể định cấu hình bằng cách sử dụng các bit
I2SSTD[1:0] và PCMSYNC trong thanh ghi SPI_I2SCFGR.

I 2S tiêu chuẩn Philips

Đối với tiêu chuẩn này, tín hiệu WS được sử dụng để cho biết kênh nào đang được truyền đi. Nó
được kích hoạt một chu kỳ xung nhịp CK trước khi có bit đầu tiên (MSB).

Hình 250. Dạng sóng giao thức I2S Philips (độ chính xác đầy đủ 16/32-bit, CPOL = 0)

CK

WS quá trình lây truyền thu nhận

Có thể là 16-bit hoặc 32-bit

SD
MSB LSB MSB

Kênh trái
Kênh
phải
MS19591V1

Dữ liệu được chốt ở cạnh xuống của CK (đối với máy phát) và được đọc ở cạnh lên (đối với
máy thu). Tín hiệu WS cũng được chốt ở cạnh xuống của CK.

Hình 251. Dạng sóng chuẩn I2S Philips (khung 24 bit có CPOL = 0)

CK

WS Quá trình lây truyền Thu nhận

Dữ liệu 24-bit
8 bit còn lại 0 bắt buộc
SD
MSB LSB

Kênh trái 32-bit

Kênh phải

MS19592V1

Chế độ này cần hai thao tác ghi hoặc đọc đến/từ SPI_DR.
• Ở chế độ truyền:

nếu 0x8EAA33 phải được gửi (24-bit):

RM0008 Phiên bản 21 725/1136

751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

Hình 252. Truyền 0x8EAA33

Đầu tiên ghi vào thanh ghi dữ liệu Ghi lần thứ hai vào thanh ghi dữ liệu

0x8EAA 0x33XX

Chỉ 8 MSB được gửi để so


sánh 24 bit
8 LSB không có ý nghĩa và
có thể là bất cứ thứ gì

MS19593V1

• Ở chế độ tiếp nhận:


nếu nhận được dữ liệu 0x8EAA33:

Hình 253. Nhận 0x8EAA33

Đầu tiên đọc vào thanh ghi dữ liệu Lần đọc thứ hai vào thanh ghi dữ liệu

0x8EAA 0x33XX

Chỉ 8 MSB được gửi để so


sánh 24 bit
8 LSB không có ý nghĩa và
có thể là bất cứ thứ gì

MS19594V1

Hình 254. Chuẩn I2S Philips (16-bit mở rộng thành khung gói 32-bit với CPOL = 0)

CK

WS Quá trình lây truyền Thu nhận

Dữ liệu 16 bit
16-bit còn lại 0 bắt buộc
SD
MSB LSB

Kênh trái 32-bit


Kênh phải

MS19599V1

Khi chọn khung dữ liệu 16 bit được mở rộng thành khung kênh 32 bit trong giai đoạn
cấu hình I2S , chỉ cần một quyền truy cập vào SPI_DR. 16 bit còn lại bị phần cứng ép
về 0x0000 để mở rộng dữ liệu sang định dạng 32 bit.

Nếu dữ liệu truyền hoặc dữ liệu nhận là 0x76A3 (0x76A30000 được mở rộng thành 32-bit), thì thao
tác được hiển thị trong Hình 255 là bắt buộc.

Hình 255. Ví dụ

Chỉ có một quyền truy cập vào SPIx_DR

0x76A3

MS19595V1

726/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

Để truyền, mỗi khi MSB được ghi vào SPI_DR, cờ TXE được đặt và ngắt của nó, nếu được
phép, sẽ được tạo để tải SPI_DR với giá trị mới cần gửi. Điều này diễn ra ngay cả khi
0x0000 chưa được gửi vì nó được thực hiện bằng phần cứng.

Để tiếp nhận, cờ RXNE được đặt và ngắt của nó, nếu được phép, sẽ được tạo khi nhận được
nửa từ 16 MSB đầu tiên.

Bằng cách này, sẽ có nhiều thời gian hơn giữa hai thao tác ghi hoặc đọc, giúp ngăn chặn
tình trạng chạy thiếu hoặc chạy tràn (tùy thuộc vào hướng truyền dữ liệu).

Tiêu chuẩn hợp lý của MSB

Đối với tiêu chuẩn này, tín hiệu WS được tạo cùng lúc với bit dữ liệu đầu tiên, đó là MSBit.

Hình 256. MSB điều chỉnh độ dài chính xác đầy đủ 16-bit hoặc 32-bit với CPOL = 0

CK

WS Tiếp nhận truyền dẫn

Dữ liệu 16 hoặc 32 bit

SD
MSB LSB MSB

Kênh trái
Kênh phải

MS30100 V1

Dữ liệu được chốt ở cạnh xuống của CK (đối với máy phát) và được đọc ở cạnh lên (đối với
máy thu).

Hình 257. MSB điều chỉnh độ dài khung 24-bit với CPOL = 0

CK

WS Quá trình lây truyền


Thu nhận

dữ liệu 24 bit
8 bit còn lại
SD 0 bắt buộc

MSB LSB

Kênh trái 32-bit

Kênh phải

MS30101V1

RM0008 Phiên bản 21 727/1136

751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

Hình 258. MSB hợp lý hóa khung gói 16-bit được mở rộng thành 32-bit với CPOL = 0

CK

WS Quá trình lây truyền


Thu nhận

Dữ liệu 16 bit
16-bit còn lại 0
SD bắt buộc
MSB LSB

Kênh trái 32-bit

Kênh phải

MS30102V1

Tiêu chuẩn hợp lý LSB

Tiêu chuẩn này tương tự như tiêu chuẩn hợp lý của MSB (không có sự khác biệt đối với các định dạng khung hình có

độ chính xác đầy đủ 16-bit và 32-bit).

Hình 259. LSB chứng minh độ chính xác đầy đủ 16-bit hoặc 32-bit với CPOL = 0

CK

WS
Quá trình lây truyền Thu nhận
Dữ liệu 16 hoặc 32 bit

SD
MSB LSB MSB
Kênh trái

Kênh phải
MS30103V1

Hình 260. LSB điều chỉnh độ dài khung 24 bit với CPOL = 0

CK

WS Thu nhận
Quá trình lây truyền

Dữ liệu 8
24-bit còn lại
SD bit 0 bắt buộc

MSB LSB

Kênh trái 32-bit


Kênh phải

MS30104V1

• Ở chế độ truyền:

Nếu dữ liệu 0x3478AE phải được truyền đi thì cần có hai thao tác ghi vào thanh ghi
SPI_DR từ phần mềm hoặc bằng DMA. Các hoạt động được hiển thị dưới đây.

728/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

Hình 261. Các thao tác cần thiết để truyền 0x3478AE

Đầu tiên ghi vào thanh ghi dữ Lần ghi thứ hai vào thanh ghi dữ

liệu được điều chỉnh bởi TXE=1 liệu được điều chỉnh bởi TXE=1

0xXX34 0x78AE

Chỉ có 8 LSB của nửa từ là

có ý nghĩa.
Trường 0x00 bị bắt buộc thay

vì 8 MSB.
MS19596V1

• Ở chế độ tiếp nhận:

Nếu nhận được dữ liệu 0x3478AE, cần có hai thao tác đọc liên tiếp từ SPI_DR trên
mỗi sự kiện RXNE.

Hình 262. Các thao tác cần thiết để nhận 0x3478AE

Lần đọc đầu tiên từ thanh ghi dữ Lần đọc thứ hai từ thanh ghi dữ liệu
liệu được điều chỉnh bởi RXNE=1 được điều chỉnh bởi RXNE=1

0xXX34 0x78AE

Chỉ có 8 LSB của nửa từ


là có ý nghĩa.
Trường 0x00 bị bắt buộc
thay vì 8 MSB.

MS19597V1

Hình 263. LSB hợp lý hóa khung gói 16-bit được mở rộng thành 32-bit với CPOL = 0

CK

WS Thu nhận

Quá trình lây truyền

Dữ liệu 16 bit 16-bit còn lại


SD 0 bắt buộc

MSB LSB

Kênh trái 32-bit


Kênh phải
MS30105V1

Khi chọn khung dữ liệu 16 bit được mở rộng thành khung kênh 32 bit trong giai đoạn
cấu hình I2S , chỉ cần một quyền truy cập vào SPI_DR. 16 bit còn lại bị phần cứng ép về
0x0000 để mở rộng dữ liệu sang định dạng 32 bit. Trong trường hợp này nó tương ứng với MSB
nửa từ.

Nếu dữ liệu truyền hoặc dữ liệu nhận là 0x76A3 (0x0000 76A3 được mở rộng thành 32-bit), thì
cần phải thực hiện thao tác như trong Hình 264 .

RM0008 Phiên bản 21 729/1136

751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

Hình 264. Ví dụ về LSB hợp lý 16-bit mở rộng khung gói 32-bit

Chỉ có một quyền truy cập vào thanh ghi SPIx-DR

0x76A3

MS19598V1

Ở chế độ truyền, khi TXE được xác nhận, ứng dụng phải ghi dữ liệu cần truyền (trong trường
hợp này là 0x76A3). Trường 0x000 được truyền trước tiên (phần mở rộng trên 32 bit).
TXE được xác nhận lại ngay khi dữ liệu hiệu quả (0x76A3) được gửi trên SD.

Ở chế độ tiếp nhận, RXNE được xác nhận ngay khi nhận được nửa từ quan trọng (chứ không phải
trường 0x0000).

Bằng cách này, sẽ có nhiều thời gian hơn giữa hai thao tác ghi hoặc đọc để tránh tình trạng
chạy thiếu hoặc chạy tràn.

tiêu chuẩn PCM

Đối với tiêu chuẩn PCM, không cần sử dụng thông tin phía kênh. Hai chế độ PCM (khung ngắn
và khung dài) có sẵn và có thể định cấu hình bằng bit PCMSYNC trong SPI_I2SCFGR.

Hình 265. Dạng sóng chuẩn PCM (16-bit)

CK

WS
khung ngắn

13-bit
WS
khung dài

SD MSB LSB MSB

MS30106V1

Để đồng bộ hóa khung dài, thời gian xác nhận tín hiệu WS được cố định 13 bit ở chế độ
chính.

Để đồng bộ khung ngắn, tín hiệu đồng bộ WS chỉ dài một chu kỳ.

730/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

Hình 266. Dạng sóng chuẩn PCM (16-bit mở rộng thành khung gói 32-bit)

CK

WS
khung ngắn

Lên đến 13-bit


WS
khung dài

16 bit

SD
MSB LSB

MS30107V1

Ghi chú: Đối với cả hai chế độ (chính và phụ) và cả hai đồng bộ hóa (ngắn và dài), số bit giữa
hai phần dữ liệu liên tiếp (và hai tín hiệu đồng bộ hóa) cần phải được chỉ định (bit DATLEN
và CHLEN trong thanh ghi SPI_I2SCFGR) ngay cả ở chế độ nô lệ.

25.4.3 Bộ tạo xung nhịp


Tốc độ bit I2S xác định luồng dữ liệu trên đường dữ liệu I2S và tần số tín hiệu xung
nhịp I2S .

Tốc độ bit I 2S = số bit trên mỗi kênh × số kênh × tần số âm thanh lấy mẫu

Đối với âm thanh 16 bit, kênh trái và phải, tốc độ bit I2S được tính như sau:

Tốc độ bit I 2S = 16 × 2 × FS

Nó sẽ là: Tốc độ bit I2S = 32 x 2 x FS nếu độ dài gói rộng 32 bit.

Hình 267. Định nghĩa tần số lấy mẫu âm thanh

Kênh trái 16 Kênh phải


hoặc 32 bit 16 hoặc 32 bit

32- hoặc 64-bit

FS
điểm lấy mẫu điểm lấy mẫu

FS : tần số lấy mẫu âm thanh

MS30108V1

Khi chế độ chính được định cấu hình, cần thực hiện một hành động cụ thể để lập trình
đúng bộ chia tuyến tính nhằm giao tiếp với tần số âm thanh mong muốn.

RM0008 Phiên bản 21 731/1136

751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

Hình 268. Kiến trúc bộ tạo xung nhịp I2S

MCK

I²SxCLK
Bộ chia tuyến tính 8 bit

+ giai đoạn định hình lại 0


0
Chia cho 4 Phân khu 2
1 CK
1

MCKOE

MCKOE Lẻ I²SDIV[7:0]

DOMS²I

NELHC
MS30109V1

1. Trong đó x có thể là 2 hoặc 3.

Hình 267 trình bày kiến trúc đồng hồ truyền thông. . Nguồn I2SxCLK là đồng hồ hệ thống
(được cung cấp bởi HSI, HSE hoặc PLL và cung cấp đồng hồ AHB). Đối với các thiết bị đường
kết nối, tNguồn I2SxCLK có thể là đồng hồ SYSCLK hoặc PLL3 VCO (2 × PLL3CLK) để đạt được
độ chính xác tối đa. Lựa chọn này được thực hiện bằng cách sử dụng các bit I2S2SRC và
I2S3SRC trong thanh ghi RCC_CFGR2.

Tần số lấy mẫu âm thanh có thể là 96 kHz, 48 kHz, 44,1 kHz, 32 kHz, 22,05 kHz, 16 kHz,
11,025 kHz hoặc 8 kHz (hoặc bất kỳ giá trị nào khác trong phạm vi này). Để đạt được tần
số mong muốn, bộ chia tuyến tính cần được lập trình theo công thức dưới đây:

Khi đồng hồ chính được tạo (MCKOE trong thanh ghi SPI_I2SPR được đặt):

FS = I2SxCLK / [(16*2)*((2*I2SDIV)+ODD)*8)] khi khung kênh rộng 16 bit

FS = I2SxCLK / [(32*2)*((2*I2SDIV)+ODD)*4)] khi khung kênh rộng 32-bit

Khi đồng hồ chính bị tắt (bit MCKOE bị xóa):

FS = I2SxCLK / [(16*2)*((2*I2SDIV)+ODD))] khi khung kênh rộng 16 bit

FS = I2SxCLK / [(32*2)*((2*I2SDIV)+ODD))] khi khung kênh rộng 32-bit

Bảng 183, Bảng 184 và Bảng 185 cung cấp các giá trị độ chính xác mẫu cho các cấu hình đồng
hồ khác nhau.

Ghi chú: Các cấu hình khác có thể cho phép độ chính xác đồng hồ tối ưu.

Bảng 183. Độ chính xác tần số âm thanh sử dụng chuẩn HSE 8 MHz
(chỉ các thiết bị có mật độ cao và mật độ XL)

I2S_DIV I2S_ODD fS thực (KHz) Lỗi


SYSCLK Mục tiêu fS
MCLK
(MHz) 16-bit 32-bit 16-bit 32-bit (Hz) 16-bit 32-bit 16-bit 32-bit

72 11 6 1 0 KHÔNG 96000 97826.09 93750 1,90% 2,34%

72 23 11 1 1 KHÔNG 48000 47872,34 48913,04 0,27% 1,90%

72 25 13 1 0 KHÔNG 44100 44117,65 43269,23 0,04% 1,88%

732/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

Bảng 183. Độ chính xác tần số âm thanh sử dụng chuẩn HSE 8 MHz
(chỉ các thiết bị có mật độ cao và mật độ XL) (tiếp theo)

I2S_DIV I2S_ODD fS thực (KHz) Lỗi


SYSCLK Mục tiêu fS
MCLK
(MHz) 16-bit 32-bit 16-bit 32-bit (Hz) 16-bit 32-bit 16-bit 32-bit

72 35 17 0 1 KHÔNG 32000 32142,86 32142,86 0,44% 0,44%

72 51 25 0 1 KHÔNG 22050 22058,82 22058,82 0,04% 0,04%

72 70 35 1 0 KHÔNG 16000 15675,75 16071,43 0,27% 0,45%

72 102 51 0 0 KHÔNG 11025 11029,41 11029,41 0,04% 0,04%

72 140 70 1 1 KHÔNG 8000 8007,11 7978,72 0,09% 0,27%

72 2 2 0 0 Đúng 96000 70312,15 70312,15 26,76% 26,76%

72 3 3 0 0 Đúng 48000 46875 46875 2,34% 2,34%

72 3 3 0 0 Đúng 44100 46875 46875 6,29% 6,29%

72 4 4 1 1 Đúng 32000 31250 31250 2,34% 2,34%

72 6 6 1 1 Đúng 22050 21634,61 21634,61 1,88% 1,88%

72 9 9 0 0 Đúng 16000 15625 15625 2,34% 2,34%

72 13 13 0 0 Đúng 11025 10817,30 10817,30 1,88% 1,88%

72 17 17 1 1 Đúng 8000 8035,71 8035,71 0,45% 0,45%

RM0008 Phiên bản 21 733/1136

751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

Bảng 184. Độ chính xác tần số âm thanh sử dụng chuẩn 25 MHz và PLL3
(chỉ các thiết bị có đường kết nối)

Độ Mục fs thực sự
PREDIV2 PLL3MUL I2SDIV I2SODD MCLK Lỗi
dài dữ liệu tiêu fs(Hz) (KHz)

32 6 14 9 1 KHÔNG 96000 95942.9825 0.0594%

16 6 14 38 0 KHÔNG 48000 47971.4912 0,0594%

32 6 14 19 0 KHÔNG 48000 47971.4912 0,0594%

16 số 8 14 31 0 KHÔNG 44100 44102.823 0,0064%

32 số 8 14 15 1 KHÔNG 44100 44102.823 0,0064%

16 5 13 63 1 KHÔNG 32000 31988.189 0.0369%

32 số 8 20 30 1 KHÔNG 32000 32018.443 0,0576%

16 số 8 14 62 0 KHÔNG 22050 22051.4113 0,0064%

32 số 8 14 31 0 KHÔNG 22050 22051.4113 0,0064%

16 7 20 139 1 KHÔNG 16000 16001.0241 0,0064%

32 5 13 63 1 KHÔNG 16000 15994.0945 0.0369%

16 số 8 14 124 0 KHÔNG 11025 11025.7056 0,0064%

32 số 8 14 62 0 KHÔNG 11025 11025.7056 0,0064%

16 7 10 139 1 KHÔNG 8000 8000.51203 0,0064%

32 7 20 139 1 KHÔNG 8000 8000.51203 0,0064%

16 5 10 2 0 Đúng 96000 97656,25 1,7253%

32 5 10 2 0 Đúng 96000 97656,25 1,7253%

16 7 12 3 1 Đúng 48000 47831.6327 0.3508%

32 7 12 3 1 Đúng 48000 47831.6327 0.3508%

16 5 9 4 0 Đúng 44100 43945.3125 0.3508%

32 5 9 4 0 Đúng 44100 43945.3125 0.3508%

16 5 9 5 1 Đúng 32000 31960.2273 0.1243%

32 5 9 5 1 Đúng 32000 31960.2273 0.1243%

16 5 13 11 1 Đúng 22050 22078.8043 0,1306%

32 5 13 11 1 Đúng 22050 22078.8043 0,1306%

16 5 9 11 0 Đúng 16000 15980.1136 0.1243%

32 5 9 11 0 Đúng 16000 15980.1136 0.1243%

16 số 8 14 15 1 Đúng 11025 11025.7056 0,0064%

32 số 8 14 15 1 Đúng 11025 11025.7056 0,0064%

16 số 8 20 30 1 Đúng 8000 8004.61066 0,0576%

32 số 8 20 30 1 Đúng 8000 8004.61066 0,0576%

734/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

Bảng 185. Độ chính xác tần số âm thanh sử dụng chuẩn 14,7456 MHz và PLL3
(chỉ các thiết bị có đường kết nối)

Độ Mục fs thực sự
PREDIV2 PLL3MUL I2SDIV I2SODD MCLK Lỗi
dài dữ liệu tiêu fs(Hz) (KHz)

16 3 10 16 0 số 96000 96000 0,0000%

32 3 10 số 8 0 số 96000 96000 0,0000%

16 3 10 32 0 số 48000 48000 0,0000%

32 3 10 16 0 số 48000 48000 0,0000%

16 4 9 23 1 Số 44100 44119.148 0,0434%

32 4 13 17 0 Số 44100 44047.059 0,1200%

16 3 10 48 0 số 32000 32000 0,0000%

32 3 10 24 0 số 32000 32000 0,0000%

16 4 20 104 1 Số 22050 22047.8469 0,0098%

32 4 9 32 1 Số 22050 22059.5745 0,0434%

16 3 10 96 0 KHÔNG 16000 16000 0,0000%

32 3 10 48 0 KHÔNG 16000 16000 0,0000%

16 4 20 209 1 KHÔNG 11025 11023.923 0,0098%

32 4 20 104 1 KHÔNG 11025 11023.923 0,0098%

16 3 10 192 0 KHÔNG 8000 8000 0,0000%

32 3 10 96 0 KHÔNG 8000 8000 0,0000%

16 3 10 2 0 Có 96000 96000 0,0000%

32 3 10 2 0 Có 96000 96000 0,0000%

16 3 10 4 0 Có 48000 48000 0,0000%

32 3 10 4 0 Có 48000 48000 0,0000%

16 4 20 6 1 Có 44100 44307.6923 0,4710%

32 4 20 6 1 Có 44100 44307.6923 0,4710%

16 3 10 6 0 Có 32000 32000 0,0000%

32 3 10 6 0 Có 32000 32000 0,0000%

16 4 13 số 8 1 Có 22050 22023.5294 0,1200%

32 4 13 số 8 1 Có 22050 22023.5294 0,1200%

16 3 10 12 0 Có 16000 16000 0,0000%

32 3 10 12 0 Có 16000 16000 0,0000%

16 4 13 17 0 Đúng 11025 11029.7872 0,0434%

32 4 13 17 0 Đúng 11025 11029.7872 0,0434%

16 3 10 24 0 Đúng 8000 8000 0,0000%

32 3 10 24 0 Đúng 8000 8000 0,0000%

RM0008 Phiên bản 21 735/1136


751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

25.4.4 Chế độ chính I2S

I2S có thể được cấu hình ở chế độ chính để truyền và nhận. Điều này có nghĩa là đồng hồ nối tiếp
được tạo ra trên chân CK cũng như tín hiệu Chọn Từ WS. Đồng hồ chủ (MCK) có thể xuất ra hoặc
không, nhờ vào bit MCKOE trong thanh ghi SPI_I2SPR.

Thủ tục

1. Chọn các bit I2SDIV[7:0] trong thanh ghi SPI_I2SPR để xác định tốc độ truyền của đồng hồ
nối tiếp nhằm đạt được tần số mẫu âm thanh thích hợp. Bit ODD trong thanh ghi
SPI_I2SPR cũng phải được xác định.

2. Chọn bit CKPOL để xác định mức ổn định cho đồng hồ truyền thông. Đặt
Bit MCKOE trong thanh ghi SPI_I2SPR nếu xung nhịp chính MCK cần được cung cấp cho thành
phần âm thanh DAC/ADC bên ngoài (các giá trị I2SDIV và ODD phải được tính toán tùy
thuộc vào trạng thái của đầu ra MCK, để biết thêm chi tiết, hãy tham khảo Mục
25.4.3 : Bộ tạo đồng hồ).

3. Đặt bit I2SMOD trong SPI_I2SCFGR để kích hoạt các chức năng I2S và chọn tiêu chuẩn I 2S thông
qua các bit I2SSTD[1:0] và PCMSYNC, độ dài dữ liệu thông qua các bit DATLEN[1:0] và số bit
trên mỗi kênh bằng cách cấu hình bit CHLEN.
Đồng thời chọn hướng và chế độ chính I2S (Bộ phát hoặc Bộ thu) thông qua các bit
I2SCFG[1:0] trong thanh ghi SPI_I2SCFGR.
4. Nếu cần, hãy chọn tất cả các nguồn gián đoạn tiềm ẩn và khả năng DMA bằng cách ghi vào
thanh ghi SPI_CR2.

5. Bit I2SE trong thanh ghi SPI_I2SCFGR phải được đặt.

WS và CK được cấu hình ở chế độ đầu ra. MCK cũng là đầu ra nếu bit MCKOE trong SPI_I2SPR
được đặt.

Trình tự truyền

Trình tự truyền bắt đầu khi một nửa từ được ghi vào bộ đệm Tx.

Giả sử, dữ liệu đầu tiên được ghi vào bộ đệm Tx tương ứng với dữ liệu còn lại của kênh.
Khi dữ liệu được truyền từ bộ đệm Tx sang thanh ghi dịch, TXE được thiết lập và dữ liệu
tương ứng với kênh Right phải được ghi vào bộ đệm Tx. Cờ CHSIDE cho biết kênh nào sẽ được
truyền đi. Nó có ý nghĩa khi cờ TXE được đặt vì cờ CHSIDE được cập nhật khi TXE lên cao.

Khung hình đầy đủ phải được coi là truyền dữ liệu kênh trái, sau đó là truyền dữ liệu kênh
phải. Không thể có một phần khung trong đó chỉ có kênh bên trái được gửi.

Nửa từ dữ liệu được tải song song vào thanh ghi dịch chuyển 16 bit trong quá trình
truyền bit đầu tiên, sau đó được chuyển ra ngoài, nối tiếp, sang chân MOSI/SD, MSB trước tiên.
Cờ TXE được đặt sau mỗi lần chuyển từ bộ đệm Tx sang thanh ghi dịch và một ngắt được tạo ra nếu
bit TXEIE trong thanh ghi SPI_CR2 được đặt.

Để biết thêm chi tiết về các thao tác ghi tùy thuộc vào chế độ tiêu chuẩn I2S đã chọn, hãy tham
khảo Phần 25.4.2: Các giao thức âm thanh được hỗ trợ).

Để đảm bảo truyền dữ liệu âm thanh liên tục, bắt buộc phải ghi SPI_DR với dữ liệu tiếp theo sẽ
truyền trước khi kết thúc quá trình truyền hiện tại.

Để tắt I2S, bằng cách xóa I2SE, bắt buộc phải đợi TXE = 1 và BSY = 0.

736/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

Trình tự tiếp nhận

Chế độ vận hành giống như đối với chế độ truyền ngoại trừ điểm 3 (tham khảo quy trình
được mô tả trong Phần 25.4.4: Chế độ chính I2S ), trong đó cấu hình nên đặt chế độ
thu chính thông qua I2SCFG[1:0] chút ít.

Bất kể dữ liệu hay độ dài kênh, dữ liệu âm thanh đều được nhận bằng gói 16 bit. Điều này
có nghĩa là mỗi khi bộ đệm Rx đầy, cờ RXNE được đặt và ngắt được tạo ra nếu bit RXNEIE được
đặt trong thanh ghi SPI_CR2. Tùy thuộc vào cấu hình dữ liệu và độ dài kênh, giá trị âm
thanh nhận được cho kênh phải hoặc kênh trái có thể là kết quả của một hoặc hai lần tiếp nhận
vào bộ đệm Rx.

Việc xóa bit RXNE được thực hiện bằng cách đọc thanh ghi SPI_DR.

CHSIDE được cập nhật sau mỗi lần tiếp nhận. Nó nhạy cảm với tín hiệu WS được tạo bởi ô
I 2S.

Để biết thêm chi tiết về các thao tác đọc tùy thuộc vào chế độ tiêu chuẩn I2S đã chọn, hãy tham
khảo Phần 25.4.2: Các giao thức âm thanh được hỗ trợ.

Nếu dữ liệu được nhận trong khi dữ liệu đã nhận trước đó chưa được đọc thì lỗi tràn sẽ
được tạo và cờ OVR được đặt. Nếu bit ERRIE được đặt trong thanh ghi SPI_CR2, một ngắt
sẽ được tạo ra để báo lỗi.

Để tắt I2S, cần có các hành động cụ thể để đảm bảo rằng I2S hoàn thành chu trình
truyền đúng cách mà không cần bắt đầu truyền dữ liệu mới. Trình tự phụ thuộc vào cấu hình
dữ liệu và độ dài kênh cũng như chế độ giao thức âm thanh được chọn. Trong trường hợp:

• Độ dài dữ liệu 16 bit được mở rộng trên độ dài kênh 32 bit (DATLEN = 00 và CHLEN =
1) bằng chế độ điều chỉnh LSB (I2SSTD = 10)

a) Đợi giây cuối cùng RXNE = 1 (n – 1)

b) Sau đó đợi 17 chu kỳ xung nhịp I2S (sử dụng vòng lặp phần mềm)

c) Tắt I2S (I2SE = 0)


• Độ dài dữ liệu 16 bit được mở rộng trên độ dài kênh 32 bit (DATLEN = 00 và CHLEN = 1) trong
MSB hợp lý, chế độ I2S hoặc PCM (lần lượt là I2SSTD = 00, I2SSTD = 01 hoặc
I2SSTD = 11)

a) Đợi RXNE cuối cùng

b) Sau đó đợi 1 chu kỳ xung nhịp I2S (dùng vòng lặp phần mềm)

c) Tắt I2S (I2SE = 0)


• Đối với tất cả các kết hợp DATLEN và CHLEN khác, bất kể chế độ âm thanh nào được chọn
thông qua các bit I2SSTD, hãy thực hiện trình tự sau để tắt I2S :

a) Đợi giây cuối cùng RXNE = 1 (n – 1)

b) Sau đó đợi một chu kỳ xung nhịp I2S (sử dụng vòng lặp phần mềm)

c) Tắt I2S (I2SE = 0)

Ghi chú: Cờ BSY được giữ ở mức thấp trong quá trình chuyển.

25.4.5 Chế độ nô lệ I2S

Ở chế độ nô lệ, I2S có thể được cấu hình ở chế độ truyền hoặc nhận. Chế độ vận hành chủ
yếu tuân theo các quy tắc tương tự như được mô tả cho cấu hình chính I2S . Ở chế độ
nô lệ, không có đồng hồ nào được tạo ra bởi giao diện I2S . Đồng hồ và WS

RM0008 Phiên bản 21 737/1136

751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

tín hiệu là đầu vào từ master bên ngoài được kết nối với giao diện I2S . Khi đó người dùng không
cần phải cấu hình đồng hồ.

Các bước cấu hình cần tuân theo được liệt kê dưới đây:

1. Đặt bit I2SMOD trong thanh ghi SPI_I2SCFGR để đạt được các chức năng I2S và chọn tiêu chuẩn I2S
thông qua các bit I2SSTD[1:0], độ dài dữ liệu thông qua các bit DATLEN[1:0] và số bit trên
mỗi kênh cho khung cấu hình bit CHLEN. Đồng thời chọn chế độ (truyền hoặc nhận) cho nô lệ
thông qua các bit I2SCFG[1:0] trong thanh ghi SPI_I2SCFGR.

2. Nếu cần, hãy chọn tất cả các nguồn ngắt tiềm năng và khả năng DMA bằng cách ghi vào thanh ghi
SPI_CR2.

3. Bit I2SE trong thanh ghi SPI_I2SCFGR phải được đặt.

Trình tự truyền

Trình tự truyền bắt đầu khi thiết bị chính bên ngoài gửi đồng hồ và khi tín hiệu NSS_WS yêu cầu
truyền dữ liệu. Slave phải được kích hoạt trước khi master bên ngoài bắt đầu giao tiếp. Thanh ghi dữ
liệu I2S phải được tải trước khi thiết bị chủ bắt đầu giao tiếp.

Đối với các chế độ I2S, MSB và LSB, mục dữ liệu đầu tiên được ghi vào thanh ghi dữ liệu tương ứng
với dữ liệu cho kênh bên trái. Khi quá trình truyền thông bắt đầu, dữ liệu sẽ được chuyển từ bộ đệm
Tx sang thanh ghi dịch. Cờ TXE sau đó được đặt để yêu cầu ghi dữ liệu kênh phù hợp vào thanh ghi dữ
liệu I2S .

Cờ CHSIDE cho biết kênh nào sẽ được truyền đi. So với chế độ truyền chính, ở chế độ phụ, CHSIDE
nhạy cảm với tín hiệu WS đến từ chủ bên ngoài. Điều này có nghĩa là thiết bị phụ cần phải sẵn sàng
truyền dữ liệu đầu tiên trước khi đồng hồ được thiết bị chủ tạo ra. Xác nhận WS tương ứng với
kênh bên trái được truyền trước.

Ghi chú: I2SE phải được ghi ít nhất hai chu kỳ PCLK trước khi đồng hồ đầu tiên của master xuất hiện trên
đường CK.

Nửa từ dữ liệu được tải song song vào thanh ghi dịch chuyển 16 bit (từ bus bên trong) trong quá
trình truyền bit đầu tiên, sau đó được chuyển ra ngoài theo thứ tự sang MSB chân MOSI/SD trước tiên.
Cờ TXE được đặt sau mỗi lần chuyển từ bộ đệm Tx sang thanh ghi dịch và một ngắt được tạo ra nếu bit
TXEIE trong thanh ghi SPI_CR2 được đặt.

Lưu ý rằng cờ TXE phải được kiểm tra ở mức 1 trước khi thử ghi bộ đệm Tx.

Để biết thêm chi tiết về các thao tác ghi tùy thuộc vào chế độ tiêu chuẩn I2S đã chọn, hãy tham khảo
Phần 25.4.2: Các giao thức âm thanh được hỗ trợ.

Để đảm bảo việc truyền dữ liệu âm thanh liên tục, bắt buộc phải ghi vào thanh ghi SPI_DR với
dữ liệu tiếp theo sẽ truyền trước khi kết thúc quá trình truyền hiện tại. Cờ chạy chậm được
đặt và ngắt có thể được tạo nếu dữ liệu không được ghi vào thanh ghi SPI_DR trước cạnh đồng hồ
đầu tiên của lần truyền dữ liệu tiếp theo. Điều này cho phần mềm biết rằng dữ liệu được truyền sai.
Nếu bit ERRIE được đặt vào thanh ghi SPI_CR2, thì ngắt sẽ được tạo khi cờ UDR trong thanh ghi SPI_SR
lên cao. Trong trường hợp này, bắt buộc phải tắt I2S và khởi động lại quá trình truyền dữ liệu bắt
đầu từ kênh bên trái.

Để tắt I2S, bằng cách xóa bit I2SE, bắt buộc phải đợi TXE = 1 và BSY = 0.

738/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

Trình tự tiếp nhận

Chế độ vận hành giống như đối với chế độ truyền ngoại trừ điểm 1 (tham khảo quy trình được mô
tả trong Phần 25.4.5: Chế độ phụ I2S ), trong đó cấu hình nên đặt chế độ thu chính bằng cách
sử dụng I2SCFG[1:0] bit trong thanh ghi SPI_I2SCFGR.

Bất kể độ dài dữ liệu hay độ dài kênh, dữ liệu âm thanh đều được nhận bằng gói 16 bit.
Điều này có nghĩa là mỗi khi bộ đệm RX đầy, cờ RXNE trong thanh ghi SPI_SR được đặt và
một ngắt được tạo ra nếu bit RXNEIE được đặt trong thanh ghi SPI_CR2.
Tùy thuộc vào cấu hình độ dài dữ liệu và độ dài kênh, giá trị âm thanh nhận được cho kênh bên
phải hoặc bên trái có thể là kết quả của một hoặc hai lần tiếp nhận vào bộ đệm RX.

Cờ CHSIDE được cập nhật mỗi khi nhận được dữ liệu để đọc từ SPI_DR. Nó nhạy cảm với dòng
WS bên ngoài được quản lý bởi thành phần chính bên ngoài.

Việc xóa bit RXNE được thực hiện bằng cách đọc thanh ghi SPI_DR.

Để biết thêm chi tiết về các thao tác đọc tùy thuộc vào chế độ tiêu chuẩn I2S đã chọn, hãy tham
khảo Phần 25.4.2: Các giao thức âm thanh được hỗ trợ.

Nếu dữ liệu được nhận trong khi dữ liệu đã nhận trước đó chưa được đọc thì lỗi tràn sẽ được
tạo và cờ OVR được đặt. Nếu bit ERRIE được đặt trong thanh ghi SPI_CR2, một ngắt sẽ
được tạo ra để báo lỗi.

Để tắt I2S ở chế độ thu, I2SE phải bị xóa ngay sau khi nhận được RXNE = 1 cuối cùng.

Ghi chú: Các thành phần chính bên ngoài phải có khả năng gửi/nhận dữ liệu trong 16-
gói bit hoặc 32 bit qua kênh âm thanh.

25.4.6 Cờ trạng thái


Ba cờ trạng thái được cung cấp cho ứng dụng để giám sát đầy đủ trạng thái của bus I2S .

Cờ bận (BSY)

Cờ BSY được đặt và xóa bằng phần cứng (việc ghi vào cờ này không có hiệu lực). Nó cho biết
trạng thái của lớp giao tiếp của I2S.

Khi BSY được đặt, nó cho biết I2S đang bận liên lạc. Có một ngoại lệ trong chế độ nhận chính
(I2SCFG = 11) trong đó cờ BSY được giữ ở mức thấp trong quá trình nhận.

Cờ BSY rất hữu ích để phát hiện kết thúc truyền nếu phần mềm cần tắt I2S .
Điều này tránh làm hỏng lần chuyển cuối cùng. Đối với điều này, thủ tục được mô tả dưới đây phải được
tôn trọng nghiêm ngặt.

Cờ BSY được đặt khi quá trình truyền bắt đầu, ngoại trừ khi I2S ở chế độ bộ thu chính.

Cờ BSY bị xóa:

• khi quá trình truyền hoàn tất (ngoại trừ ở chế độ truyền chính, trong đó quá
trình truyền được cho là liên tục)
• khi I2S bị vô hiệu hóa

Khi truyền thông liên tục:

• Trong chế độ truyền chính, cờ BSY được giữ ở mức cao trong tất cả các lần truyền
• Ở chế độ nô lệ, cờ BSY ở mức thấp trong một chu kỳ xung nhịp I2S giữa mỗi lần truyền

Ghi chú: Không sử dụng cờ BSY để xử lý mỗi lần truyền hoặc nhận dữ liệu. Thay vào đó, tốt hơn là sử
dụng cờ TXE và RXNE.

RM0008 Phiên bản 21 739/1136

751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

Cờ trống bộ đệm Tx (TXE)

Khi được đặt, cờ này cho biết bộ đệm Tx trống và dữ liệu tiếp theo được truyền có thể được
tải vào đó. Cờ TXE được đặt lại khi bộ đệm Tx đã chứa dữ liệu cần truyền. Nó cũng được đặt
lại khi I2S bị tắt (bit I2SE được đặt lại).

Bộ đệm RX không trống (RXNE)

Khi được đặt, cờ này cho biết có dữ liệu nhận được hợp lệ trong Bộ đệm RX. Nó được đặt
lại khi thanh ghi SPI_DR được đọc.

Cờ bên kênh (CHSIDE)

Ở chế độ truyền, cờ này được làm mới khi TXE lên cao. Nó cho biết phía kênh mà dữ liệu
được truyền trên SD phải thuộc về phía đó. Trong trường hợp xảy ra sự kiện lỗi chạy chậm ở
chế độ truyền phụ, cờ này không đáng tin cậy và I2S cần được tắt và bật trước khi tiếp
tục liên lạc.

Ở chế độ tiếp nhận, cờ này được làm mới khi dữ liệu được nhận vào SPI_DR. Nó cho biết dữ
liệu từ phía kênh nào đã được nhận. Lưu ý rằng trong trường hợp có lỗi (như OVR), cờ này
trở nên vô nghĩa và I2S phải được đặt lại bằng cách tắt rồi bật nó (với cấu hình nếu cần
thay đổi).

Cờ này không có ý nghĩa trong tiêu chuẩn PCM (đối với cả chế độ khung hình Ngắn và Dài).

Khi cờ OVR hoặc UDR trong SPI_SR được đặt và bit ERRIE trong SPI_CR2 cũng được đặt, một ngắt
sẽ được tạo ra. Ngắt này có thể được xóa bằng cách đọc thanh ghi trạng thái SPI_SR
(khi nguồn ngắt đã bị xóa).

25.4.7 Cờ lỗi
Có hai cờ lỗi cho ô I2S .

Cờ chạy ngầm (UDR)

Ở chế độ truyền phụ, cờ này được đặt khi đồng hồ đầu tiên để truyền dữ liệu xuất hiện trong
khi phần mềm chưa tải bất kỳ giá trị nào vào SPI_DR. Nó khả dụng khi bit I2SMOD trong
SPI_I2SCFGR được đặt. Một ngắt có thể được tạo ra nếu bit ERRIE trong SPI_CR2 được đặt.

Bit UDR được xóa bằng thao tác đọc trên thanh ghi SPI_SR.

Cờ tràn (OVR)

Cờ này được đặt khi dữ liệu được nhận và dữ liệu trước đó chưa được đọc từ SPI_DR. Kết
quả là dữ liệu đến bị mất. Một ngắt có thể được tạo ra nếu bit ERRIE được đặt trong SPI_CR2.

Trong trường hợp này, nội dung bộ đệm nhận không được cập nhật với dữ liệu mới nhận được
từ thiết bị phát. Thao tác đọc vào thanh ghi SPI_DR sẽ trả về dữ liệu đã nhận chính
xác trước đó. Tất cả các nửa từ được truyền sau đó đều bị mất.

Việc xóa bit OVR được thực hiện bằng thao tác đọc trên thanh ghi SPI_DR, sau đó là quyền truy
cập đọc vào thanh ghi SPI_SR.

25.4.8 I2S ngắt


Bảng 186 cung cấp danh sách các ngắt I2S .

740/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

Bảng 186. Yêu cầu ngắt I2S

Sự kiện gián đoạn Cờ sự kiện Kích hoạt bit điều khiển

Truyền cờ trống bộ đệm TXE TXEIE

Cờ nhận bộ đệm không trống RXNE RXNEIE

Lỗi tràn OVR


errie
Lỗi chạy ngầm UDR

Tính năng DMA 25.4.9

DMA đang hoạt động theo cách tương tự như đối với chế độ SPI. Không có sự khác biệt
trên I 2S. Chỉ có tính năng CRC là không khả dụng ở chế độ I2S do không có hệ thống
bảo vệ truyền dữ liệu.

RM0008 Phiên bản 21 741/1136

751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

25,5 Thanh ghi SPI và I2S


Các thanh ghi ngoại vi phải được truy cập bằng nửa từ (16 bit) hoặc từ (32 bit).

25.5.1 Thanh ghi điều khiển SPI 1 (SPI_CR1) (không được sử dụng trong chế độ I2S )

Độ lệch địa chỉ: 0x00

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

BIDI BIDI CRC CRC RX LSB


DFF SSM SSI TỐC ĐỘ BR [2:0] MSTR CPOL CPHA
CÁCH THỨC OE VN KẾ TIẾP CHỈ MỘT ĐẦU TIÊN

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15 BIDIMODE: Cho phép chế độ dữ liệu hai chiều

0: Đã chọn chế độ dữ liệu một chiều 2 dòng

1: Đã chọn chế độ dữ liệu hai chiều 1 dòng

Lưu ý: Bit này không được sử dụng trong chế độ I2S

Bit 14 BIDIOE: Cho phép đầu ra ở chế độ hai chiều

Bit này kết hợp với bit BIDImode chọn hướng truyền ở chế độ hai chiều

0: Đầu ra bị vô hiệu hóa (chế độ chỉ nhận)

1: Đã bật đầu ra (chế độ chỉ truyền)

Lưu ý: Bit này không được sử dụng trong chế độ I2S .

Ở chế độ chính, chân MOSI được sử dụng trong khi chân MISO được sử dụng ở chế độ phụ.

Bit 13 CRCEN: Cho phép tính toán CRC phần cứng

0: Tính toán CRC bị vô hiệu hóa

1: Đã bật tính toán CRC

Lưu ý: Bit này chỉ nên được ghi khi SPI bị tắt (SPE = '0') để hoạt động chính xác.

Nó không được sử dụng ở chế độ I2S .

Bit 12 CRCNEXT: Chuyển CRC tiếp theo

0: Pha dữ liệu (không có pha CRC)

1: Lần truyền tiếp theo là CRC (pha CRC)

Lưu ý: Khi SPI được cấu hình ở chế độ song công hoàn toàn hoặc chỉ phát, CRCNEXT phải được ghi ngay khi dữ liệu

cuối cùng được ghi vào thanh ghi SPI_DR.

Khi SPI được cấu hình ở chế độ chỉ bộ thu, CRCNEXT phải được đặt sau lần nhận dữ liệu cuối cùng thứ

hai.

Bit này phải được giữ sạch khi việc truyền được quản lý bởi DMA.
Nó không được sử dụng ở chế độ I2S .

Bit 11 DFF: Định dạng khung dữ liệu

0: Định dạng khung dữ liệu 8 bit được chọn để truyền/nhận

1: Định dạng khung dữ liệu 16 bit được chọn để truyền/nhận

Lưu ý: Bit này chỉ nên được ghi khi SPI bị tắt (SPE = '0') để hoạt động chính xác.

Nó không được sử dụng ở chế độ I2S .

742/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

Bit 10 RXONLY: Chỉ nhận

Bit này kết hợp với bit BIDImode chọn hướng truyền ở chế độ một chiều 2 dòng. Bit này cũng

hữu ích trong hệ thống đa nô lệ trong đó nô lệ cụ thể này không được truy cập, đầu ra từ nô lệ được
truy cập không bị hỏng.

0: Song công hoàn toàn (Truyền và nhận)

1: Đầu ra bị vô hiệu hóa (Chế độ chỉ nhận)

Lưu ý: Bit này không được sử dụng trong chế độ I2S

Bit 9 SSM: Quản lý phần mềm phụ Khi bit SSM

được đặt, đầu vào chân NSS được thay thế bằng giá trị từ bit SSI.

0: Đã tắt quản lý phần mềm phụ 1: Đã bật quản

lý phần mềm phụ

Lưu ý: Bit này không được sử dụng trong chế độ I2S

Bit 8 SSI: Chọn nô lệ nội bộ

Bit này chỉ có hiệu lực khi bit SSM được đặt. Giá trị của bit này được ép vào chân NSS và giá trị IO
của chân NSS bị bỏ qua.

Lưu ý: Bit này không được sử dụng trong chế độ I2S

Bit 7 LSBFIRST: Định dạng khung

0: MSB được truyền trước

1: LSB được truyền trước

Lưu ý: Bit này không nên thay đổi khi quá trình giao tiếp đang diễn ra.

Nó không được sử dụng ở chế độ I2S

Bit 6 SPE: Kích hoạt SPI

0: Vô hiệu hóa thiết bị

ngoại vi 1: Kích hoạt ngoại

vi Lưu ý: Bit này không được sử dụng trong chế độ I2S .

Khi tắt SPI, hãy làm theo quy trình được mô tả trong Phần 25.3.8.

Bit 5:3 BR[2:0]: Kiểm soát tốc độ truyền

000: fPCLK/2

001: fPCLK/4

010: fPCLK/8

011: fPCLK/16

100: fPCLK /32

101: fPCLK/64

110: fPCLK/128

111 : fPCLK/256

Lưu ý: Những bit này không nên thay đổi khi quá trình giao tiếp đang diễn ra.

Chúng không được sử dụng ở chế độ I2S .

Bit 2 MSTR: Lựa chọn chính

0: Cấu hình phụ

1: Cấu hình chính

Lưu ý: Bit này không nên thay đổi khi quá trình giao tiếp đang diễn ra.

Nó không được sử dụng ở chế độ I2S .

RM0008 Phiên bản 21 743/1136

751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

Bit1 CPOL: Phân cực đồng hồ

0: CK về 0 khi không hoạt động

1: CK lên 1 khi không hoạt động

Lưu ý: Bit này không nên thay đổi khi quá trình giao tiếp đang diễn ra.

Nó không được sử dụng ở chế độ I2S

Bit 0 CPHA: Pha đồng hồ

0: Chuyển đổi xung nhịp đầu tiên là cạnh thu thập dữ liệu đầu tiên

1: Chuyển tiếp xung nhịp thứ hai là cạnh thu thập dữ liệu đầu tiên

Lưu ý: Bit này không nên thay đổi khi quá trình giao tiếp đang diễn ra.

Nó không được sử dụng ở chế độ I2S

25.5.2 Thanh ghi điều khiển SPI 2 (SPI_CR2)

Độ lệch địa chỉ: 0x04

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

TXEIE RXNEIE ERRIE Res. Res. SSOE TXDMAEN RXDMAEN


Kín đáo

rw rw rw rw rw rw

Bit 15:8 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 7 TXEIE: Cho phép ngắt trống bộ đệm Tx

0: Ngắt TXE bị che 1: Ngắt

TXE không bị che. Được sử dụng để tạo yêu cầu ngắt khi cờ TXE được đặt.

Bit 6 RXNEIE: Bộ đệm RX không trống cho phép ngắt

0: Ngắt RXNE bị che 1: Ngắt

RXNE không bị che. Được sử dụng để tạo yêu cầu ngắt khi cờ RXNE được đặt.

Bit 5 ERRIE: Cho phép ngắt lỗi

Bit này điều khiển việc tạo ra ngắt khi xảy ra tình trạng lỗi (CRCERR, OVR, MODF ở chế độ SPI và UDR, OVR
ở chế độ I2S ).

0: Lỗi ngắt bị che dấu

1: Ngắt lỗi được bật

Bit 4:3 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 2 SSOE: Cho phép đầu ra SS

0: Đầu ra SS bị tắt ở chế độ chính và ô có thể hoạt động trong cấu hình multimaster

1: Đầu ra SS được bật ở chế độ chính và khi ô được bật. Ô không thể hoạt động trong môi trường đa chủ.

Lưu ý: Bit này không được sử dụng trong chế độ I2S

744/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

Bit 1 TXDMAEN: Cho phép DMA đệm Tx

Khi bit này được đặt, yêu cầu DMA được thực hiện bất cứ khi nào cờ TXE được đặt.
0: DMA đệm Tx bị vô hiệu hóa

1: Đã bật DMA bộ đệm Tx

Bit 0 RXDMAEN: Kích hoạt DMA bộ đệm Rx

Khi bit này được đặt, yêu cầu DMA được thực hiện bất cứ khi nào cờ RXNE được đặt.
0: DMA đệm Rx bị tắt

1: Đã bật DMA bộ đệm Rx

25.5.3 Thanh ghi trạng thái SPI (SPI_SR)

Độ lệch địa chỉ: 0x08

Đặt lại giá trị: 0x0002

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CRC
BSY OVR MODF UDR CHSIDE TXE RXNE
LỖI
Kín đáo

r r r rc_w0 r r r r

Bit 15:8 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 7 BSY: Cờ bận

0: SPI (hoặc I2S) không bận


1: SPI (hoặc I2S) đang bận giao tiếp hoặc bộ đệm Tx không trống
Cờ này được thiết lập và xóa bằng phần cứng.

Lưu ý: Cờ BSY phải được sử dụng một cách thận trọng: tham khảo Mục 25.3.7 và Mục 25.3.8.

Bit 6 OVR: Cờ tràn

0: Không xảy ra lỗi tràn

1: Xảy ra quá tải

Cờ này được đặt bằng phần cứng và được đặt lại theo trình tự phần mềm. Tham khảo Phần 25.4.7: Cờ lỗi

cho trình tự phần mềm.

Bit 5 MODF: Lỗi chế độ

0: Không xảy ra lỗi chế độ

1: Xảy ra lỗi chế độ

Cờ này được đặt bằng phần cứng và được đặt lại theo trình tự phần mềm. Tham khảo Phần 25.4.7: Cờ lỗi

cho trình tự phần mềm.


Lưu ý: Bit này không được sử dụng trong chế độ I2S

Bit 4 CRCERR: Cờ báo lỗi CRC

0: Giá trị CRC nhận được khớp với giá trị SPI_RXCRCR
1: Giá trị CRC nhận được không khớp với giá trị SPI_RXCRCR

Cờ này được đặt bằng phần cứng và bị xóa bằng phần mềm ghi 0.

Lưu ý: Bit này không được sử dụng trong chế độ I2S .

Bit 3 UDR: Cờ chạy thiếu

0: Không xảy ra tình trạng chạy hụt

1: Xảy ra lỗi chạy ngầm

Cờ này được đặt bằng phần cứng và được đặt lại theo trình tự phần mềm. Tham khảo Phần 25.4.7: Cờ lỗi

cho trình tự phần mềm.


Lưu ý: Bit này không được sử dụng trong chế độ SPI.

RM0008 Phiên bản 21 745/1136

751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

Bit 2 CHSIDE: Phía kênh

0: Kênh còn lại phải được truyền hoặc đã được nhận

1: Quyền kênh phải được truyền hoặc đã được nhận

Lưu ý: Bit này không được sử dụng cho chế độ SPI và vô nghĩa trong chế độ PCM.

Bit 1 TXE: Bộ đệm truyền trống

0: Bộ đệm Tx không trống


1: Bộ đệm TX trống

Bit 0 RXNE: Bộ đệm nhận không trống

0: Bộ đệm Rx trống
1: Bộ đệm Rx không trống

Thanh ghi dữ liệu SPI 25.5.4 (SPI_DR)

Độ lệch địa chỉ: 0x0C

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DR[15:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15:0 DR[15:0]: Thanh ghi dữ liệu

Dữ liệu đã nhận hoặc sẽ được truyền.

Thanh ghi dữ liệu được chia thành 2 bộ đệm - một để ghi (Bộ đệm truyền) và một bộ đệm khác để đọc (Bộ đệm
nhận). Việc ghi vào thanh ghi dữ liệu sẽ ghi vào bộ đệm Tx và việc đọc từ thanh ghi dữ liệu sẽ trả về giá
trị được giữ trong bộ đệm Rx.

Lưu ý: Những lưu ý này áp dụng cho chế độ SPI:

Tùy thuộc vào bit chọn định dạng khung dữ liệu (DFF trong thanh ghi SPI_CR1), dữ liệu được gửi hoặc
nhận là 8 bit hoặc 16 bit. Lựa chọn này phải được thực hiện trước khi kích hoạt SPI để đảm bảo hoạt
động chính xác.

Đối với khung dữ liệu 8 bit, bộ đệm là 8 bit và chỉ LSB của thanh ghi (SPI_DR[7:0]) được
sử dụng để truyền/nhận. Khi ở chế độ tiếp nhận, MSB của thanh ghi (SPI_DR[15:8]) bị buộc về 0.

Đối với khung dữ liệu 16 bit, bộ đệm là 16 bit và toàn bộ thanh ghi SPI_DR[15:0] được sử dụng để
truyền/nhận.

25.5.5 Thanh ghi đa thức SPI CRC (SPI_CRCPR) (không được sử dụng trong I2S
cách thức)

Độ lệch địa chỉ: 0x10

Đặt lại giá trị: 0x0007

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CRCPOLY[15:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

746/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

Bit 15:0 CRCPOLY[15:0]: Thanh ghi đa thức CRC

Thanh ghi này chứa đa thức để tính toán CRC.

Đa thức CRC (0007h) là giá trị đặt lại của thanh ghi này. Một đa thức khác có thể được cấu hình theo yêu
cầu.

Lưu ý: Các bit này không được sử dụng cho chế độ I2S .

25.5.6 Thanh ghi SPI RX CRC (SPI_RXCRCR) (không được sử dụng ở chế độ I2S )

Độ lệch địa chỉ: 0x14

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

RXCRC[15:0]
rrrrrrrrrrrrrrr

Bit 15:0 RXCRC[15:0]: Thanh ghi Rx CRC

Khi tính toán CRC được bật, các bit RxCRC[15:0] chứa giá trị CRC được tính toán của các byte nhận được sau
đó. Thanh ghi này được đặt lại khi bit CRCEN trong thanh ghi SPI_CR1 được ghi thành 1. CRC được tính
toán tuần tự bằng cách sử dụng đa thức được lập trình trong thanh ghi SPI_CRCPR.

Chỉ 8 bit LSB được xem xét khi định dạng khung dữ liệu được đặt thành dữ liệu 8 bit (bit DFF của SPI_CR1
bị xóa). Tính toán CRC được thực hiện dựa trên bất kỳ tiêu chuẩn CRC8 nào.

Toàn bộ 16 bit của thanh ghi này được xem xét khi chọn định dạng khung dữ liệu 16 bit (bit DFF của thanh
ghi SPI_CR1 được đặt). Tính toán CRC được thực hiện dựa trên bất kỳ tiêu chuẩn CRC16 nào.

Lưu ý: Việc đọc thanh ghi này khi Cờ BSY được đặt có thể trả về giá trị không chính xác.
Các bit này không được sử dụng cho chế độ I2S .

RM0008 Phiên bản 21 747/1136

751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

25.5.7 Thanh ghi SPI TX CRC (SPI_TXCRCR) (không được sử dụng ở chế độ I2S )

Độ lệch địa chỉ: 0x18

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

TXCRC[15:0]
rrrrrrrrrrrrrrr

Bit 15:0 TXCRC[15:0]: Thanh ghi Tx CRC

Khi tính toán CRC được bật, các bit TxCRC[7:0] chứa giá trị CRC được tính toán của các byte được truyền tiếp

theo. Thanh ghi này được đặt lại khi bit CRCEN của SPI_CR1 được ghi thành 1. CRC được tính toán tuần tự bằng

cách sử dụng đa thức được lập trình trong thanh ghi SPI_CRCPR.

Chỉ 8 bit LSB được xem xét khi định dạng khung dữ liệu được đặt thành dữ liệu 8 bit (bit DFF của SPI_CR1 bị

xóa). Tính toán CRC được thực hiện dựa trên bất kỳ tiêu chuẩn CRC8 nào.

Toàn bộ 16 bit của thanh ghi này được xem xét khi chọn định dạng khung dữ liệu 16 bit (bit DFF của thanh ghi

SPI_CR1 được đặt). Tính toán CRC được thực hiện dựa trên bất kỳ tiêu chuẩn CRC16 nào.

Lưu ý: Việc đọc thanh ghi này khi cờ BSY được đặt có thể trả về giá trị không chính xác.
Các bit này không được sử dụng cho chế độ I2S .

25.5.8 Thanh ghi cấu hình SPI_I2S (SPI_I2SCFGR)

Độ lệch địa chỉ: 0x1C

Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

PCMSY
I2SMOD I2SE I2SCFG I2SSTD CKPOL DATLEN CHLEN
NC
Kín đáo Res.
rw rw rw rw rw rw rw rw rw rw rw

Bit 15:12 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 11 I2SMOD: Lựa chọn chế độ I2S

0: Chế độ SPI được chọn

1: Chế độ I2S được chọn

Lưu ý: Bit này phải được cấu hình khi SPI hoặc I2S bị tắt

Bit 10 I2SE: Kích hoạt I2S

0: Thiết bị ngoại vi I2S bị tắt

1: Thiết bị ngoại vi I2S được bật

Lưu ý: Bit này không được sử dụng trong chế độ SPI.

Bit 9:8 I2SCFG: Chế độ cấu hình I2S

00: Nô lệ - truyền

01: Nô lệ - nhận

10: Master – truyền tải

11: Thầy - nhận

Lưu ý: Bit này phải được cấu hình khi I2S bị tắt.

Nó không được sử dụng ở chế độ SPI.

748/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

Bit 7 PCMSYNC: Đồng bộ khung PCM

0: Đồng bộ khung ngắn

1: Đồng bộ khung dài

Lưu ý: Bit này chỉ có ý nghĩa nếu I2SSTD = 11 (sử dụng tiêu chuẩn PCM)

Nó không được sử dụng ở chế độ SPI.

Bit 6 dành riêng: bị ép về 0 bởi phần cứng

Bits 5:4 I2SSTD: Lựa chọn tiêu chuẩn I2S

00: I2S tiêu chuẩn Philips.

01: Căn chuẩn MSB (canh trái)

10: LSB căn đều chuẩn (phải căn đều)


11: Tiêu chuẩn PCM

Để biết thêm chi tiết về các tiêu chuẩn I2S , hãy tham khảo Phần 25.4.2: Các giao thức âm thanh được hỗ trợ. Không được sử dụng
ở chế độ SPI.

Lưu ý: Để hoạt động chính xác, các bit này phải được cấu hình khi I2S bị tắt.

Bit 3 CKPOL: Phân cực đồng hồ trạng thái ổn định

0: Trạng thái ổn định của đồng hồ I2S ở

mức thấp 1: Trạng thái ổn định của đồng hồ

I2S ở mức cao Lưu ý: Để hoạt động chính xác, bit này phải được cấu hình khi I2S bị tắt.

Bit này không được sử dụng trong chế độ SPI

Bit 2:1 DATLEN: Độ dài dữ liệu được truyền 00: Độ dài

dữ liệu 16 bit 01: Độ

dài dữ liệu 24 bit 10:

Độ dài dữ liệu 32 bit


11: Không được phép

Lưu ý: Để hoạt động chính xác, các bit này phải được cấu hình khi I2S bị tắt.

Bit này không được sử dụng trong chế độ SPI.

Bit 0 CHLEN: Độ dài kênh (số bit trên mỗi kênh âm thanh)

0: rộng 16 bit

1: rộng 32-bit

Hoạt động ghi bit chỉ có ý nghĩa nếu DATLEN = 00 nếu không thì độ dài kênh được cố định ở mức 32 bit bằng phần cứng
bất kể giá trị được điền vào. Không được sử dụng trong chế độ SPI.

Lưu ý: Để hoạt động chính xác, bit này phải được cấu hình khi I2S bị tắt.

RM0008 Phiên bản 21 749/1136

751
Machine Translated by Google

Giao diện ngoại vi nối tiếp (SPI) RM0008

25.5.9 Thanh ghi bộ đếm trước SPI_I2S (SPI_I2SPR)

Độ lệch địa chỉ: 0x20

Giá trị đặt lại: 0000 0010 (0x0002)


15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

MCKOE Lẻ I2SDIV
Kín đáo
rw rw rw

Bit 15:10 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 9 MCKOE: Cho phép đầu ra đồng hồ chính

0: Đầu ra xung nhịp chính bị tắt

1: Đầu ra đồng hồ chính được bật

Lưu ý: Bit này phải được cấu hình khi I2S bị tắt. Nó chỉ được sử dụng khi I2S ở trạng thái chính
cách thức.

Bit này không được sử dụng trong chế độ SPI.

Bit 8 ODD: Hệ số lẻ cho bộ đếm gộp trước

0: giá trị chia thực là = I2SDIV *2

1: giá trị chia thực là = (I2SDIV * 2)+1

Tham khảo Phần 25.4.3: Bộ tạo đồng hồ. Không được sử dụng ở chế độ SPI.

Lưu ý: Bit này phải được cấu hình khi I2S bị tắt. Nó chỉ được sử dụng khi I2S ở trạng thái chính
cách thức.

Bit 7:0 I2SDIV: Bộ đếm gộp tuyến tính I2S

I2SDIV [7:0] = 0 hoặc I2SDIV [7:0] = 1 là các giá trị bị cấm.

Tham khảo Phần 25.4.3: Bộ tạo đồng hồ. Không được sử dụng ở chế độ SPI.

Lưu ý: Các bit này phải được cấu hình khi I2S bị tắt. Nó chỉ được sử dụng khi có I2S
chế độ chủ.

750/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện ngoại vi nối tiếp (SPI)

Bản đồ đăng ký SPI 25.5.10

Bảng cung cấp hiển thị bản đồ thanh ghi SPI và các giá trị đặt lại.

Bảng 187. Bản đồ đăng ký SPI và giá trị đặt lại

1
5
ố8
s

7
6

0
3
9

2
4
Bù lại

11
91

81

71

61

51

41

31

21

01
Đăng ký
13

03

92

82

72

62

52

42

32

22

12

02
SPI_CR1 BR [2:0]

ISS
FFD

ỐĐT
MSS

CỘ
0x00 Kín đáo

LOPC

AHPC
RTSM
EOIDIB

NECRC

HR
ỈX C


L
TXENCRC
EDOMIDIB

BẦ
FU
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

SPI_CR2
0x04 Kín đáo

EOSS
EIEXT

eirre
EIENXR

NEAMDXT

NEAMDXR

o íđ
K
Đặt lại giá trị 000 000

SPI_SR

YSB

EXT
RDU
RVO
0x08 Kín đáo

ENXR
FDOM

EDISHC
RRECRC
Đặt lại giá trị 00000010

SPI_DR DR[15:0]
0x0C Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

SPI_CRCPR CRCPOLY[15:0]
0x10 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1

SPI_RXCRCR RxCRC[15:0]
0x14 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

SPI_TXCRCR TxCRC[15:0]
0x18 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

SPI_I2SCFGR
ES2I

0x1C Kín đáo

LOPKC

NELHC
DTSS2I
GFCS2I
DOMS2I

NELTAD
CNYSSMCP


o íđ
K

Đặt lại giá trị 00000 000000

SPI_I2SPR I2SDIV
ỐLS

0x20 Kín đáo



EOKCM

Đặt lại giá trị 0000000010

Tham khảo Phần 3.3: Bản đồ bộ nhớ cho các địa chỉ biên của thanh ghi.

RM0008 Phiên bản 21 751/1136

751
Machine Translated by Google

Giao diện mạch tích hợp (I2C) RM0008

26 Giao diện mạch tích hợp (I2C)

Các thiết bị mật độ thấp là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

Các thiết bị có mật độ trung bình là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 64 đến 128 Kbyte.

Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ
nhớ Flash nằm trong khoảng từ 256 đến 512 Kbyte.

Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ


bộ nhớ Flash nằm trong khoảng từ 768 Kbyte đến 1 Mbyte.

Các thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

Phần này áp dụng cho toàn bộ họ STM32F10xxx, trừ khi có quy định khác.

26.1 Giới thiệu I2C

Giao diện bus I 2C (mạch tích hợp) đóng vai trò là giao diện giữa bộ vi điều khiển và bus I2C
nối tiếp . Nó cung cấp khả năng đa chủ và kiểm soát tất cả trình tự, giao thức, trọng tài
và thời gian dành riêng cho bus I2C . Nó hỗ trợ chế độ tiêu chuẩn (Sm, lên đến 100 kHz)
và chế độ Fm (Fm, lên đến 400 kHz).

Nó có thể được sử dụng cho nhiều mục đích khác nhau, bao gồm tạo và xác minh CRC, SMBus (bus
quản lý hệ thống) và PMBus (bus quản lý nguồn).

Tùy thuộc vào việc triển khai thiết bị cụ thể, khả năng DMA có thể sẵn có để giảm tình trạng
quá tải CPU.

26,2 Các tính năng chính của I2C

• Bộ chuyển đổi giao thức song song/I2C

• Khả năng Multimaster: cùng một giao diện có thể hoạt động như Master hoặc Slave
• Các tính năng của I 2C Master:

– Thế hệ đồng hồ

– Bắt đầu và dừng thế hệ


• Các tính năng của I 2C Slave:

– Phát hiện địa chỉ I2C có thể lập trình

– Khả năng đánh địa chỉ kép để xác nhận 2 địa chỉ nô lệ

– Dừng phát hiện bit

• Tạo và phát hiện địa chỉ 7 bit/10 bit và Cuộc gọi chung

• Hỗ trợ tốc độ truyền thông khác nhau:

– Tốc độ tiêu chuẩn (lên tới 100 kHz)

– Tốc độ nhanh (lên tới 400 kHz)

• Bộ lọc nhiễu tương

tự • Cờ trạng thái:

– Cờ chế độ máy phát/máy thu

752/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện mạch tích hợp (I2C)

– Cờ truyền kết thúc byte

– Cờ bận I2C
• Cờ lỗi:
– Trọng tài mất điều kiện cho chế độ chính

– Lỗi xác nhận sau khi truyền địa chỉ/dữ liệu

– Phát hiện tình trạng khởi động hoặc dừng sai vị trí

– Chạy quá mức/Chạy thiếu nếu kéo dài đồng hồ bị vô hiệu hóa

• 2 vectơ ngắt: – 1

ngắt để truyền địa chỉ/dữ liệu thành công

– 1 Ngắt cho tình trạng lỗi

• Kéo dài đồng hồ tùy chọn


• Bộ đệm 1 byte có khả năng DMA

• Tạo hoặc xác minh PEC (kiểm tra lỗi gói) có thể định cấu hình:

– Giá trị PEC có thể được truyền dưới dạng byte cuối cùng ở chế độ Tx

– Kiểm tra lỗi PEC cho byte nhận được lần cuối

• Khả năng tương thích SMBus 2.0:

– Độ trễ thời gian chờ thấp của đồng hồ 25 ms

– Thời gian kéo dài thời gian thấp của đồng hồ tích lũy chính 10 ms

– Thời gian kéo dài thời gian kéo dài thấp của đồng hồ tích lũy nô lệ 25 ms

– Tạo/xác minh PEC phần cứng với điều khiển ACK

– Hỗ trợ Giao thức phân giải địa chỉ (ARP)

• Khả năng tương thích PMBus

Ghi chú: Một số tính năng trên có thể không có ở một số sản phẩm. Người dùng nên tham khảo bảng dữ liệu
sản phẩm để xác định các tính năng cụ thể được hỗ trợ khi triển khai giao diện I2C .

26,3 Mô tả chức năng I2C


Ngoài việc nhận và truyền dữ liệu, giao diện này còn chuyển đổi nó từ dạng nối tiếp sang dạng
song song và ngược lại. Các ngắt được kích hoạt hoặc vô hiệu hóa bởi phần mềm. Giao diện
được kết nối với bus I2C bằng chân dữ liệu (SDA) và chân đồng hồ (SCL). Nó có thể được kết
nối với bus I2C tiêu chuẩn (lên đến 100 kHz) hoặc nhanh (lên đến 400 kHz) .

26.3.1 Lựa chọn chế độ

Giao diện có thể hoạt động ở một trong bốn chế độ sau:
• Máy phát nô lệ

• Người nhận nô lệ

• Máy phát chính

• Bộ thu chính

Theo mặc định, nó hoạt động ở chế độ nô lệ. Giao diện tự động chuyển từ nô lệ sang chủ, sau khi nó
tạo ra điều kiện BẮT ĐẦU và từ chủ sang phụ, nếu xảy ra mất trọng tài hoặc dừng tạo, cho phép khả năng
đa chủ.

RM0008 Phiên bản 21 753/1136

784
Machine Translated by Google

Giao diện mạch tích hợp (I2C) RM0008

Luồng giao tiếp

Ở chế độ Master, giao diện I2C bắt đầu truyền dữ liệu và tạo tín hiệu đồng hồ. Quá trình truyền
dữ liệu nối tiếp luôn bắt đầu bằng điều kiện bắt đầu và kết thúc bằng điều kiện dừng. Cả hai
điều kiện bắt đầu và dừng đều được tạo ra ở chế độ chính bằng phần mềm.

Ở chế độ Slave, giao diện có khả năng nhận dạng địa chỉ của chính nó (7 hoặc 10 bit) và địa
chỉ Cuộc gọi chung. Tính năng phát hiện địa chỉ cuộc gọi chung có thể được bật hoặc tắt bằng
phần mềm.

Dữ liệu và địa chỉ được truyền dưới dạng byte 8 bit, đầu tiên là MSB. (Các) byte đầu tiên sau
điều kiện bắt đầu chứa địa chỉ (một ở chế độ 7 bit, hai ở chế độ 10 bit). Địa chỉ luôn được
truyền ở chế độ Master.

Xung đồng hồ thứ 9 tuân theo 8 chu kỳ đồng hồ của quá trình truyền byte, trong đó bộ thu phải
gửi một bit xác nhận đến bộ phát. Tham khảo Hình 269.

Hình 269. Giao thức bus I2C

SDA

MSB ACK

SCL

1 2 89

Bắt đầu Dừng lại

tình trạng tình trạng

MS19854V1

Xác nhận có thể được kích hoạt hoặc vô hiệu hóa bởi phần mềm. Các địa chỉ giao diện I2C (địa
chỉ kép 7-bit/10-bit và/hoặc địa chỉ cuộc gọi chung) có thể được chọn bằng phần mềm.

Sơ đồ khối của giao diện I2C được hiển thị trong Hình 270.

754/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện mạch tích hợp (I2C)

Hình 270. Sơ đồ khối I2C

Đăng ký dữ liệu

Dữ liệu
Tiếng ồn
SDA Thanh ghi dịch chuyển dữ liệu
điều khiển
lọc

Bộ so sánh tính toán PEC

Đăng ký địa chỉ riêng

Thanh ghi địa chỉ kép


Cái đồng hồ
Tiếng ồn
SCL điều khiển
đăng ký PEC
lọc

Kiểm soát đồng hồ

Đăng ký (CCR)

Thanh ghi điều khiển


(CR1&CR2)
Kiểm soát

Thanh ghi trạng thái logic


(SR1&SR2)

SMBA

Ngắt Yêu cầu DMA & ACK


MS30035V1

1. SMBA là tín hiệu tùy chọn ở chế độ SMBus. Tín hiệu này không thể áp dụng nếu SMBus bị tắt.

26.3.2 Chế độ nô lệ I2C

Theo mặc định, giao diện I2C hoạt động ở chế độ Slave. Để chuyển từ chế độ Slave mặc định
sang chế độ Master, cần tạo điều kiện Bắt đầu.

Đồng hồ đầu vào ngoại vi phải được lập trình trong thanh ghi I2C_CR2 để tạo ra thời
gian chính xác. Tần số xung nhịp đầu vào ngoại vi ít nhất phải là:
• 2 MHz ở chế độ Sm

• 4 MHz ở chế độ Fm

Ngay khi phát hiện điều kiện khởi động, địa chỉ sẽ được nhận từ đường SDA và gửi đến thanh
ghi dịch. Sau đó, nó được so sánh với địa chỉ của giao diện (OAR1) và với OAR2 (nếu
ENDUAL=1) hoặc địa chỉ Cuộc gọi chung (nếu ENGC = 1).

Ghi chú: Trong chế độ đánh địa chỉ 10 bit, việc so sánh bao gồm chuỗi tiêu đề (11110xx0), trong
đó xx biểu thị hai bit quan trọng nhất của địa chỉ.

RM0008 Phiên bản 21 755/1136

784
Machine Translated by Google

Giao diện mạch tích hợp (I2C) RM0008

Tiêu đề hoặc địa chỉ không khớp: giao diện bỏ qua nó và chờ điều kiện Bắt đầu khác.

Tiêu đề khớp (chỉ ở chế độ 10 bit): giao diện tạo ra xung xác nhận nếu bit ACK được đặt và
chờ địa chỉ nô lệ 8 bit.

Địa chỉ trùng khớp: giao diện tạo theo trình tự:

• Xung xác nhận nếu bit ACK được đặt

• Bit ADDR được thiết lập bằng phần cứng và một ngắt được tạo ra nếu bit ITEVFEN được
bộ.
• Nếu ENDUAL=1, phần mềm phải đọc bit DUALF để kiểm tra địa chỉ nô lệ nào đã được xác
nhận.

Ở chế độ 10 bit, sau khi nhận được chuỗi địa chỉ, Slave luôn ở chế độ Bộ thu.
Nó sẽ chuyển sang chế độ Máy phát khi nhận được điều kiện Bắt đầu lặp lại, theo sau là chuỗi
tiêu đề với các bit địa chỉ phù hợp và tập hợp bit ít quan trọng nhất (11110xx1).

Bit TRA cho biết Slave đang ở chế độ Bộ thu hay Chế độ phát.

Máy phát nô lệ

Sau khi nhận địa chỉ và sau khi xóa ADDR, Slave sẽ gửi byte từ thanh ghi DR đến đường SDA
thông qua thanh ghi dịch chuyển bên trong.

Phần phụ kéo dài SCL ở mức thấp cho đến khi ADDR bị xóa và DR chứa đầy dữ liệu sẽ được gửi
(xem Hình 271 Trình tự truyền EV1 EV3).

Khi nhận được xung xác nhận: • Bit TxE

được thiết lập bằng phần cứng và bị ngắt nếu các bit ITEVFEN và ITBUFEN
được thiết lập.

Nếu TxE được đặt và một số dữ liệu không được ghi vào thanh ghi I2C_DR trước khi kết thúc
lần truyền dữ liệu tiếp theo, thì bit BTF được đặt và giao diện sẽ đợi cho đến khi BTF bị xóa
bằng cách đọc vào I2C_SR1, sau đó là ghi vào thanh ghi I2C_DR, kéo dài SCL ở mức thấp.

Hình 271. Sơ đồ trình tự truyền cho bộ phát phụ

Bộ phát phụ 7 bit

S Địa chỉ A Dữ liệu1 MỘT Dữ liệu2 A Dữ liệuN NA P


.....
EV1 EV3-1 EV3 EV3 EV3 EV3-2

Bộ phát nô lệ 10 bit

S Tiêu đề A Địa chỉ A

EV1

Tiêu đề Sr A Dữ liệu1 A .... Dữ liệuN NA P

EV1 EV3_1 EV3 EV3 EV3-2

Chú thích: S= Bắt đầu, Sr = Bắt đầu lặp lại, P= Dừng, A= Xác nhận, NA= Không xác nhận,
EVx= Sự kiện (có ngắt nếu ITEVFEN=1)

EV1: ADDR=1, bị xóa bằng cách đọc SR1, sau đó đọc SR2
EV3-1: TxE=1, thanh ghi thay đổi trống, thanh ghi dữ liệu trống, ghi Data1 vào DR.
EV3: TxE=1, thanh ghi dịch không trống, thanh ghi dữ liệu trống, xóa bằng cách ghi DR
EV3-2: AF=1; AF được xóa bằng cách ghi '0' vào bit AF của thanh ghi SR1.

ai18209

756/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện mạch tích hợp (I2C)

Người nhận nô lệ

Sau khi nhận địa chỉ và sau khi xóa ADDR, Slave sẽ nhận byte từ dòng SDA vào thanh ghi DR thông
qua thanh ghi dịch chuyển bên trong. Sau mỗi byte, giao diện sẽ tạo theo trình tự:

• Xung xác nhận nếu bit ACK được đặt

• Bit RxNE được thiết lập bằng phần cứng và một ngắt được tạo ra nếu ITEVFEN và
Bit ITBUFEN được thiết lập.

Nếu RxNE được đặt và dữ liệu trong thanh ghi DR không được đọc trước khi kết thúc lần nhận
dữ liệu tiếp theo, thì bit BTF được đặt và giao diện sẽ đợi cho đến khi BTF bị xóa bằng
cách đọc từ I2C_SR1, sau đó là đọc từ thanh ghi I2C_DR, kéo dài SCL xuống mức thấp (xem Hình 272
Trình tự chuyển giao).

Hình 272. Sơ đồ trình tự truyền tải cho bộ thu phụ

Bộ thu phụ 7 bit

S Địa chỉ A Dữ liệu1 A Dữ liệu2 MỘT Dữ liệuN AP


.....
EV1 EV2 EV2 EV2 EV4

Bộ thu phụ 10 bit

S Tiêu đề A Địa chỉ A Dữ liệu1 A Dữ liệuN AP


.....
EV1 EV2 EV2 EV4

Chú thích: S= Bắt đầu, Sr = Bắt đầu lặp lại, P= Dừng, A= Xác nhận,
EVx= Sự kiện (có ngắt nếu ITEVFEN=1)

EV1: ADDR=1, bị xóa bằng cách đọc SR1, sau đó đọc SR2
EV2: RxNE=1 được xóa bằng cách đọc thanh ghi DR.
EV4: STOPF=1, bị xóa bằng cách đọc thanh ghi SR1, sau đó ghi vào thanh ghi CR1

ai18208

1. Sự kiện EV1 kéo dài SCL xuống mức thấp cho đến khi kết thúc chuỗi phần mềm tương ứng.

2. Trình tự phần mềm EV2 phải được hoàn thành trước khi kết thúc quá trình truyền byte hiện tại

3. Sau khi kiểm tra nội dung thanh ghi SR1, người dùng nên thực hiện trình tự xóa hoàn chỉnh cho từng thanh ghi.
cờ tìm thấy thiết lập.

Do đó, đối với các cờ ADDR và STOPF, trình tự sau đây là bắt buộc trong quy trình ngắt I2C:
ĐỌC SR1
if (ADDR == 1) {ĐỌC SR1; ĐỌC SR2}
if (STOPF == 1) {ĐỌC SR1; VIẾT CR1}
Mục đích là để đảm bảo rằng cả hai cờ ADDR và STOPF đều bị xóa nếu cả hai đều được thiết lập.

Đóng giao tiếp nô lệ

Sau khi byte dữ liệu cuối cùng được truyền đi, Master sẽ tạo ra Điều kiện dừng. Giao diện
phát hiện tình trạng này và đặt:

• Bit STOPF và tạo ra ngắt nếu bit ITEVFEN được đặt.

Bit STOPF bị xóa bằng cách đọc thanh ghi SR1, sau đó ghi vào thanh ghi CR1 (xem EV4 trong
Hình 272).

26.3.3 Chế độ chính I2C

Ở chế độ Master, giao diện I2C bắt đầu truyền dữ liệu và tạo tín hiệu đồng hồ. Quá trình truyền
dữ liệu nối tiếp luôn bắt đầu bằng điều kiện Bắt đầu và kết thúc bằng điều kiện Dừng.

RM0008 Phiên bản 21 757/1136

784
Machine Translated by Google

Giao diện mạch tích hợp (I2C) RM0008

Chế độ chính được chọn ngay khi điều kiện Bắt đầu được tạo trên bus với bit BẮT ĐẦU.

Sau đây là trình tự bắt buộc trong chế độ chính.

• Lập trình đồng hồ đầu vào ngoại vi trong thanh ghi I2C_CR2 để tạo ra tín hiệu chính xác
thời gian

• Cấu hình các thanh ghi điều khiển đồng hồ

• Cấu hình thanh ghi thời gian tăng

• Lập trình thanh ghi I2C_CR1 để kích hoạt thiết bị ngoại vi

• Đặt bit START trong thanh ghi I2C_CR1 để tạo điều kiện Bắt đầu

Tần số xung nhịp đầu vào ngoại vi ít nhất phải là:

• 2 MHz ở chế độ Sm

• 4 MHz ở chế độ Fm

Tạo đồng hồ chính SCL

Các bit CCR được sử dụng để tạo ra mức cao và mức thấp của đồng hồ SCL, bắt đầu từ việc tạo ra cạnh
tăng và cạnh giảm (tương ứng). Vì một thiết bị phụ có thể kéo dài đường SCL, thiết bị ngoại vi sẽ
kiểm tra đầu vào SCL từ bus vào cuối thời gian được lập trình bằng các bit TRISE sau khi tạo cạnh
tăng.
• Nếu đường SCL ở mức thấp, điều đó có nghĩa là bộ phận phụ đang kéo dài bus và bộ đếm mức
cao sẽ dừng cho đến khi đường SCL được phát hiện ở mức cao. Điều này cho phép đảm bảo khoảng
thời gian CAO tối thiểu của tham số đồng hồ SCL.
• Nếu đường SCL ở mức cao, bộ đếm mức cao sẽ tiếp tục đếm.

Thật vậy, vòng phản hồi từ việc tạo cạnh tăng SCL bởi thiết bị ngoại vi đến việc phát hiện cạnh tăng
SCL bởi thiết bị ngoại vi sẽ mất thời gian ngay cả khi không có nô lệ nào kéo dài đồng hồ. Thời lượng
vòng lặp ngược này được liên kết với thời gian tăng SCL (tác động đến việc phát hiện đầu vào SCL
VIH), cộng với độ trễ do bộ lọc nhiễu có trên đường dẫn đầu vào SCL, cộng với độ trễ do đồng bộ hóa
đầu vào SCL bên trong với đồng hồ APB. Thời gian tối đa mà vòng phản hồi sử dụng được lập trình
trong các bit TRISE, sao cho tần số SCL vẫn ổn định bất kể thời gian SCL tăng lên.

Điều kiện bắt đầu

Việc đặt bit BẮT ĐẦU khiến giao diện tạo ra điều kiện Bắt đầu và chuyển sang chế độ Chính (bộ bit
MSL) khi bit BẬN bị xóa.

Ghi chú: Trong chế độ chính, việc thiết lập bit START sẽ khiến giao diện tạo ra điều kiện Khởi động lại
khi kết thúc quá trình truyền byte hiện tại.

Khi điều kiện Bắt đầu được gửi:

• Bit SB được thiết lập bằng phần cứng và một ngắt được tạo ra nếu bit ITEVFEN được thiết lập.

Sau đó, bản gốc chờ đọc thanh ghi SR1, sau đó ghi vào thanh ghi DR với địa chỉ Slave (xem Hình 273 và
Hình 274 Trình tự truyền EV5).

758/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện mạch tích hợp (I2C)

Truyền địa chỉ nô lệ

Sau đó, địa chỉ nô lệ được gửi đến đường SDA thông qua thanh ghi dịch chuyển bên trong.
• Ở chế độ địa chỉ 10 bit, việc gửi chuỗi tiêu đề gây ra sự kiện sau:

– Bit ADD10 được thiết lập bằng phần cứng và một ngắt được tạo ra nếu bit ITEVFEN
được thiết lập.

Sau đó, chủ đợi đọc thanh ghi SR1, sau đó ghi vào thanh ghi DR với byte địa chỉ thứ hai
(xem Hình 273 và Hình 274 Trình tự truyền).

– Bit ADDR được thiết lập bằng phần cứng và một ngắt được tạo ra nếu bit ITEVFEN
được thiết lập.

Sau đó, chủ đợi đọc thanh ghi SR1, sau đó đọc thanh ghi SR2 (xem Hình 273 và Hình 274 Trình
tự chuyển giao).
• Trong chế độ đánh địa chỉ 7 bit, một byte địa chỉ được gửi đi.

Ngay sau khi byte địa chỉ được gửi đi,

– Bit ADDR được thiết lập bằng phần cứng và một ngắt được tạo ra nếu bit ITEVFEN
được thiết lập.

Sau đó, chủ đợi đọc thanh ghi SR1, sau đó đọc thanh ghi SR2 (xem Hình 273 và Hình 274 Trình
tự chuyển giao).

Master có thể quyết định vào chế độ Máy phát hoặc Máy thu tùy thuộc vào LSB của địa chỉ Slave được
gửi.

• Ở chế độ đánh địa chỉ 7 bit,

– Để vào chế độ Bộ phát, thiết bị chính gửi địa chỉ phụ kèm theo thiết lập lại LSB.

– Để vào chế độ Bộ thu, chủ sẽ gửi địa chỉ phụ có LSB được đặt.
• Ở chế độ đánh địa chỉ 10 bit,

– Để vào chế độ Máy phát, thiết bị chính gửi tiêu đề (11110xx0) và sau đó là địa chỉ phụ,
(trong đó xx biểu thị hai bit quan trọng nhất của địa chỉ).

– Để vào chế độ Bộ thu, thiết bị chính gửi tiêu đề (11110xx0) và sau đó là địa chỉ phụ.
Sau đó, nó sẽ gửi một điều kiện Bắt đầu lặp lại theo sau là tiêu đề (11110xx1), (trong
đó xx biểu thị hai bit quan trọng nhất của địa chỉ).

Bit TRA cho biết thiết bị chủ đang ở chế độ Bộ thu hay Chế độ phát.

Máy phát chính

Sau khi truyền địa chỉ và sau khi xóa ADDR, master sẽ gửi byte từ thanh ghi DR đến đường SDA thông
qua thanh ghi dịch chuyển bên trong.

Bản gốc đợi cho đến khi byte dữ liệu đầu tiên được ghi vào I2C_DR (xem Hình 273 Trình tự truyền
EV8_1).

Khi nhận được xung xác nhận, bit TxE được thiết lập bằng phần cứng và ngắt được tạo ra nếu các bit
ITEVFEN và ITBUFEN được thiết lập.

Nếu TxE được đặt và một byte dữ liệu không được ghi vào thanh ghi DR trước khi kết thúc lần truyền
dữ liệu cuối cùng, BTF được đặt và giao diện sẽ đợi cho đến khi BTF bị xóa bằng lệnh đọc từ I2C_SR1,
sau đó là ghi vào I2C_DR, kéo dài SCL xuống mức thấp.

RM0008 Phiên bản 21 759/1136

784
Machine Translated by Google

Giao diện mạch tích hợp (I2C) RM0008

Đóng giao tiếp

Sau khi byte cuối cùng được ghi vào thanh ghi DR, bit STOP được thiết lập bằng phần mềm để
tạo điều kiện Dừng (xem Hình 273 Trình tự truyền EV8_2). Giao diện tự động quay trở lại chế
độ nô lệ (xóa bit MSL).

Ghi chú: Điều kiện dừng phải được lập trình trong sự kiện EV8_2, khi TxE hoặc BTF được đặt.

Hình 273. Sơ đồ trình tự truyền cho bộ phát chính


Bộ phát chính 7 bit

S Địa chỉ A Dữ liệu1 A Dữ liệu2 MỘT Dữ liệuN MỘT P


.....
EV5 EV6 EV8_1 EV8 EV8 EV8 EV8_2

Bộ phát chính 10 bit

S Tiêu đề A Địa chỉ A Dữ liệu1 A Dữ liệuN MỘT P


.....
EV5 EV9 EV6 EV8_1 EV8 EV8 EV8_2

Chú thích: S= Bắt đầu, Sr = Bắt đầu lặp lại, P= Dừng, A= Xác nhận,
EVx= Sự kiện (có ngắt nếu ITEVFEN = 1)

EV5: SB=1, bị xóa bằng cách đọc thanh ghi SR1, sau đó ghi vào thanh ghi DR với Địa chỉ.
EV6: ADDR=1, bị xóa bằng cách đọc thanh ghi SR1, sau đó đọc SR2.
EV8_1: TxE=1, thanh ghi thay đổi trống, thanh ghi dữ liệu trống, ghi Data1 vào DR.
.
EV8: TxE=1, thanh ghi dịch không trống, thanh ghi dữ liệu trống, bị xóa bằng cách ghi thanh
ghi DR EV8_2: TxE=1, BTF = 1, Yêu cầu dừng chương trình. TxE và BTF được xóa bằng phần cứng theo điều kiện Dừng
EV9: ADD10=1, bị xóa bằng cách đọc thanh ghi SR1 sau đó ghi vào thanh ghi DR.

Lưu ý: 1- Các sự kiện EV5, EV6, EV9, EV8_1 và EV8_2 kéo dài SCL ở mức thấp cho đến khi kết thúc chuỗi phần mềm tương ứng.
2- Trình tự phần mềm EV8 phải hoàn thành trước khi kết thúc quá trình truyền byte hiện tại. Trong trường hợp phần mềm EV8
không thể quản lý trình tự trước khi kết thúc quá trình truyền byte hiện tại, nên sử dụng BTF thay vì TXE vì nhược
điểm là làm chậm quá trình truyền.

ai15881b

Bộ thu chính

Sau khi truyền địa chỉ và sau khi xóa ADDR, giao diện I2C sẽ chuyển sang chế độ Bộ thu
chính. Ở chế độ này, giao diện nhận byte từ dòng SDA vào thanh ghi DR thông qua thanh ghi
dịch chuyển bên trong. Sau mỗi byte, giao diện sẽ tạo theo trình tự:

1. Xung xác nhận nếu bit ACK được đặt

2. Bit RxNE được thiết lập và một ngắt được tạo ra nếu các bit ITEVFEN và ITBUFEN được đặt
(xem Hình 274 Chuyển trình tự EV7).

Nếu bit RxNE được thiết lập và dữ liệu trong thanh ghi DR không được đọc trước khi kết thúc lần nhận
dữ liệu cuối cùng, thì bit BTF được thiết lập bằng phần cứng và giao diện sẽ đợi cho đến khi BTF bị xóa
bằng cách đọc trong thanh ghi SR1, sau đó là một đọc trong thanh ghi DR, kéo SCL xuống mức thấp.

Đóng giao tiếp

Phương pháp 1: Phương pháp này dành cho trường hợp I2C được sử dụng với các ngắt có
mức ưu tiên cao nhất trong ứng dụng.

Master gửi NACK cho byte cuối cùng nhận được từ Slave. Sau khi nhận được NACK này, Slave
sẽ giải phóng quyền điều khiển đường SCL và SDA. Sau đó, chủ có thể gửi điều kiện Dừng/Khởi
động lại.

760/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện mạch tích hợp (I2C)

1. Để tạo xung không xác nhận sau byte dữ liệu nhận được cuối cùng, bit ACK phải bị xóa
ngay sau khi đọc byte dữ liệu cuối cùng thứ hai (sau sự kiện RxNE cuối cùng thứ hai).

2. Để tạo điều kiện Dừng/Khởi động lại, phần mềm phải đặt bit STOP/Start ngay sau khi đọc
byte dữ liệu cuối cùng thứ hai (sau sự kiện RxNE cuối cùng thứ hai).
3. Trong trường hợp phải nhận một byte đơn, việc vô hiệu hóa Xác nhận và tạo điều
kiện Dừng được thực hiện ngay sau EV6 (trong EV6_1, ngay sau khi xóa ADDR).

Sau khi tạo điều kiện Dừng, giao diện sẽ tự động quay trở lại chế độ nô lệ (xóa bit MSL).

Hình 274. Phương pháp 1: sơ đồ trình tự truyền cho máy thu chính

Bộ thu chính 7 bit

S Địa chỉ A Dữ liệu1 A(1) Dữ liệu2 MỘT Dữ liệuN NGỦ TRƯA


.....

EV5 EV6 EV6_1 EV7 EV7 EV7_1 EV7

Bộ thu chính 10 bit

S Tiêu đề A Địa chỉ A

EV5 EV9 EV6

A(1)
Sr Tiêu đề A Dữ liệu1 Dữ liệu2 MỘT Dữ liệuN NGỦ TRƯA
.....
EV5 EV6 EV6_1 EV7 EV7 EV7_1 EV7

Chú thích: S= Bắt đầu, Sr = Bắt đầu lặp lại, P= Dừng, A= Xác nhận, NA= Không xác nhận,
EVx= Sự kiện (có ngắt nếu ITEVFEN=1)
EV5: SB=1, bị xóa bằng cách đọc thanh ghi SR1 sau đó ghi vào thanh ghi DR.
EV6: ADDR=1, bị xóa bằng cách đọc thanh ghi SR1, sau đó đọc SR2. Trong chế độ bộ thu chính 10 bit, theo sau chuỗi này
phải ghi CR2 với START = 1.
EV6_1: không có sự kiện cờ liên quan, chỉ được sử dụng để nhận 1 byte. Điều kiện Vô hiệu hóa xác nhận và Dừng
việc tạo ra được thực hiện ngay sau EV6, nghĩa là sau khi ADDR bị xóa.
EV7: RxNE=1 được xóa bằng cách đọc thanh ghi DR.
EV7_1: RxNE=1 bị xóa bằng cách đọc thanh ghi DR, chương trình ACK=0 và yêu cầu STOP
EV9: ADD10=1, bị xóa bằng cách đọc thanh ghi SR1 sau đó ghi vào thanh ghi DR.
ai15882

1. Nếu nhận được một byte đơn thì đó là NA.

2. Các sự kiện EV5, EV6 và EV9 kéo dài SCL ở mức thấp cho đến khi kết thúc chuỗi phần mềm tương ứng.

3. Trình tự phần mềm EV7 phải hoàn thành trước khi kết thúc quá trình truyền byte hiện tại. Trường hợp EV7
Không thể quản lý trình tự phần mềm trước khi kết thúc quá trình truyền byte hiện tại, nên sử dụng BTF thay vì RXNE vì
nhược điểm là làm chậm quá trình truyền.

4. Chuỗi phần mềm EV6_1 hoặc EV7_1 phải hoàn thành trước xung ACK của quá trình truyền byte hiện tại.

Phương pháp 2: Phương pháp này dành cho trường hợp sử dụng I2C với các ngắt không có mức
ưu tiên cao nhất trong ứng dụng hoặc khi sử dụng I2C với tính năng bỏ phiếu.

Với phương pháp này, DataN_2 không được đọc, do đó sau DataN_1, giao tiếp bị kéo dài
(cả RxNE và BTF đều được đặt). Sau đó, xóa bit ACK trước khi đọc DataN-2 trong DR để đảm
bảo nó bị xóa trước xung Xác nhận DataN. Sau đó, ngay sau khi đọc DataN_2, đặt bit STOP/
START và đọc DataN_1. Sau khi RxNE được đặt, hãy đọc DataN. Điều này được minh họa dưới
đây:

RM0008 Phiên bản 21 761/1136

784
Machine Translated by Google

Giao diện mạch tích hợp (I2C) RM0008

Hình 275. Cách 2: Sơ đồ trình tự truyền cho máy thu chính khi N>2

Bộ thu chính 7 bit

S Địa chỉ A Dữ liệu1 Dữ liệu2 A Dữ liệuN-2 A Dữ liệuN-1 A Dữ liệuN NA P

EV5 EV6 EV7 EV7 EV7_2 EV7

Bộ thu chính 10 bit

S Tiêu đề A Địa chỉ A

EV5 EV9 EV6

Sr Tiêu đề A Dữ liệu1 Dữ liệu2 A Dữ liệuN-2 A Dữ liệuN-1 A Dữ liệuN NA P

EV5 EV6 EV7 EV7 EV7_2 EV7

Chú thích: S = Bắt đầu, Sr = Bắt đầu lặp lại, P = Dừng, A = Xác nhận, NA = Không xác nhận, EVx = Sự
kiện (có ngắt nếu ITEVFEN = 1)
EV5: SB=1, bị xóa bằng cách đọc thanh ghi SR1 sau đó ghi vào thanh ghi DR.
EV6: ADDR1, bị xóa bằng cách đọc thanh ghi SR1, sau đó đọc SR2.
Trong chế độ bộ thu chính 10 bit, trình tự này phải được theo sau bằng cách ghi CR2 với START = 1.
EV7: RxNE=1, bị xóa bằng cách đọc thanh ghi DR
EV7_2: BTF = 1, DataN-2 trong DR và DataN-1 trong thanh ghi dịch, chương trình ACK = 0, Đọc DataN-2 trong DR.
Chương trình STOP = 1, đọc DataN-1.
EV9: ADD10= 1, bị xóa bằng cách đọc thanh ghi SR1 sau đó ghi vào thanh ghi DR.

1. Các sự kiện EV5, EV6 và EV9 kéo dài SCL ở mức thấp cho đến khi kết thúc chuỗi phần mềm tương ứng.

2. Trình tự phần mềm EV7 phải hoàn thành trước khi kết thúc quá trình truyền byte hiện tại. Trong trường hợp EV7
Không thể quản lý trình tự phần mềm trước khi kết thúc quá trình truyền byte hiện tại, nên sử dụng BTF thay vì RXNE
vì nhược điểm là làm chậm quá trình truyền.

Khi còn 3 byte để đọc:

• RxNE = 1 => Không có gì (DataN-2 chưa đọc).


• Đã nhận được dữ liệuN-1

• BTF = 1 vì cả thanh ghi dịch và dữ liệu đều đầy: DataN-2 trong DR và DataN-1 trong thanh ghi
dịch => SCL bị ràng buộc ở mức thấp: sẽ không nhận được dữ liệu nào khác trên bus.
• Xóa bit ACK

• Đọc DataN-2 trong DR => Thao tác này sẽ khởi chạy quá trình nhận DataN trong thanh ghi dịch

• DataN nhận được (có NACK)

• Chương trình BẮT ĐẦU/DỪNG

• Đọc dữ liệuN-1

• RxNE = 1

• Đọc dữ liệuN

762/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện mạch tích hợp (I2C)

Quy trình được mô tả ở trên có giá trị với N>2. Các trường hợp nhận được một byte
hoặc hai byte phải được xử lý khác nhau, như được mô tả bên dưới:
• Trường hợp nhận 1 byte:

– Trong sự kiện ADDR, xóa bit ACK.

– Xóa ĐỊA CHỈ

– Lập trình bit STOP/BẮT ĐẦU.

– Đọc dữ liệu sau khi cờ RxNE được thiết lập.

• Trường hợp nhận 2 byte:


– Đặt POS và ACK

– Chờ cờ ADDR được thiết lập


– Xóa ĐỊA CHỈ

– Xóa ACK

– Chờ BTF được thiết lập

– Chương trình DỪNG


– Đọc DR hai lần

Hình 276. Cách 2: Sơ đồ trình tự truyền cho máy thu chính khi N=2

Bộ thu chính 7 bit

S Địa chỉ A Dữ liệu1 Dữ liệu2 NA P

EV5 EV6 EV6_1 EV7_3

Bộ thu chính 10 bit

S Tiêu đề A Địa chỉ A

EV5 EV9 EV6

Sr Tiêu đề A Dữ liệu1 Dữ liệu2 NA P

EV5 EV6 EV6_1 EV7_3

Chú thích: S = Bắt đầu, Sr = Bắt đầu lặp lại, P = Dừng, A = Xác nhận, NA = Không xác nhận, EVx
= Sự kiện (có ngắt nếu ITEVFEN = 1)
EV5: SB=1, bị xóa bằng cách đọc thanh ghi SR1 sau đó ghi vào thanh ghi DR.
EV6: ADDR1, bị xóa bằng cách đọc thanh ghi SR1, sau đó đọc SR2.
Trong chế độ bộ thu chính 10 bit, trình tự này phải được theo sau bằng cách ghi CR2 với START = 1.
EV6_1: Không có sự kiện cờ liên quan. Việc vô hiệu hóa xác nhận phải được thực hiện ngay sau EV6, tức là sau khi xóa ADDR.
EV7_3: BTF = 1, chương trình STOP = 1, đọc DR hai lần (Đọc Data1 và Data2) ngay sau khi lập trình STOP.
EV9: ADD10= 1, bị xóa bằng cách đọc thanh ghi SR1 sau đó ghi vào thanh ghi DR.

1. Các sự kiện EV5, EV6 và EV9 kéo dài SCL ở mức thấp cho đến khi kết thúc chuỗi phần mềm tương ứng.

2. Chuỗi phần mềm EV6_1 phải hoàn thành trước xung ACK của quá trình truyền byte hiện tại.

RM0008 Phiên bản 21 763/1136

784
Machine Translated by Google

Giao diện mạch tích hợp (I2C) RM0008

Hình 277. Cách 2: Sơ đồ trình tự truyền cho máy thu chính khi N=1

Bộ thu chính 7 bit

S Địa chỉ A Dữ liệu1 NA P

EV5 EV6_3 EV7

Bộ thu chính 10 bit

S Tiêu đề A Địa chỉ A

EV5 EV9 EV6

Sr Tiêu đề A Dữ liệu1 NA P

EV5 EV6_3 EV7

Chú thích: S = Bắt đầu, Sr = Bắt đầu lặp lại, P = Dừng, A = Xác nhận, NA = Không xác nhận, EVx
= Sự kiện (có ngắt nếu ITEVFEN = 1)
EV5: SB=1, bị xóa bằng cách đọc thanh ghi SR1 sau đó ghi vào thanh ghi DR.
EV6: ADDR =1, bị xóa bằng cách đọc điện trở SR1, sau đó đọc thanh ghi SR2.
EV6_3: ADDR = 1, chương trình ACK = 0, xóa ADDR bằng cách đọc thanh ghi SR1, sau đó đọc thanh ghi SR2, chương trình
STOP =1 ngay sau khi ADDR bị xóa.
Lưu ý: Chuỗi phần mềm EV6_3 phải hoàn thành trước khi kết thúc quá trình truyền byte hiện tại.
EV7: RxNE =1, bị xóa bằng cách đọc thanh ghi DR.
EV9: ADD10= 1, bị xóa bằng cách đọc thanh ghi SR1 sau đó ghi vào thanh ghi DR.
.

1. Các sự kiện EV5, EV6 và EV9 kéo dài SCL ở mức thấp cho đến khi kết thúc chuỗi phần mềm tương ứng.

26.3.4 Điều kiện lỗi

Sau đây là các tình trạng lỗi có thể khiến giao tiếp không thành công.

Lỗi xe buýt (BERR)

Lỗi này xảy ra khi giao diện I2C phát hiện điều kiện Dừng hoặc Bắt đầu bên ngoài trong quá trình truyền
địa chỉ hoặc truyền dữ liệu. Trong trường hợp này:

• Bit BERR được đặt và ngắt được tạo ra nếu bit ITERREN được đặt
• ở chế độ Slave: dữ liệu bị loại bỏ và các dòng được giải phóng bằng phần cứng:

– trong trường hợp Bắt đầu bị đặt sai vị trí, thiết bị phụ sẽ coi đó là khởi động lại và chờ đợi
địa chỉ hoặc điều kiện Dừng

– trong trường hợp Dừng sai vị trí, phần phụ sẽ hoạt động giống như điều kiện Dừng và các
đường được giải phóng bằng phần cứng
• Ở chế độ Chính: các đường truyền không được giải phóng và trạng thái truyền hiện tại không

bị ảnh hưởng. Việc hủy bỏ việc truyền hiện tại hay không là tùy thuộc vào phần mềm

Xác nhận thất bại (AF)

Lỗi này xảy ra khi giao diện phát hiện một bit không được xác nhận. Trong trường hợp này:

• bit AF được đặt và ngắt được tạo ra nếu bit ITERREN được đặt
• máy phát nhận NACK phải thiết lập lại liên lạc:

– Nếu Slave: các dòng được giải phóng bằng phần cứng

– Nếu Master: điều kiện Dừng hoặc Bắt đầu lặp lại phải được tạo bởi phần mềm

764/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện mạch tích hợp (I2C)

Trọng tài thua (ARLO)

Lỗi này xảy ra khi giao diện I2C phát hiện tình trạng mất trọng tài. Trong trường hợp này

• Bit ARLO được thiết lập bằng phần cứng (và một ngắt được tạo ra nếu bit ITERREN được
bộ)

• Giao diện I2C tự động trở về chế độ nô lệ (bit MSL bị xóa). Khi I2C thua trọng tài, nó không
thể xác nhận địa chỉ nô lệ của mình trong cùng một lần truyền, nhưng nó có thể xác nhận
địa chỉ đó sau một lần Bắt đầu lặp lại từ chủ chiến thắng.
• dòng được phát hành bởi phần cứng

Lỗi tràn/chạy thiếu (OVR)

Lỗi tràn có thể xảy ra ở chế độ phụ khi kéo dài đồng hồ bị tắt và giao diện I2C đang nhận
dữ liệu. Giao diện đã nhận được một byte (RxNE=1) và dữ liệu trong DR chưa được đọc trước
khi giao diện nhận được byte tiếp theo. Trong trường hợp này,

• Byte nhận được cuối cùng bị mất.


• Trong trường hợp xảy ra lỗi tràn, phần mềm sẽ xóa bit RxNE và bộ phát sẽ truyền lại byte
nhận được cuối cùng.

Lỗi chạy chậm có thể xảy ra ở chế độ nô lệ khi việc kéo dài đồng hồ bị tắt và giao diện
I2C đang truyền dữ liệu. Giao diện chưa cập nhật DR với byte tiếp theo (TxE=1), trước
khi đồng hồ đến byte tiếp theo. Trong trường hợp này,

• Cùng một byte trong thanh ghi DR sẽ được gửi lại

• Người dùng phải đảm bảo rằng dữ liệu nhận được ở phía máy thu khi xảy ra lỗi chạy ngầm sẽ
bị loại bỏ và các byte tiếp theo được ghi trong thời gian xung nhịp thấp được
chỉ định trong tiêu chuẩn bus I2C .

Để byte đầu tiên được truyền đi, DR phải được ghi sau khi ADDR bị xóa và trước cạnh tăng
SCL đầu tiên. Nếu không thể, người nhận phải loại bỏ dữ liệu đầu tiên.

26.3.5 Điều khiển đường SDA/SCL

• Nếu kéo dài đồng hồ được bật:


– Chế độ máy phát: Nếu TxE=1 và BTF=1: giao diện giữ đường xung nhịp ở mức thấp

trước khi truyền để đợi vi điều khiển đọc SR1 rồi ghi byte vào thanh ghi Dữ liệu
(cả bộ đệm và thanh ghi dịch đều trống).
– Chế độ máy thu: Nếu RxNE=1 và BTF=1: giao diện giữ dòng xung nhịp ở mức thấp sau khi
nhận để chờ vi điều khiển đọc SR1 rồi đọc byte trong Thanh ghi dữ liệu (cả bộ đệm
và thanh ghi dịch đều đầy).
• Nếu việc kéo dài đồng hồ bị tắt ở chế độ Phụ:
– Lỗi tràn trong trường hợp RxNE=1 và không đọc DR nào được thực hiện trước

byte tiếp theo được nhận. Byte nhận được cuối cùng bị mất.

– Lỗi chạy dưới trong trường hợp TxE=1 và không ghi vào DR nào được thực hiện trước khi

byte tiếp theo phải được truyền đi. Cùng một byte sẽ được gửi lại.

– Viết Va chạm không được quản lý.

RM0008 Phiên bản 21 765/1136

784
Machine Translated by Google

Giao diện mạch tích hợp (I2C) RM0008

26.3.6 SMBus
Giới thiệu

Bus quản lý hệ thống (SMBus) là giao diện hai dây, qua đó các thiết bị khác nhau có thể
giao tiếp với nhau và với phần còn lại của hệ thống. Nó dựa trên nguyên tắc hoạt động của
I2C . SMBus cung cấp bus điều khiển cho các tác vụ liên quan đến quản lý nguồn và hệ thống.
Một hệ thống có thể sử dụng SMBus để truyền tin nhắn đến và đi từ các thiết bị thay vì
chuyển đổi các dòng điều khiển riêng lẻ.

Đặc tả Bus quản lý hệ thống đề cập đến ba loại thiết bị. Slave là một thiết bị đang
nhận hoặc phản hồi lệnh. Master là một thiết bị phát lệnh, tạo đồng hồ và kết thúc
quá trình truyền . Máy chủ là một thiết bị chủ chuyên biệt cung cấp giao diện chính
cho CPU của hệ thống. Máy chủ phải là chủ-nô lệ và phải hỗ trợ giao thức thông báo máy chủ
SMBus. Chỉ có một máy chủ được phép trong một hệ thống.

Điểm tương đồng giữa SMBus và I2C

• Giao thức bus 2 dây (1 Clk, 1 Data) + Đường cảnh báo SMBus tùy chọn

• Giao tiếp Master-Slave, Master cung cấp đồng hồ


• Khả năng đa chủ

• Định dạng dữ liệu SMBus tương tự định dạng địa chỉ 7 bit I2C (Hình 269).

Sự khác biệt giữa SMBus và I2C

Bảng sau mô tả sự khác biệt giữa SMBus và I2C.

Bảng 188. SMBus so với I2C

SMBus I2C

Tối đa. tốc độ 100 kHz Tối đa. tốc độ 400 kHz

Tối thiểu. tốc độ đồng hồ 10 kHz Không có tốc độ xung nhịp tối thiểu

Thời gian chờ thấp của đồng hồ 35 ms Không có thời gian chờ

Mức logic được cố định Mức logic phụ thuộc vào VDD

Các loại địa chỉ khác nhau (dành riêng, động, v.v.) Các loại địa chỉ phụ của cuộc gọi 7 bit, 10 bit và chung

Các giao thức bus khác nhau (lệnh nhanh, xử lý cuộc gọi, v.v.)
Không có giao thức xe buýt

Cách sử dụng ứng dụng SMBus

Với Bus quản lý hệ thống, một thiết bị có thể cung cấp thông tin về nhà sản xuất, cho hệ thống biết
số model/bộ phận của thiết bị đó là gì, lưu trạng thái của thiết bị cho sự kiện tạm dừng, báo cáo các
loại lỗi khác nhau, chấp nhận các tham số điều khiển và trả về trạng thái của thiết bị. SMBus cung cấp
bus điều khiển cho các tác vụ liên quan đến quản lý nguồn và hệ thống.

Nhận dạng thiết bị

Bất kỳ thiết bị nào tồn tại trên Bus quản lý hệ thống dưới dạng nô lệ đều có một địa chỉ duy
nhất được gọi là Địa chỉ nô lệ. Để biết danh sách các địa chỉ phụ dành riêng, hãy tham khảo
phiên bản đặc tả SMBus. 2.0 (http://smbus.org/).

766/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện mạch tích hợp (I2C)

Giao thức xe buýt

Đặc tả SMBus hỗ trợ tới chín giao thức bus. Để biết thêm chi tiết về các giao thức này và loại địa
chỉ SMBus, hãy tham khảo phiên bản đặc tả SMBus. 2.0. Các giao thức này phải được thực hiện bởi
phần mềm người dùng.

Giao thức phân giải địa chỉ (ARP)

Xung đột địa chỉ nô lệ SMBus có thể được giải quyết bằng cách tự động gán một địa chỉ duy nhất mới
cho mỗi thiết bị phụ. Giao thức phân giải địa chỉ (ARP) có các thuộc tính sau:

• Việc gán địa chỉ sử dụng cơ chế phân xử lớp vật lý SMBus tiêu chuẩn

• Địa chỉ được chỉ định không đổi trong khi cấp nguồn cho thiết bị; việc lưu giữ địa chỉ do mất điện
của thiết bị cũng được cho phép

• Không phát sinh thêm chi phí gói SMBus sau khi gán địa chỉ. (tức là các lần truy cập tiếp theo
vào các địa chỉ nô lệ được chỉ định có cùng chi phí như các lần truy cập vào các thiết bị
có địa chỉ cố định.)

• Bất kỳ chủ SMBus nào cũng có thể liệt kê xe buýt

Mã định danh thiết bị duy nhất (UDID)

Để cung cấp cơ chế cách ly từng thiết bị nhằm mục đích gán địa chỉ, mỗi thiết bị phải triển
khai một mã định danh thiết bị duy nhất (UDID).

Để biết chi tiết về UDID 128 bit và biết thêm thông tin về ARP, hãy tham khảo thông số kỹ thuật SMBus
phiên bản 2.0.

Chế độ cảnh báo SMBus

Cảnh báo SMBus là tín hiệu tùy chọn có đường ngắt dành cho các thiết bị muốn đánh đổi khả năng làm
chủ của mình để lấy mã pin. SMBA là tín hiệu có dây AND giống như tín hiệu SCL và SDA.
SMBA được sử dụng cùng với Địa chỉ cuộc gọi chung SMBus. Các tin nhắn được gọi bằng SMBus có độ dài hai
byte.

Một thiết bị chỉ có nô lệ có thể báo hiệu cho máy chủ thông qua SMBA rằng nó muốn nói chuyện bằng cách
đặt bit ALERT trong thanh ghi I2C_CR1. Máy chủ xử lý ngắt và truy cập đồng thời tất cả các thiết bị
SMBA thông qua Địa chỉ phản hồi cảnh báo (được gọi là ARA có giá trị 0001 100X). Chỉ (các) thiết bị
đã hạ SMBA xuống mức thấp mới xác nhận Địa chỉ phản hồi cảnh báo. Trạng thái này được xác định bằng
cờ trạng thái SMBALERT trong thanh ghi I2C_SR1. Máy chủ thực hiện thao tác Nhận Byte đã được sửa đổi.
Địa chỉ thiết bị 7 bit do thiết bị truyền phụ cung cấp được đặt trong 7 bit quan trọng nhất của byte.
Bit thứ tám có thể là 0 hoặc 1.

Nếu có nhiều thiết bị kéo SMBA xuống mức thấp, thiết bị có mức ưu tiên cao nhất (địa chỉ thấp nhất) sẽ
giành được quyền liên lạc thông qua trọng tài tiêu chuẩn trong quá trình chuyển địa chỉ nô lệ.
Sau khi xác nhận địa chỉ nô lệ, thiết bị phải giải phóng SMBA kéo xuống. Nếu máy chủ vẫn thấy SMBA ở
mức thấp khi quá trình truyền tin nhắn hoàn tất thì nó sẽ biết đọc lại ARA.

Máy chủ không triển khai tín hiệu SMBA có thể truy cập ARA định kỳ.

Để biết thêm chi tiết về chế độ Cảnh báo SMBus, hãy tham khảo thông số kỹ thuật SMBus phiên bản 2.0.

Lỗi hết thời gian chờ

Có sự khác biệt về thông số kỹ thuật thời gian giữa I2C và SMBus.


SMBus xác định thời gian chờ ở mức thấp của đồng hồ, TIMEOUT là 35 ms. Ngoài ra SMBus chỉ định TLOW:

RM0008 Phiên bản 21 767/1136

784
Machine Translated by Google

Giao diện mạch tích hợp (I2C) RM0008

SEXT làm đồng hồ tích lũy kéo dài thời gian ở mức thấp cho thiết bị phụ. SMBus chỉ định TLOW: MEXT là
thời gian kéo dài xung nhịp thấp tích lũy cho thiết bị chính. Để biết thêm chi tiết về những khoảng

thời gian chờ này, hãy tham khảo thông số kỹ thuật SMBus phiên bản 2.0.

Cờ trạng thái Hết thời gian chờ hoặc Lỗi Tlow trong I2C_SR1 hiển thị trạng thái của tính năng này.

Cách sử dụng giao diện ở chế độ SMBus

Để chuyển từ chế độ I2C sang chế độ SMBus, cần thực hiện trình tự sau.

• Đặt bit SMBus trong thanh ghi I2C_CR1

• Cấu hình các bit SMBTYPE và ENARP trong thanh ghi I2C_CR1 theo yêu cầu cho
ứng dụng

Nếu bạn muốn định cấu hình thiết bị làm thiết bị chính, hãy làm theo quy trình tạo điều
kiện Bắt đầu trong Phần 26.3.3. Nếu không, hãy làm theo trình tự trong Phần 26.3.2.

Ứng dụng phải kiểm soát các giao thức SMBus khác nhau bằng phần mềm.

• Địa chỉ mặc định của thiết bị SMB được xác nhận nếu ENARP=1 và SMBTYPE=0

• Tiêu đề máy chủ SMB được xác nhận nếu ENARP=1 và SMBTYPE=1

• Địa chỉ phản hồi cảnh báo SMB được xác nhận nếu SMBALERT=1

26.3.7 yêu cầu DMA

Yêu cầu DMA (khi được bật) chỉ được tạo để truyền dữ liệu. Các yêu cầu DMA được tạo ra
do thanh ghi dữ liệu trở nên trống khi truyền và thanh ghi dữ liệu trở nên đầy khi nhận. DMA
phải được khởi tạo và kích hoạt trước khi truyền dữ liệu I2C. Bit DMAEN phải được đặt
trong thanh ghi I2C_CR2 trước sự kiện ADDR. Ở chế độ chính hoặc chế độ phụ khi bật kéo dài xung
nhịp, bit DMAEN cũng có thể được đặt trong sự kiện ADDR, trước khi xóa cờ ADDR. Yêu cầu DMA
phải được cung cấp trước khi kết thúc quá trình truyền byte hiện tại. Khi đạt đến số lần
truyền dữ liệu đã được lập trình cho luồng DMA tương ứng, bộ điều khiển DMA sẽ gửi
tín hiệu EOT kết thúc truyền đến giao diện I2C và tạo ra ngắt Hoàn tất truyền nếu được bật:

• Bộ phát chính: Trong quy trình ngắt sau khi ngắt EOT, hãy tắt các yêu cầu DMA sau đó
đợi sự kiện BTF trước khi lập trình điều kiện Dừng.

• Bộ thu chính: khi số byte được nhận bằng hoặc lớn hơn
hai, bộ điều khiển DMA gửi tín hiệu phần cứng, EOT_1, tương ứng với byte dữ liệu cuối
cùng (số_of_byte – 1). Nếu trong thanh ghi I2C_CR2, bit LAST được đặt, I 2C sẽ tự động
gửi NACK sau byte tiếp theo sau EOT_1. Người dùng có thể tạo điều kiện Dừng trong quy
trình ngắt Hoàn tất truyền DMA nếu được bật.

Truyền sử dụng DMA

Chế độ DMA có thể được kích hoạt để truyền bằng cách đặt bit DMAEN trong thanh ghi
I2C_CR2. Dữ liệu sẽ được tải từ vùng Bộ nhớ được định cấu hình bằng thiết bị ngoại vi DMA
(tham khảo thông số kỹ thuật DMA) vào thanh ghi I2C_DR bất cứ khi nào bit TxE được đặt. Để ánh
xạ luồng DMA x cho truyền I2C (trong đó x là số luồng), hãy thực hiện trình tự sau:

768/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện mạch tích hợp (I2C)

1. Đặt địa chỉ thanh ghi I2C_DR trong thanh ghi DMA_SxPAR. Dữ liệu sẽ được chuyển đến địa
chỉ này từ bộ nhớ sau mỗi sự kiện TxE.

2. Đặt địa chỉ bộ nhớ trong thanh ghi DMA_SxMA0R (và trong thanh ghi DMA_SxMA1R trong trường
hợp chế độ bộ đệm đôi). Dữ liệu sẽ được tải vào I2C_DR từ bộ nhớ này sau mỗi sự kiện
TxE.

3. Định cấu hình tổng số byte được truyền trong thanh ghi DMA_SxNDTR.
Sau mỗi sự kiện TxE, giá trị này sẽ giảm đi.

4. Định cấu hình mức độ ưu tiên của luồng DMA bằng cách sử dụng các bit PL[0:1] trong thanh ghi DMA_SxCR

5. Đặt bit DIR trong thanh ghi DMA_SxCR và định cấu hình các ngắt sau khi chuyển một nửa hoặc
chuyển giao đầy đủ tùy thuộc vào yêu cầu ứng dụng.

6. Kích hoạt luồng bằng cách đặt bit EN trong thanh ghi DMA_SxCR.

Khi đạt đến số lượng truyền dữ liệu đã được lập trình trong các thanh ghi Bộ điều khiển
DMA, bộ điều khiển DMA sẽ gửi tín hiệu Kết thúc truyền EOT/EOT_1 đến giao diện I 2C và DMA sẽ
tạo ra một ngắt, nếu được bật, trên ngắt luồng DMA
vectơ.

Ghi chú: Không kích hoạt bit ITBUFEN trong thanh ghi I2C_CR2 nếu DMA được sử dụng để truyền.

Tiếp nhận sử dụng DMA

Chế độ DMA có thể được bật để thu bằng cách đặt bit DMAEN trong thanh ghi I2C_CR2.
Dữ liệu sẽ được tải từ thanh ghi I2C_DR vào Vùng bộ nhớ được định cấu hình bằng thiết bị
ngoại vi DMA (tham khảo thông số kỹ thuật DMA) bất cứ khi nào nhận được byte dữ liệu. Để ánh
xạ luồng DMA x để thu I2C (trong đó x là số luồng), hãy thực hiện trình tự sau:

1. Đặt địa chỉ thanh ghi I2C_DR trong thanh ghi DMA_SxPAR. Dữ liệu sẽ được chuyển từ
địa chỉ này vào bộ nhớ sau mỗi sự kiện RxNE.

2. Đặt địa chỉ bộ nhớ trong thanh ghi DMA_SxMA0R (và trong thanh ghi DMA_SxMA1R trong trường
hợp chế độ bộ đệm đôi). Dữ liệu sẽ được tải từ thanh ghi I2C_DR vào vùng bộ nhớ này sau
mỗi sự kiện RxNE.

3. Định cấu hình tổng số byte được truyền trong thanh ghi DMA_SxNDTR.
Sau mỗi sự kiện RxNE, giá trị này sẽ giảm đi.

4. Định cấu hình mức độ ưu tiên của luồng bằng cách sử dụng các bit PL[0:1] trong thanh ghi DMA_SxCR

5. Đặt lại bit DIR và cấu hình các ngắt trong thanh ghi DMA_SxCR sau khi truyền một nửa hoặc
truyền toàn bộ tùy theo yêu cầu của ứng dụng.

6. Kích hoạt luồng bằng cách đặt bit EN trong thanh ghi DMA_SxCR.

Khi đạt đến số lượng truyền dữ liệu đã được lập trình trong các thanh ghi Bộ điều khiển
DMA, bộ điều khiển DMA sẽ gửi tín hiệu Kết thúc truyền EOT/EOT_1 đến giao diện I 2C và DMA sẽ
tạo ra một ngắt, nếu được bật, trên ngắt luồng DMA
vectơ.

Ghi chú: Không kích hoạt bit ITBUFEN trong thanh ghi I2C_CR2 nếu DMA được sử dụng để thu.

RM0008 Phiên bản 21 769/1136

784
Machine Translated by Google

Giao diện mạch tích hợp (I2C) RM0008

26.3.8 Kiểm tra lỗi gói

Một máy tính PEC đã được triển khai để cải thiện độ tin cậy của truyền thông. PEC được
tính bằng cách sử dụng đa thức C(x) = x8 + x2 + x + 1 CRC-8 nối tiếp trên mỗi bit.

• Tính toán PEC được kích hoạt bằng cách đặt bit ENPEC trong thanh ghi I2C_CR1. PEC là CRC-8
được tính toán trên tất cả các byte thông báo bao gồm địa chỉ và bit R/W.

– Trong quá trình truyền: thiết lập bit truyền PEC trong thanh ghi I2C_CR1 sau sự
kiện TxE tương ứng với byte cuối cùng. PEC sẽ được chuyển sau byte được truyền
cuối cùng.

– Khi tiếp nhận: thiết lập bit PEC trong thanh ghi I2C_CR1 sau sự kiện RxNE
tương ứng với byte cuối cùng để bên nhận gửi NACK nếu byte nhận tiếp theo
không bằng PEC được tính toán nội bộ. Trong trường hợp Bộ thu chính, NACK
phải tuân theo PEC bất kể kết quả kiểm tra như thế nào. PEC phải được đặt trước
xung ACK của quá trình nhận byte hiện tại.

• Cờ lỗi/ngắt PECERR cũng có sẵn trong thanh ghi I2C_SR1.


• Nếu tính toán DMA và PEC đều được bật: -

– Trong quá trình truyền: khi giao diện I2C nhận được tín hiệu EOT từ bộ điều khiển
DMA, nó sẽ tự động gửi PEC sau byte cuối cùng.

– Đang tiếp nhận: khi giao diện I2C nhận được tín hiệu EOT_1 từ DMA
bộ điều khiển, nó sẽ tự động coi byte tiếp theo là PEC và sẽ kiểm tra nó. Yêu cầu
DMA được tạo sau khi nhận PEC.

• Để cho phép truyền PEC trung gian, một bit điều khiển có sẵn trong thanh ghi I2C_CR2 (bit
LAST) để xác định xem đó có thực sự là lần truyền DMA cuối cùng hay không. Nếu đó là
yêu cầu DMA cuối cùng cho bộ thu chính, NACK sẽ tự động được gửi sau byte nhận được cuối cùng.

• Tính toán PEC bị sai do trọng tài thua kiện.

26,4 I2C ngắt


Bảng dưới đây đưa ra danh sách các yêu cầu ngắt I2C .

Bảng 189. Yêu cầu ngắt I2C


Sự kiện gián đoạn Cờ sự kiện Kích hoạt bit điều khiển

Bit bắt đầu được gửi (Chính) SB

Địa chỉ đã gửi (Chính) hoặc Địa chỉ trùng khớp (Slave) ĐỊA CHỈ

Đã gửi tiêu đề 10 bit (Chính) THÊM10 ITEVFEN

Dừng nhận (Slave) DỪNG

Quá trình truyền byte dữ liệu đã hoàn tất BTF

Bộ đệm nhận không trống RxNE


ITEVFEN và ITBUFEN
Truyền bộ đệm trống TxE

770/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện mạch tích hợp (I2C)

Bảng 189. Yêu cầu ngắt I2C (tiếp theo)

Sự kiện gián đoạn Cờ sự kiện Kích hoạt bit điều khiển

Lỗi xe buýt BERR

Tổn thất trọng tài (Chính) ARLO

Thừa nhận thất bại AF

Chạy quá/thiếu OVR ITERREN

lỗi PEC PECERR

Lỗi hết thời gian/Tlow HẾT GIỜ

Cảnh báo SMBus SMBALERT

Ghi chú: SB, ADDR, ADD10, STOPF, BTF, RxNE và TxE được OR-ed một cách logic trên cùng một kênh
ngắt.

BERR, ARLO, AF, OVR, PECERR, TIMEOUT và SMBALERT được OR-ed một cách logic trên cùng
một kênh ngắt.

Hình 278. Sơ đồ ánh xạ ngắt I2C

ITEVFEN
SB

ĐỊA CHỈ

THÊM10

DỪNG
it_event

BTF

TxE

ITBUFEN

RxNE

ITERREN

BERR

ARLO
it_error
AF

OVR

PECERR

HẾT GIỜ

SMBALERT

MS42082V1

RM0008 Phiên bản 21 771/1136

784
Machine Translated by Google

Giao diện mạch tích hợp (I2C) RM0008

26,5 Chế độ gỡ lỗi I2C

Khi bộ vi điều khiển chuyển sang chế độ gỡ lỗi ( lõi Cortex®-M3 tạm dừng), thời gian chờ SMBUS
tiếp tục hoạt động bình thường hoặc dừng, tùy thuộc vào các bit cấu hình
DBG_I2Cx_SMBUS_TIMEOUT trong mô-đun DBG. Để biết thêm chi tiết, hãy tham khảo Phần 31.16.2: Hỗ
trợ gỡ lỗi cho bộ hẹn giờ, cơ quan giám sát, bxCAN và I2C.

26,6 Thanh ghi I2C

Tham khảo để biết danh sách các từ viết tắt được sử dụng trong mô tả đăng ký.

Các thanh ghi ngoại vi phải được truy cập bằng nửa từ (16 bit) hoặc từ (32 bit).

26.6.1 Thanh ghi điều khiển I2C 1 (I2C_CR1)

Độ lệch địa chỉ: 0x00


Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

KHÔNG SMB SBU


SWRST CẢNH BÁO PEC POS ACK STOP BẮT ĐẦU ENGC ENPEC ENARP Thể dục

Res. KÉO DÀI KIỂU


Res. S

rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 15 SWRST: Đặt lại phần mềm

Khi được đặt, I2C ở trạng thái đặt lại. Trước khi đặt lại bit này, hãy đảm bảo rằng các đường I2C được
giải phóng và bus trống.

0: Thiết bị ngoại vi I2C chưa được đặt lại

1: Thiết bị ngoại vi I2C ở trạng thái đặt lại

Lưu ý: Bit này có thể được sử dụng để khởi động lại thiết bị ngoại vi sau khi xảy ra lỗi hoặc trạng thái bị
khóa. Ví dụ: nếu bit BUSY được đặt và vẫn bị khóa do trục trặc trên bus thì bit SWRST có thể
được sử dụng để thoát khỏi trạng thái này.

Bit 14 Dành riêng, phải được giữ ở giá trị đặt lại

CẢNH BÁO Bit 13 : Cảnh báo SMBus

Bit này được thiết lập và xóa bằng phần mềm và bị xóa bằng phần cứng khi PE=0.

0: Giải phóng chân SMBA lên mức cao. Tiêu đề địa chỉ phản hồi cảnh báo theo sau là NACK.
1: Điều khiển chân SMBA ở mức thấp. Tiêu đề địa chỉ phản hồi cảnh báo theo sau là ACK.

Bit 12 PEC: Kiểm tra lỗi gói tin

Bit này được thiết lập và xóa bằng phần mềm và bị xóa bằng phần cứng khi PEC được truyền hoặc bởi điều
kiện START hoặc Stop hoặc khi PE = 0.
0: Không chuyển PEC

1: Truyền PEC (ở chế độ Tx hoặc Rx)

Lưu ý: Tính toán PEC bị sai do thua trọng tài.

772/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện mạch tích hợp (I2C)

Bit 11 POS: Xác nhận/Vị trí PEC (để nhận dữ liệu)

Bit này được thiết lập và xóa bằng phần mềm và bị xóa bằng phần cứng khi PE=0.

0: Bit ACK điều khiển (N)ACK của byte hiện tại đang được nhận trong thanh ghi dịch. Bit PEC chỉ ra rằng

byte hiện tại trong thanh ghi dịch là PEC.

1: Bit ACK điều khiển (N)ACK của byte tiếp theo sẽ được nhận trong thanh ghi dịch.

Bit PEC chỉ ra rằng byte tiếp theo trong thanh ghi dịch là PEC

Lưu ý: Bit POS được sử dụng khi tuân thủ quy trình nhận 2 byte (xem Phương pháp 2: sơ đồ trình tự

truyền cho bộ thu chính khi N=2) . Nó phải được cấu hình trước khi bắt đầu nhận dữ liệu. Trong

trường hợp này, để NACK byte thứ 2, bit ACK phải bị xóa ngay sau khi xóa ADDR. Để kiểm tra byte thứ 2

dưới dạng PEC, bit PEC phải được đặt trong sự kiện kéo dài ADDR sau khi định cấu hình bit POS.

Bit 10 ACK: Cho phép xác nhận

Bit này được thiết lập và xóa bằng phần mềm và bị xóa bằng phần cứng khi PE=0.

0: Không trả lại xác nhận

1: Xác nhận được trả về sau khi nhận được một byte (địa chỉ hoặc dữ liệu trùng khớp)

Bit 9 STOP: Dừng tạo

Bit được đặt và xóa bằng phần mềm, xóa bằng phần cứng khi phát hiện điều kiện Dừng, được đặt bằng

phần cứng khi phát hiện lỗi hết thời gian chờ.
Ở Chế độ chính:

0: Không Dừng tạo.

1: Dừng tạo sau khi truyền byte hiện tại hoặc sau khi điều kiện Bắt đầu hiện tại được gửi.
Ở chế độ nô lệ:

0: Không Dừng tạo.

1: Giải phóng các dòng SCL và SDA sau khi truyền byte hiện tại.

Bit 8 START: Bắt đầu tạo

Bit này được thiết lập và xóa bằng phần mềm và bị xóa bằng phần cứng khi khởi động được gửi hoặc PE=0.
Ở Chế độ chính:

0: Không bắt đầu tạo

1: Bắt đầu lặp lại quá trình tạo


Ở chế độ nô lệ:

0: Không bắt đầu tạo

1: Bắt đầu tạo khi bus rảnh

Bit 7 NOSTRETCH: Vô hiệu hóa kéo dài đồng hồ (chế độ nô lệ)

Bit này được sử dụng để vô hiệu hóa việc kéo dài đồng hồ ở chế độ nô lệ khi cờ ADDR hoặc BTF được đặt, cho đến khi

nó được đặt lại bằng phần mềm.

0: Đã bật kéo dài đồng hồ

1: Kéo dài đồng hồ bị vô hiệu hóa

Bit 6 ENGC: Cho phép cuộc gọi chung

0: Cuộc gọi chung bị tắt. Địa chỉ 00h là NACKed.

1: Đã bật cuộc gọi chung. Địa chỉ 00h được ACKed.

Bit 5 ENPEC: Kích hoạt PEC

0: Tính toán PEC bị vô hiệu hóa

1: Đã bật tính toán PEC

Bit 4 ENARP: Kích hoạt ARP

0: Vô hiệu hóa ARP

1: Kích hoạt ARP

Địa chỉ mặc định của thiết bị SMBus được nhận dạng nếu SMBTYPE=0

Địa chỉ máy chủ SMBus được nhận dạng nếu SMBTYPE=1

RM0008 Phiên bản 21 773/1136

784
Machine Translated by Google

Giao diện mạch tích hợp (I2C) RM0008

Bit 3 SMBTYPE: Loại SMBus

0: Thiết bị SMBus
1: Máy chủ SMBus

Bit 2 Dành riêng, phải được giữ ở giá trị đặt lại

Bit 1 SMBUS: Chế độ SMBus

0: Chế độ I2C
1: Chế độ SMBus

Bit 0 PE: Kích hoạt ngoại vi

0: Vô hiệu hóa ngoại vi


1: Kích hoạt thiết bị ngoại vi

Lưu ý: Nếu bit này được đặt lại trong khi giao tiếp đang diễn ra, thiết bị ngoại vi sẽ bị tắt khi kết thúc
giao tiếp hiện tại, khi trở về trạng thái IDLE.
Tất cả các bit bị reset do PE=0 xảy ra ở cuối quá trình truyền thông.

Trong chế độ chính, bit này không được thiết lập lại trước khi kết thúc giao tiếp.

Ghi chú: Khi bit STOP, START hoặc PEC được đặt, phần mềm không được thực hiện bất kỳ quyền truy cập ghi nào
vào I2C_CR1 trước khi bit này bị phần cứng xóa. Nếu không, có nguy cơ thiết lập yêu cầu STOP,
START hoặc PEC thứ hai.

26.6.2 Thanh ghi điều khiển I2C 2 (I2C_CR2)

Độ lệch địa chỉ: 0x04


Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CUỐI CÙNG DMAEN ITBUFEN ITEVTEN ITERREN TẦN SỐ[5:0]


Kín đáo Kín đáo

rw rw rw rw rw rw rw rw rw rw rw

Bit 15:13 Dành riêng, phải được giữ ở giá trị đặt lại

Bit 12 LAST: lần truyền cuối cùng của DMA

0: DMA EOT tiếp theo không phải là lần chuyển cuối cùng

1: DMA EOT tiếp theo là lần chuyển cuối cùng

Lưu ý: Bit này được sử dụng trong chế độ máy thu chính để cho phép tạo NACK ở chế độ cuối cùng.
dữ liệu đã nhận.

Bit 11 DMAEN: Cho phép yêu cầu DMA

0: Yêu cầu DMA bị vô hiệu hóa


1: Yêu cầu DMA được bật khi TxE=1 hoặc RxNE =1

Bit 10 ITBUFEN: Cho phép ngắt bộ đệm

0: TxE = 1 hoặc RxNE = 1 không tạo ra bất kỳ ngắt nào.


1: TxE = 1 hoặc RxNE = 1 tạo ra Ngắt sự kiện (bất kể trạng thái của DMAEN)

774/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện mạch tích hợp (I2C)

Bit 9 ITEVTEN: Cho phép ngắt sự kiện

0: Ngắt sự kiện bị vô hiệu hóa


1: Đã bật ngắt sự kiện
Ngắt này được tạo ra khi:

– SB = 1 (Chính)

– ĐỊA CHỈ = 1 (Chính/Slave)

– ADD10= 1 (Chính)

– STOPF = 1 (Nô lệ)


– BTF = 1 không có sự kiện TxE hoặc RxNE

– Sự kiện TxE lên 1 nếu ITBUFEN = 1

– Sự kiện RxNE thành 1 nếu ITBUFEN = 1

Bit 8 ITERREN: Cho phép ngắt lỗi

0: Ngắt lỗi bị vô hiệu hóa


1: Đã kích hoạt ngắt lỗi
Ngắt này được tạo ra khi:
– BERR = 1

– ARLO = 1

– AF = 1

– OVR = 1

– PECERR = 1

– THỜI GIAN CHỜ = 1

– SMBALERT = 1

Bit 7:6 Dự trữ, phải được giữ ở giá trị đặt lại

Bit 5:0 FREQ[5:0]: Tần số xung nhịp ngoại vi Các

bit FREQ phải được cấu hình với giá trị tần số xung nhịp APB (ngoại vi I2C được kết nối
với APB). Trường FREQ được thiết bị ngoại vi sử dụng để tạo thiết lập dữ liệu và thời
gian lưu giữ tuân thủ thông số kỹ thuật I2C. Tần số tối thiểu cho phép là 2 MHz, tần số tối
đa bị giới hạn bởi tần số APB tối đa và không được vượt quá 50 MHz (giới hạn tối đa
nội tại ngoại vi). 0b000000: Không được phép
0b000001: Không được
phép 0b000010: 2 MHz

...

0b110010: 50 MHz

Cao hơn 0b101010: Không được phép

RM0008 Phiên bản 21 775/1136

784
Machine Translated by Google

Giao diện mạch tích hợp (I2C) RM0008

26.6.3 I2C Thanh ghi địa chỉ riêng 1 (I2C_OAR1)


Độ lệch địa chỉ: 0x08
Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

THÊM VÀO
THÊM[9:8] THÊM[7:1] THÊM0
CÁCH THỨC
Kín đáo

rw rw rw rw rw rw rw rw rw rw rw

Bit 15 ADDMODE Chế độ đánh địa chỉ (chế độ phụ)

0: Địa chỉ nô lệ 7 bit (không xác nhận địa chỉ 10 bit)

1: Địa chỉ nô lệ 10 bit (địa chỉ 7 bit không được xác nhận)

Bit 14 Luôn được giữ ở mức 1 bằng phần mềm.

Bit 13:10 Dự trữ, phải được giữ ở giá trị đặt lại

Bit 9:8 ADD[9:8]: Địa chỉ giao diện

Chế độ địa chỉ 7 bit: không quan tâm

Chế độ địa chỉ 10 bit: bit9:8 của địa chỉ

Bit 7:1 ADD[7:1]: Địa chỉ giao diện

bit 7:1 của địa chỉ

Bit 0 ADD0: Địa chỉ giao diện

Chế độ địa chỉ 7 bit: không quan tâm

Chế độ địa chỉ 10 bit: bit 0 của địa chỉ

26.6.4 I2C Thanh ghi địa chỉ riêng 2 (I2C_OAR2)


Độ lệch địa chỉ: 0x0C
Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

THÊM2[7:1] CUỐI CÙNG


Kín đáo
rw rw rw rw rw rw rw rw

Bit 15:8 Dành riêng, phải được giữ ở giá trị đặt lại

Bit 7:1 ADD2[7:1]: Địa chỉ giao diện

bit 7:1 của địa chỉ ở chế độ địa chỉ kép

Bit 0 CUỐI CÙNG: Cho phép chế độ địa chỉ kép

0: Chỉ OAR1 được nhận dạng ở chế độ đánh địa chỉ 7 bit
1: Cả OAR1 và OAR2 đều được nhận dạng ở chế độ địa chỉ 7 bit

776/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện mạch tích hợp (I2C)

26.6.5 Thanh ghi dữ liệu I2C (I2C_DR)

Độ lệch địa chỉ: 0x10


Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DR[7:0]
Kín đáo
rw rw rw rw rw rw rw rw

Bit 15:8 Dành riêng, phải được giữ ở giá trị đặt lại

Bit 7:0 DR[7:0] Thanh ghi dữ liệu 8 bit

Byte đã nhận hoặc được truyền tới xe buýt.

– Chế độ máy phát: Quá trình truyền byte tự động bắt đầu khi một byte được ghi vào DR
đăng ký. Luồng truyền liên tục có thể được duy trì nếu dữ liệu tiếp theo được truyền được đặt trong DR sau
khi quá trình truyền được bắt đầu (TxE=1)

– Chế độ máy thu: Byte đã nhận được sao chép vào DR (RxNE=1). Luồng truyền liên tục có thể được duy trì nếu
DR được đọc trước khi nhận được byte dữ liệu tiếp theo (RxNE=1).

Lưu ý: Ở chế độ phụ, địa chỉ không được sao chép vào DR.

Xung đột ghi không được quản lý (DR có thể được ghi nếu TxE=0).

Nếu sự kiện ARLO xảy ra trên xung ACK thì byte nhận được sẽ không được sao chép vào DR và do đó không
thể đọc được.

26.6.6 Thanh ghi trạng thái I2C 1 (I2C_SR1)

Độ lệch địa chỉ: 0x14


Giá trị đặt lại: 0x0000

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

SMB THỜI GIAN PEC


OVR AF ARLO BERR TxE RxNE DỪNG THÊM10 BTF ĐỊA CHỈ SB
BÁO ĐỘNG NGOÀI Res.
LỖI
Res.

rc_w0 rc_w0 rc_w0 rc_w0 rc_w0 rc_w0 rc_w0 r r r r r r r

Bit 15 SMBALERT: Cảnh báo SMBus

Trong chế độ máy chủ SMBus:

0: không có SMBALERT

1: Sự kiện SMBALERT xảy ra trên pin


Ở chế độ nô lệ SMBus:

0: không có tiêu đề địa chỉ phản hồi SMBALERT


1: Đã nhận được tiêu đề địa chỉ phản hồi SMBALERT tới SMBALERT THẤP

– Xóa bằng phần mềm ghi 0 hoặc bằng phần cứng khi PE=0.

RM0008 Phiên bản 21 777/1136

784
Machine Translated by Google

Giao diện mạch tích hợp (I2C) RM0008

Bit 14 TIMEOUT: Lỗi hết thời gian chờ hoặc Tlow

0: Không có lỗi hết thời gian chờ

1: SCL vẫn ở mức THẤP trong 25 ms (Hết giờ)


hoặc

Đồng hồ tích lũy chính ở mức thấp kéo dài thời gian hơn 10 ms (Tlow:mext)
hoặc

Đồng hồ tích lũy nô lệ kéo dài thời gian ở mức thấp hơn 25 ms (Tlow:sext)

– Khi được đặt ở chế độ phụ: phụ sẽ đặt lại giao tiếp và các đường truyền sẽ được giải phóng bởi
phần cứng

– Khi đặt ở chế độ chính: Điều kiện dừng được gửi bởi phần cứng

– Xóa bằng phần mềm ghi 0 hoặc bằng phần cứng khi PE=0.

Lưu ý: Chức năng này chỉ khả dụng ở chế độ SMBus.

Bit 13 Dành riêng, phải được giữ ở giá trị đặt lại

Bit 12 PECERR: Lỗi PEC khi tiếp nhận

0: không có lỗi PEC: bên nhận trả về ACK sau khi nhận PEC (nếu ACK=1)

1: Lỗi PEC: máy thu trả về NACK sau khi nhận PEC (bất kể ACK nào)

Lưu ý: Xóa bằng phần mềm ghi 0 hoặc bằng phần cứng khi PE=0.

Bit 11 OVR: Chạy tràn/Chạy thiếu

0: Không bị tràn/tràn

1: Vượt hoặc thiếu

– Được thiết lập bằng phần cứng ở chế độ phụ khi NOSTRETCH=1 và:

– Đang tiếp nhận khi nhận được một byte mới (bao gồm cả xung ACK) và thanh ghi DR chưa được đọc. Byte mới nhận được

bị mất.

– Trong quá trình truyền khi một byte mới cần được gửi và thanh ghi DR chưa được ghi

chưa. Cùng một byte được gửi hai lần.

– Xóa bằng phần mềm ghi 0 hoặc bằng phần cứng khi PE=0.

Lưu ý: Nếu quá trình ghi DR xảy ra rất gần với cạnh lên SCL thì dữ liệu đã gửi sẽ không được xác định và

xảy ra lỗi thời gian giữ

Bit 10 AF: Xác nhận lỗi

0: Không xác nhận lỗi

1: Thừa nhận thất bại

– Được thiết lập bởi phần cứng khi không có xác nhận nào được trả về.

– Xóa bằng phần mềm ghi 0 hoặc bằng phần cứng khi PE=0.

Bit 9 ARLO: Mất trọng tài (chế độ chính)

0: Không phát hiện thấy trọng tài bị mất

1: Trọng tài phát hiện mất

Được thiết lập bởi phần cứng khi giao diện mất sự phân xử của bus sang master khác

– Xóa bằng phần mềm ghi 0 hoặc bằng phần cứng khi PE=0.

Sau sự kiện ARLO, giao diện sẽ tự động chuyển về chế độ Phụ (MSL=0).

Lưu ý: Trong SMBUS, việc phân xử dữ liệu ở chế độ phụ chỉ xảy ra trong giai đoạn dữ liệu hoặc truyền xác nhận (không

phải trên xác nhận địa chỉ).

Bit 8 BERR: Lỗi bus

0: Không có điều kiện Bắt đầu hoặc Dừng bị đặt sai vị trí

1: Điều kiện Bắt đầu hoặc Dừng không đúng chỗ

– Được thiết lập bằng phần cứng khi giao diện phát hiện cạnh tăng hoặc giảm SDA trong khi SCL ở mức cao,

xảy ra ở vị trí không hợp lệ trong quá trình truyền byte.

– Xóa bằng phần mềm ghi 0 hoặc bằng phần cứng khi PE=0.

778/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện mạch tích hợp (I2C)

Bit 7 TxE: Thanh ghi dữ liệu trống (máy phát)

0: Thanh ghi dữ liệu không trống

1: Thanh ghi dữ liệu trống

– Đặt khi DR trống trong quá trình truyền. TxE không được thiết lập trong giai đoạn địa chỉ.

– Xóa bằng cách ghi phần mềm vào thanh ghi DR hoặc bằng phần cứng sau khi bắt đầu hoặc dừng điều kiện
hoặc khi PE=0.

TxE không được đặt nếu nhận được NACK hoặc nếu byte tiếp theo được truyền là PEC (PEC=1)

Lưu ý: TxE không bị xóa bằng cách ghi dữ liệu đầu tiên được truyền hoặc bằng cách ghi dữ liệu khi BTF được đặt, vì

trong cả hai trường hợp, thanh ghi dữ liệu vẫn trống.

Bit 6 RxNE: Thanh ghi dữ liệu không trống (bộ thu)

0: Thanh ghi dữ liệu trống

1: Thanh ghi dữ liệu không trống

– Đặt khi thanh ghi dữ liệu không trống ở chế độ máy thu. RxNE không được thiết lập trong giai đoạn địa chỉ.

– Xóa bằng phần mềm đọc hoặc ghi vào thanh ghi DR hoặc bằng phần cứng khi PE=0.

RxNE không được thiết lập trong trường hợp có sự kiện ARLO.

Lưu ý: RxNE không bị xóa bằng cách đọc dữ liệu khi BTF được đặt vì thanh ghi dữ liệu vẫn đầy.

Bit 5 Dành riêng, phải được giữ ở giá trị đặt lại

Bit 4 STOPF: Phát hiện dừng (chế độ phụ)

0: Không phát hiện thấy điều kiện dừng

1: Đã phát hiện tình trạng dừng

– Được thiết lập bằng phần cứng khi máy phụ phát hiện thấy điều kiện Dừng trên bus sau khi xác nhận (nếu

ACK=1).

– Xóa bằng phần mềm đọc thanh ghi SR1, sau đó ghi vào thanh ghi CR1 hoặc bằng phần cứng khi PE=0

Lưu ý: Bit STOPF không được đặt sau khi nhận NACK.

Nên thực hiện trình tự xóa hoàn chỉnh (READ SR1 rồi WRITE CR1) sau khi STOPF được đặt. Tham khảo Hình

272.

Bit 3 ADD10: Đã gửi tiêu đề 10 bit (Chế độ chính)

0: Không có sự kiện ADD10 nào xảy ra.

1: Master đã gửi byte địa chỉ đầu tiên (tiêu đề).

– Được thiết lập bằng phần cứng khi thiết bị chủ đã gửi byte đầu tiên ở chế độ địa chỉ 10 bit.

– Xóa bằng phần mềm đọc thanh ghi SR1, sau đó ghi vào thanh ghi DR của

byte địa chỉ thứ hai hoặc bằng phần cứng khi PE=0.

Lưu ý: Bit ADD10 không được đặt sau khi nhận NACK

Bit 2 BTF: Quá trình truyền byte đã hoàn tất

0: Truyền byte dữ liệu không được thực hiện

1: Truyền byte dữ liệu thành công

– Được thiết lập bằng phần cứng khi NOSTRETCH=0 và:

– Đang tiếp nhận khi nhận được một byte mới (bao gồm cả xung ACK) và DR chưa được đọc

chưa (RxNE=1).

– Trong quá trình truyền khi một byte mới cần được gửi và DR chưa được ghi (TxE=1).

– Xóa bằng phần mềm đọc SR1, sau đó đọc hoặc ghi vào thanh ghi DR hoặc bằng

phần cứng sau khi bắt đầu hoặc dừng trong quá trình truyền hoặc khi PE=0.

Lưu ý: Bit BTF không được đặt sau khi nhận NACK

Bit BTF không được đặt nếu byte tiếp theo được truyền là PEC (TRA=1 trong thanh ghi I2C_SR2 và PEC=1

trong thanh ghi I2C_CR1)

RM0008 Phiên bản 21 779/1136

784
Machine Translated by Google

Giao diện mạch tích hợp (I2C) RM0008

Bit 1 ADDR: Địa chỉ đã gửi (chế độ chính)/khớp (chế độ phụ)

Bit này bị xóa bằng phần mềm đọc thanh ghi SR1 sau khi đọc SR2 hoặc bằng phần cứng khi PE = 0.

Địa chỉ trùng khớp (Slave)


0: Địa chỉ không khớp hoặc không nhận được.
1: Địa chỉ nhận được trùng khớp.

– Được thiết lập bằng phần cứng ngay khi địa chỉ nô lệ nhận được khớp với các thanh ghi OAR
nội dung hoặc cuộc gọi chung hoặc Địa chỉ mặc định của thiết bị SMBus hoặc Máy chủ SMBus hoặc Cảnh báo SMBus
được nhận dạng. (khi được bật tùy thuộc vào cấu hình).

Lưu ý: Ở chế độ phụ, nên thực hiện trình tự xóa hoàn chỉnh (READ SR1 rồi READ SR2) sau khi ADDR được đặt.
Tham khảo Hình 272.

Địa chỉ đã gửi (Chính)


0: Không kết thúc truyền địa chỉ

1: Kết thúc truyền địa chỉ

– Đối với địa chỉ 10 bit, bit được đặt sau ACK của byte thứ 2.

– Đối với địa chỉ 7 bit, bit được đặt sau ACK của byte.

Lưu ý: ADDR không được đặt sau khi nhận NACK

Bit 0 SB: Bit bắt đầu (Chế độ chính)

0: Không có điều kiện bắt đầu

1: Điều kiện bắt đầu được tạo.

– Đặt khi điều kiện Bắt đầu được tạo.

– Xóa bằng phần mềm bằng cách đọc thanh ghi SR1, sau đó ghi vào thanh ghi DR hoặc bằng cách
phần cứng khi PE=0

26.6.7 Thanh ghi trạng thái I2C 2 (I2C_SR2)

Độ lệch địa chỉ: 0x18


Giá trị đặt lại: 0x0000

Ghi chú: Đọc I2C_SR2 sau khi đọc I2C_SR1 sẽ xóa cờ ADDR, ngay cả khi cờ ADDR được đặt sau khi đọc I2C_SR1. Do
đó, I2C_SR2 chỉ được đọc khi tìm thấy ADDR được đặt trong I2C_SR1 hoặc khi bit STOPF bị xóa.

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

SMB SMBDE GEN


PEC[7:0] KÉP TRA BẬN MSL
CHỦ NHÀ LỖI GỌI Res.
rr rrrrr r r r r r r r

Bit 15:8 PEC[7:0] Thanh ghi kiểm tra lỗi gói

Thanh ghi này chứa PEC nội bộ khi ENPEC=1.

Bit 7 DUALF: Cờ kép (Chế độ phụ)

0: Địa chỉ nhận được khớp với OAR1


1: Địa chỉ nhận được khớp với OAR2

– Xóa bằng phần cứng sau điều kiện Dừng hoặc điều kiện Bắt đầu lặp lại hoặc khi PE=0.

Bit 6 SMBHOST: Tiêu đề máy chủ SMBus (chế độ nô lệ)

0: Không có địa chỉ máy chủ SMBus

1: Địa chỉ máy chủ SMBus nhận được khi SMBTYPE=1 và ENARP=1.

– Xóa bằng phần cứng sau điều kiện Dừng hoặc điều kiện Bắt đầu lặp lại hoặc khi PE=0.

780/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện mạch tích hợp (I2C)

Bit 5 SMBDEFAULT: Địa chỉ mặc định của thiết bị SMBus (chế độ Slave)

0: Không có thiết bị SMBus Địa chỉ mặc định

1: Địa chỉ mặc định của thiết bị SMBus đã nhận được khi ENARP=1

– Xóa bằng phần cứng sau điều kiện Dừng hoặc điều kiện Bắt đầu lặp lại hoặc khi PE=0.

Bit 4 GENCALL: Địa chỉ cuộc gọi chung (chế độ Slave)

0: Không có cuộc gọi chung

1: Địa chỉ cuộc gọi chung nhận được khi ENGC=1

– Xóa bằng phần cứng sau điều kiện Dừng hoặc điều kiện Bắt đầu lặp lại hoặc khi PE=0.

Bit 3 Dành riêng, phải được giữ ở giá trị đặt lại

Bit 2 TRA: Bộ phát/thu

0: Số byte dữ liệu đã nhận


1: Byte dữ liệu được truyền

Bit này được đặt tùy thuộc vào bit R/W của byte địa chỉ, ở cuối pha địa chỉ tổng.

Nó cũng bị xóa bằng phần cứng sau khi phát hiện điều kiện Dừng (STOPF=1), điều kiện Bắt đầu lặp lại, mất

phân xử bus (ARLO=1) hoặc khi PE=0.

Bit 1 BẬN: Xe buýt bận

0: Không có liên lạc trên xe buýt

1: Giao tiếp đang diễn ra trên xe buýt

– Được thiết lập bởi phần cứng khi phát hiện SDA hoặc SCL ở

mức thấp – xóa bằng phần cứng khi phát hiện tình trạng Dừng.

Nó cho biết một giao tiếp đang diễn ra trên xe buýt. Thông tin này vẫn được cập nhật khi giao diện bị tắt

(PE=0).

Bit 0 MSL: Chủ/phụ

0: Chế độ nô lệ
1: Chế độ chính

– Được thiết lập bằng phần cứng ngay khi giao diện ở chế độ Chính (SB=1).

– Xóa bằng phần cứng sau khi phát hiện tình trạng Dừng trên bus hoặc mất trọng tài (ARLO=1) hoặc bằng phần

cứng khi PE=0.

Ghi chú: Đọc I2C_SR2 sau khi đọc I2C_SR1 sẽ xóa cờ ADDR, ngay cả khi cờ ADDR được đặt sau khi đọc I2C_SR1. Do
đó, I2C_SR2 chỉ được đọc khi tìm thấy ADDR được đặt trong I2C_SR1 hoặc khi bit STOPF bị xóa.

26.6.8 Thanh ghi điều khiển đồng hồ I2C (I2C_CCR)

Độ lệch địa chỉ: 0x1C


Giá trị đặt lại: 0x0000

Ghi chú: fPCLK1 phải có ít nhất 2 MHz để đạt được tần số I2C ở chế độ Sm. Nó phải có ít nhất 4 MHz để đạt
được tần số I2C ở chế độ Fm. Nó phải là bội số của 10 MHz để đạt được xung chế độ I2C Fm tối
đa 400 kHz.

Thanh ghi CCR chỉ phải được cấu hình khi I2C bị tắt (PE = 0).

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

NHIỆM VỤ F/S CCR[11:0]


Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw rw rw

RM0008 Phiên bản 21 781/1136

784
Machine Translated by Google

Giao diện mạch tích hợp (I2C) RM0008

Bit 15 F/S: Lựa chọn chế độ chính I2C

0: Chế độ Sm I2C
1: Chế độ Fm I2C

Bit 14 DUTY: Chu kỳ hoạt động của chế độ Fm

0: Tlow/đùi ở chế độ Fm = 2
1: Tlow/đùi ở chế độ Fm = 16/9 (xem CCR)

Bit 13:12 Dành riêng, phải được giữ ở giá trị đặt lại

Bit 11:0 CCR[11:0]: Thanh ghi điều khiển đồng hồ ở chế độ Fm/Sm (Chế độ chính)

Điều khiển đồng hồ SCL ở chế độ chính.

Chế độ Sm hoặc SMBus:

Đùi = CCR * TPCLK1


Tlow = CCR * TPCLK1
Chế độ FM:

Nếu NHIỆM VỤ = 0:

Đùi = CCR * TPCLK1


Tlow = * CCR * TPCLK1
2 Nếu DUTY
= 1: *
CCR * Đùi = 9 TPCLK1
Tlow = 16 * CCR * TPCLK1
Ví dụ: ở chế độ Sm, để tạo tần số SCL 100 kHz: Nếu FREQ = 08, TPCLK1 = 125

ns thì CCR phải được lập trình với 0x28


(0x28 <=> 40d x 125 ns = 5000 ns.)

Lưu ý: Giá trị tối thiểu được phép là 0x04, ngoại trừ ở chế độ NHANH CHÓNG có giá trị tối thiểu được phép
là 0x01

đùi = tr(SCL) + tw(SCLH). Xem bảng dữ liệu thiết bị để biết định nghĩa của các thông số. tlow

= tf(SCL) + tw(SCLL). Xem bảng dữ liệu thiết bị để biết định nghĩa của các thông số.

Tốc độ giao tiếp I2C, fSCL ~ 1/(đùi + tlow). Tần số thực có thể khác nhau do độ trễ đầu vào của bộ lọc
nhiễu tương tự.

Thanh ghi CCR chỉ phải được cấu hình khi I2C bị tắt (PE = 0).

26.6.9 Thanh ghi I2C TRISE (I2C_TRISE)

Độ lệch địa chỉ: 0x20


Đặt lại giá trị: 0x0002

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

TRISE[5:0]
Kín đáo
rw rw rw rw rw rw

782/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Giao diện mạch tích hợp (I2C)

Bit 15:6 Dự trữ, phải được giữ ở giá trị đặt lại

Bit 5:0 TRISE[5:0]: Thời gian tăng tối đa ở chế độ Fm/Sm (Chế độ chính)

Các bit này sẽ cung cấp thời lượng tối đa của vòng phản hồi SCL ở chế độ chính.
Mục đích là để giữ tần số SCL ổn định bất kể thời lượng của cạnh tăng SCL.

Các bit này phải được lập trình với thời gian tăng SCL tối đa được đưa ra trong thông số kỹ thuật
bus I2C , tăng dần thêm 1.

Ví dụ: ở chế độ Sm, thời gian tăng SCL tối đa được phép là 1000 ns.

Nếu trong thanh ghi I2C_CR2, giá trị của các bit FREQ[5:0] bằng 0x08 và TPCLK1 = 125 ns thì các bit
TRISE[5:0] phải được lập trình với 09h.

(1000 ns / 125 ns = 8 + 1)

Giá trị bộ lọc cũng có thể được thêm vào TRISE[5:0].

Nếu kết quả không phải là số nguyên, TRISE[5:0] phải được lập trình với phần nguyên để tôn trọng tham số

tHIGH .

Lưu ý: TRISE[5:0] chỉ phải được cấu hình khi I2C bị tắt (PE = 0).

RM0008 Phiên bản 21 783/1136

784
Machine Translated by Google

Giao diện mạch tích hợp (I2C) RM0008

26.6.10 Bản đồ đăng ký I2C

Bảng bên dưới cung cấp bản đồ thanh ghi I2C và các giá trị đặt lại.

Bảng 190. Bản đồ đăng ký I2C và giá trị đặt lại

Bù lại

1
5
ố8
s

7
6

0
3
9

2
4
Đăng ký

11
I2C_CR1
0x00 Kín đáo

CEP

SOP

KCA

ỪL
D

ia
t
NẠ

ến
GI

gnh
ẮĐ
B
ÁĐ
B

CEPNE

PRANE

SUBMS
TSRWS

TẦ
OỘ

U
GN

EPYTBMS
íđ
K

íđ
K
ỗml



o

o
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0

I2C_CR2 TẦN SỐ[5:0]


0x04 Kín đáo

IN
G UC
ỐÙ

NEAMD

NETVETI
NEFUBTI

NERRETI

náíđ
K
0 0 0 0 0 0 0 0 0 0 0

o
Đặt lại giá trị

I2C_OAR1 THÊM[9:8] THÊM[7:1]


0x08 Kín đáo Kín đáo

0MÊHT
Đặt lại giá trị MÊHT
0 0 0 0 0 0 0 0 0 0

I2C_OAR2 THÊM2[7:1]
0x0C Kín đáo

IN
G UC
ỐÙ
Đặt lại giá trị 00000000

I2C_DR DR[7:0]
0x10 Kín đáo

Đặt lại giá trị 00000000

I2C_SR1
ExT

FTB
0x14 Kín đáo
RVO

ENxR
RREB
OLRA

AỊĐ
01MÊHT
GNỪD
RRECEP
TIẾG
H
TRELABMS

íđ
K

íđ
K


o

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0

I2C_SR2 PEC[7:0]
0x18 Kín đáo
LSM
ART

NẬB
PÉK

ỌHG
T
TSOHBMS

IỢỔ

íđ
K
LUAFEDBMS

GP
N


o

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0

I2C_CCR CCR[11:0]
/S
F

0x1C Kín đáo


HV
MỆIỤ N

íđ
K

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0



o

I2C_TRISE TRISE[5:0]
0x20 Kín đáo

Đặt lại giá trị 000010

Tham khảo Phần 3.3: Bản đồ bộ nhớ cho bảng địa chỉ ranh giới thanh ghi.

784/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Máy phát thu không đồng bộ đồng bộ đa năng (USART)

27 Máy thu không đồng bộ đồng bộ phổ quát


máy phát (USART)

Các thiết bị mật độ thấp là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

Các thiết bị có mật độ trung bình là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 64 đến 128 Kbyte.

Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ
nhớ Flash nằm trong khoảng từ 256 đến 512 Kbyte.

Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ


bộ nhớ Flash nằm trong khoảng từ 768 Kbyte đến 1 Mbyte.

Các thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

Phần này áp dụng cho toàn bộ họ STM32F10xxx, trừ khi có quy định khác.

27.1 Giới thiệu USART

Bộ phát máy thu không đồng bộ đa năng (USART) cung cấp phương tiện trao đổi dữ liệu song
công linh hoạt với thiết bị bên ngoài yêu cầu định dạng dữ liệu nối tiếp không đồng bộ NRZ
tiêu chuẩn công nghiệp. USART cung cấp một phạm vi tốc độ truyền rất rộng bằng cách sử dụng
bộ tạo tốc độ truyền phân đoạn.

Nó hỗ trợ giao tiếp một chiều đồng bộ và giao tiếp dây đơn bán song công. Nó
cũng hỗ trợ các thông số kỹ thuật LIN (mạng kết nối cục bộ), Giao thức thẻ thông minh và IrDA
(liên kết dữ liệu hồng ngoại) SIR ENDEC và hoạt động của modem (CTS/RTS). Nó cho phép giao
tiếp đa bộ xử lý.

Có thể truyền dữ liệu tốc độ cao bằng cách sử dụng DMA cho cấu hình nhiều bộ đệm.

RM0008 Phiên bản 21 785/1136

827
Machine Translated by Google

Máy phát thu không đồng bộ đồng bộ đa năng (USART) RM0008

27.2 Các tính năng chính của USART

• Truyền thông song công hoàn toàn, không đồng bộ

• Định dạng chuẩn NRZ (Mark/Space)


• Hệ thống tạo tốc độ baud phân số

– Tốc độ truyền và nhận được lập trình phổ biến lên tới 4,5 MBits/s

• Độ dài từ dữ liệu có thể lập trình (8 hoặc 9 bit)

• Bit dừng có thể cấu hình - hỗ trợ 1 hoặc 2 bit dừng

• Khả năng gửi ngắt đồng bộ LIN Master và phát hiện ngắt phụ thuộc LIN
khả năng

– Tạo ngắt 13 bit và phát hiện ngắt 10/11 bit khi USART được cấu hình phần cứng cho LIN

• Đầu ra xung nhịp của máy phát để truyền đồng bộ


• Bộ giải mã mã hóa IrDA SIR

– Hỗ trợ thời lượng 3/16 bit cho chế độ bình thường

• Khả năng mô phỏng thẻ thông minh

– Giao diện Smartcard hỗ trợ giao thức không đồng bộ Smartcards được định nghĩa trong
tiêu chuẩn ISO 7816-3

– 0.5, 1.5 Stop Bits cho hoạt động của Smartcard

• Giao tiếp song công một dây

• Giao tiếp đa bộ đệm có thể định cấu hình bằng DMA (truy cập bộ nhớ trực tiếp)

– Đệm các byte nhận/truyền trong SRAM dành riêng bằng DMA tập trung

• Tách biệt các bit kích hoạt cho Bộ phát và Bộ thu

786/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Máy phát thu không đồng bộ đồng bộ đa năng (USART)

• Chuyển cờ phát hiện:

– Nhận bộ đệm đầy

– Bộ đệm truyền trống

– Cờ kết thúc truyền



Kiểm soát tính chẵn lẻ:

– Truyền bit chẵn lẻ

– Kiểm tra tính chẵn lẻ của byte dữ liệu nhận được

• Bốn cờ phát hiện lỗi:

– Lỗi tràn

– Lỗi tiếng ồn

– Lỗi khung hình

- Lỗi chẵn lẻ

• Mười nguồn ngắt có cờ:

– Thay đổi CTS

– Phát hiện sự cố LIN

– Truyền thanh ghi dữ liệu trống

- Truyền tải hoàn tất

– Nhận thanh ghi dữ liệu đầy đủ


– Đã nhận được đường dây nhàn rỗi

– Lỗi tràn

– Lỗi đóng khung

– Lỗi tiếng ồn

- Lỗi chẵn lẻ

• Giao tiếp đa bộ xử lý - chuyển sang chế độ tắt tiếng nếu không khớp địa chỉ

• Đánh thức từ chế độ tắt tiếng (bằng cách phát hiện dòng không hoạt động hoặc phát hiện dấu địa chỉ)

• Hai chế độ đánh thức máy thu: Bit địa chỉ (MSB, bit thứ 9 ), Dòng nhàn rỗi

27.3 Mô tả chức năng USART


Giao diện được kết nối bên ngoài với thiết bị khác bằng ba chân (xem Hình 279). Mọi giao tiếp hai chiều USART
đều yêu cầu tối thiểu hai chân: Nhận dữ liệu vào (RX) và Truyền dữ liệu ra (TX):

RX: Nhận dữ liệu đầu vào là đầu vào dữ liệu nối tiếp. Kỹ thuật lấy mẫu quá mức được sử dụng để
phục hồi dữ liệu bằng cách phân biệt giữa dữ liệu đến hợp lệ và nhiễu.

TX: Truyền dữ liệu đầu ra. Khi bộ phát bị tắt, chân đầu ra sẽ trở về cấu hình cổng IO của nó. Khi bộ phát
được bật và không có gì được truyền đi, chân TX ở mức cao. Ở chế độ dây đơn và thẻ thông minh, IO này được
sử dụng để truyền và nhận dữ liệu (ở cấp độ USART, dữ liệu sau đó được nhận trên SW_RX).

RM0008 Phiên bản 21 787/1136

827
Machine Translated by Google

Máy phát thu không đồng bộ đồng bộ đa năng (USART) RM0008

Thông qua các chân này, dữ liệu nối tiếp được truyền và nhận ở chế độ USART bình thường
dưới dạng các khung

bao gồm: • Đường dây nhàn rỗi trước khi truyền hoặc nhận
• Một bit bắt đầu

• Một từ dữ liệu (8 hoặc 9 bit) bit có trọng số thấp nhất đầu tiên

• 0,5,1, 1,5, 2 Bit dừng cho biết khung đã hoàn tất

• Giao diện này sử dụng bộ tạo tốc độ baud phân đoạn - với lớp định trị 12 bit và 4 bit
phân số

• Thanh ghi trạng thái (USART_SR)

• Thanh ghi dữ liệu (USART_DR)

• Thanh ghi tốc độ baud (USART_BRR) - mantissa 12 bit và phân số 4 bit.

• Thanh ghi thời gian bảo vệ (USART_GTPR) trong trường hợp chế độ Smartcard.

Tham khảo Phần 27.6: Thanh ghi USART để biết định nghĩa của từng bit.

Cần có chân sau để giao tiếp ở chế độ đồng bộ:

• CK: Xung nhịp đầu ra của máy phát. Chân này xuất ra đồng hồ dữ liệu máy phát cho
truyền đồng bộ tương ứng với chế độ chính SPI (không có xung đồng hồ trên bit bắt đầu và bit
dừng và tùy chọn phần mềm để gửi xung đồng hồ trên bit dữ liệu cuối cùng). Dữ liệu song
song có thể được nhận đồng bộ trên RX. Điều này có thể được sử dụng để điều khiển
các thiết bị ngoại vi có thanh ghi thay đổi (ví dụ: trình điều khiển LCD). Pha đồng hồ và
cực tính được lập trình bằng phần mềm. Ở chế độ Smartcard, CK có thể cung cấp đồng hồ
cho thẻ thông minh.

Các chân sau được yêu cầu trong chế độ điều khiển luồng phần cứng:
• CTS: Clear To Send chặn việc truyền dữ liệu khi kết thúc quá trình truyền hiện tại

khi cao

• RTS: Yêu cầu gửi cho biết USART đã sẵn sàng nhận dữ liệu (khi ở mức thấp).

788/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Máy phát thu không đồng bộ đồng bộ đa năng (USART)

Hình 279. Sơ đồ khối USART

PWDATA PRDATA
Viết Đọc
(ĐĂNG KÝ DỮ LIỆU) DR

(CPU hoặc DMA) (CPU hoặc DMA)

Thanh ghi truyền dữ liệu (TDR) Nhận thanh ghi dữ liệu (RDR)

TX IrDA
QUÝ NGÀI

RX KẾT THÚC Nhận thanh ghi Shift


Truyền thanh ghi Shift
KHỐI
SW_RX

GTPR
GT PSC KIỂM SOÁT CK CK
CR3 CR2
CẢNH DMAT DMAR NACK HD IRLP IREN ĐƯỜNG KẺ
DỪNG[1:0] CKEN CPOL CPHA LBCL

CR2 CR1

Địa chỉ USART UE M THỨC PCE PS PEIE

RTS Bộ điều
khiển
CTS luồng phần cứng

THỨC NGƯỜI NHẬN

CHUYỂN GIAO CÁI ĐỒNG HỒ


HƯỚNG LÊN NGƯỜI NHẬN

ĐIỀU KHIỂN ĐƠN VỊ ĐIỀU KHIỂN

CR1 SR
RXNE nhàn rỗi
TXEIE TCIE TE RE RWU SBK CTS LBD TXE TC RXNE Quặng nhàn rỗi NE FE Thể dục
I E I E

USART

NGẮT

ĐIỀU KHIỂN

USART_BRR

TE TỶ LỆ MÁY PHÁT
HỆ THỐNG ĐIỀU KHIỂN
ĐIỀU KHIỂN
CÁI ĐỒNG HỒ

/16 /USARTDIV

DIV_Mantissa DIV_Phân số

15 4 0
fPCLKx(x=1,2)

TỶ LỆ THU

NỐT RÊ ĐIỀU KHIỂN

MÁY PHÁT ĐIỆN TỐC ĐỘ BAUD THÔNG THƯỜNG

USARTDIV = DIV_Mantissa + (DIV_Fraction / 16)

RM0008 Phiên bản 21 789/1136

827
Machine Translated by Google

Máy phát thu không đồng bộ đồng bộ đa năng (USART) RM0008

27.3.1 Mô tả ký tự USART
Độ dài từ có thể được chọn là 8 hoặc 9 bit bằng cách lập trình bit M trong thanh ghi
USART_CR1 (xem Hình 280).

Chân TX ở trạng thái thấp trong bit bắt đầu. Nó ở trạng thái cao trong suốt bit dừng.

Một ký tự nhàn rỗi được hiểu là toàn bộ khung gồm “1” theo sau là bit bắt đầu của khung
tiếp theo chứa dữ liệu (Số lượng “1” sẽ bao gồm số bit dừng).

Ký tự Break được diễn giải khi nhận được số “0” trong một khoảng thời gian khung. Ở cuối
khung ngắt, bộ phát sẽ chèn 1 hoặc 2 bit dừng (bit logic “1”) để xác nhận bit bắt đầu.

Việc truyền và nhận được điều khiển bởi một bộ tạo tốc độ baud chung, đồng hồ cho mỗi bộ được
tạo khi bit kích hoạt được đặt tương ứng cho bộ phát và bộ thu.

Thông tin chi tiết của từng khối được đưa ra dưới đây.

Hình 280. Lập trình độ dài từ

Độ dài từ 9 bit (bit M được đặt), 1 bit stop


Khả thi
Khung dữ liệu tiếp theo
bit chẵn
Khung dữ liệu
lẻ Kế tiếp
Bắt đầu Bit bắt
Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 Bit8 Dừng lại
chút đầu
chút

Cái đồng hồ **

Bắt đầu

Khung nhàn rỗi chút

Bắt đầu
Phá vỡ khung Dừng lại
chút chút

** Bit LBCL điều khiển xung đồng hồ dữ liệu cuối cùng

Độ dài từ 8 bit (bit M được đặt lại), 1 bit stop


Khả thi Khung dữ liệu tiếp theo

Khung dữ liệu Ngang bằng

Chút Kế tiếp
Bắt đầu Bắt đầu
Dừng lại
Chút Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7
Chút Chút

****
Cái đồng hồ
**

Bắt đầu

Khung nhàn rỗi chút

Bắt đầu
Phá vỡ khung Dừng lại
chút
chút

** Bit LBCL điều khiển xung đồng hồ dữ liệu cuối cùng

790/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Máy phát thu không đồng bộ đồng bộ đa năng (USART)

27.3.2 Hệ thống điều khiển

Máy phát có thể gửi các từ dữ liệu 8 hoặc 9 bit tùy thuộc vào trạng thái bit M.
Khi bit cho phép phát (TE) được thiết lập, dữ liệu trong thanh ghi dịch chuyển truyền được
xuất ra trên chân TX và các xung đồng hồ tương ứng được xuất ra trên chân CK.

Truyền ký tự

Trong quá trình truyền USART, dữ liệu sẽ dịch chuyển bit ít quan trọng nhất trước tiên trên chân
TX. Trong chế độ này, thanh ghi USART_DR bao gồm một bộ đệm (TDR) giữa bus bên trong và thanh ghi
dịch chuyển truyền (xem Hình 279).

Mỗi ký tự được bắt đầu bằng một bit bắt đầu, đây là mức logic thấp trong khoảng thời gian một
bit. Ký tự được kết thúc bằng một số bit dừng có thể định cấu hình.

Các bit dừng sau được USART hỗ trợ: 0,5, 1, 1,5 và 2 bit dừng.

Ghi chú: Bit TE không được reset trong quá trình truyền dữ liệu. Việc đặt lại bit TE trong quá trình
truyền sẽ làm hỏng dữ liệu trên chân TX vì bộ đếm tốc độ truyền sẽ bị đóng băng.
Dữ liệu hiện tại đang được truyền đi sẽ bị mất.

Một khung không hoạt động sẽ được gửi sau khi bit TE được bật.

Bit dừng có thể cấu hình

Số lượng bit dừng được truyền đi với mỗi ký tự có thể được lập trình trong Thanh ghi điều
khiển 2, bit 13,12.

1. 1 bit stop: Đây là giá trị mặc định.

2. 2 bit dừng: Điều này được hỗ trợ bởi các chế độ USART, dây đơn và modem thông thường.

3. Bit dừng 0,5: Được sử dụng khi nhận dữ liệu ở chế độ Smartcard.

4. 1.5 stop bit: Được sử dụng khi truyền và nhận dữ liệu ở chế độ Smartcard.

Việc truyền khung nhàn rỗi sẽ bao gồm các bit dừng.

Quá trình truyền ngắt sẽ có 10 bit thấp theo sau là số bit dừng được cấu hình (khi m = 0)
và 11 bit thấp theo sau là số bit dừng được cấu hình (khi m = 1). Không thể truyền các ngắt dài
(ngắt có độ dài lớn hơn 10/11 bit thấp).

RM0008 Phiên bản 21 791/1136

827
Machine Translated by Google

Máy phát thu không đồng bộ đồng bộ đa năng (USART) RM0008

Hình 281. Các bit dừng có thể cấu hình

Độ dài từ 8 bit (bit M được đặt lại)


Khả thi Khung dữ liệu tiếp theo
Khung dữ liệu Ngang bằng

Chút Kế tiếp
Bắt đầu Bắt đầu
Dừng lại
Chút Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7
Chút Chút

CÁI ĐỒNG HỒ ****


**

** Bit LBCL điều khiển xung đồng hồ dữ liệu cuối cùng

a) 1 Bit dừng

Khả thi
Khung dữ liệu tiếp theo
Ngang bằng
Khung dữ liệu
Chút
Kế tiếp
Bắt đầu Bắt đầu
Chút Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7
Chút

1 1/2 bit dừng


b) 1 1/2 bit dừng
Khả thi
Khung dữ liệu tiếp theo
Ngang bằng
Khung dữ liệu
Chút
Kế tiếp
Bắt đầu 2 dừng lại Bắt đầu
Chút Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 Chút ít Chút

Khả thi
Khung dữ liệu tiếp theo
c) 2 bit dừng
Ngang bằng
Khung dữ liệu
Chút
Kế tiếp
Bắt đầu Bắt đầu
Chút Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7
Chút

1/2 bit dừng


d) 1/2 Bit dừng

Thủ tục:

1. Kích hoạt USART bằng cách ghi bit UE trong thanh ghi USART_CR1 lên 1.

2. Lập trình bit M trong USART_CR1 để xác định độ dài từ.

3. Lập trình số bit dừng trong USART_CR2.

4. Chọn bật DMA (DMAT) trong USART_CR3 nếu Giao tiếp nhiều bộ đệm diễn ra. Định cấu hình thanh
ghi DMA như được giải thích trong giao tiếp đa bộ đệm.

5. Chọn tốc độ truyền mong muốn bằng thanh ghi USART_BRR.

6. Đặt bit TE trong USART_CR1 để gửi khung không hoạt động trong lần truyền đầu tiên.

7. Ghi dữ liệu để gửi vào thanh ghi USART_DR (điều này sẽ xóa bit TXE). Lặp lại điều này cho mỗi
dữ liệu được truyền trong trường hợp bộ đệm đơn.

8. Sau khi ghi dữ liệu cuối cùng vào thanh ghi USART_DR, hãy đợi cho đến khi TC=1. Điều này chỉ
ra rằng việc truyền khung cuối cùng đã hoàn tất. Điều này là bắt buộc, chẳng hạn khi USART
bị tắt hoặc chuyển sang chế độ Dừng để tránh làm hỏng lần truyền cuối cùng.

Giao tiếp byte đơn

Bit TXE luôn bị xóa bằng cách ghi vào thanh ghi dữ liệu.

Bit TXE được thiết lập bằng phần cứng và nó cho biết:

• Dữ liệu đã được chuyển từ TDR sang thanh ghi dịch và việc truyền dữ liệu đã được thực hiện
đã bắt đầu.

• Thanh ghi TDR trống.

• Dữ liệu tiếp theo có thể được ghi vào thanh ghi USART_DR mà không ghi đè lên
dữ liệu trước đó.

Cờ này tạo ra ngắt nếu bit TXEIE được đặt.

792/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Máy phát thu không đồng bộ đồng bộ đa năng (USART)

Khi quá trình truyền đang diễn ra, lệnh ghi vào thanh ghi USART_DR sẽ lưu trữ dữ liệu trong
thanh ghi TDR và được sao chép vào thanh ghi dịch ở cuối quá trình truyền hiện tại.

Khi không có quá trình truyền nào diễn ra, lệnh ghi vào thanh ghi USART_DR sẽ đặt dữ liệu
trực tiếp vào thanh ghi dịch chuyển, quá trình truyền dữ liệu bắt đầu và bit TXE ngay
lập tức được đặt.

Nếu một khung được truyền đi (sau bit dừng) và bit TXE được đặt thì bit TC sẽ ở mức cao.
Một ngắt được tạo ra nếu bit TCIE được đặt trong thanh ghi USART_CR1.

Sau khi ghi dữ liệu cuối cùng vào thanh ghi USART_DR, bắt buộc phải đợi TC=1 trước khi
tắt USART hoặc khiến bộ vi điều khiển chuyển sang chế độ năng lượng thấp (xem Hình 282).

Bit TC được xóa bằng trình tự phần mềm sau:

1. Đọc từ thanh ghi USART_SR

2. Ghi vào thanh ghi USART_DR

Ghi chú: Bit TC cũng có thể bị xóa bằng cách viết '0' vào nó. Trình tự xóa này chỉ được khuyến nghị
cho giao tiếp Multibuffer.

Hình 282. Hành vi TC/TXE khi truyền

Lời mở đầu nhàn rỗi Khung 1 Khung 2 Khung 3

dòng TX

thiết lập bằng phần cứng thiết lập bằng phần cứng

xóa bằng phần mềm xóa bằng phần mềm


Cờ TXE
thiết lập bằng phần cứng

USART_DR F1 F2 F3

bộ
Cờ TC bằng phần cứng

phần mềm
phần mềm đợi đến khi TXE=1 và TC không được TC không được TC được thiết lập vì
cho phép
ghi F2 vào DR đặt vì TXE=0 đặt vì TXE=0 TXE=1
USART

phần mềm đợi đến khi TXE=1 và phần mềm đợi đến khi TXE=1 và phần mềm đợi cho đến khi TC=1
ghi F1 vào DR ghi F3 vào DR

ai17121b

Phá vỡ ký tự

Thiết lập bit SBK sẽ truyền ký tự ngắt. Độ dài khung ngắt phụ thuộc vào bit M (xem Hình 280).

Nếu bit SBK được đặt thành '1' thì ký tự ngắt sẽ được gửi trên đường TX sau khi hoàn thành
việc truyền ký tự hiện tại. Bit này được thiết lập lại bằng phần cứng khi ký tự ngắt hoàn
thành (trong bit dừng của ký tự ngắt). USART chèn bit logic 1 vào cuối khung ngắt cuối cùng
để đảm bảo nhận dạng bit bắt đầu của khung tiếp theo.

Ghi chú: Nếu phần mềm đặt lại bit SBK trước khi bắt đầu truyền ngắt, ký tự ngắt sẽ không được
truyền. Đối với hai lần ngắt liên tiếp, bit SBK phải được đặt sau bit dừng của lần ngắt
trước đó.

Nhân vật nhàn rỗi

Việc đặt bit TE sẽ điều khiển USART gửi khung nhàn rỗi trước khung dữ liệu đầu tiên.

RM0008 Phiên bản 21 793/1136

827
Machine Translated by Google

Máy phát thu không đồng bộ đồng bộ đa năng (USART) RM0008

27.3.3 Người nhận

USART có thể nhận các từ dữ liệu 8 hoặc 9 bit tùy thuộc vào bit M trong thanh ghi USART_CR1.

Bắt đầu phát hiện bit

Trong USART, bit bắt đầu được phát hiện khi một chuỗi mẫu cụ thể được nhận dạng.
Trình tự này là: 1 1 1 0 X 0 X 0 X 0 0 0 0.

Hình 283. Phát hiện bit bắt đầu

Trạng thái RX Nhàn rỗi Bit bắt đầu

dòng RX

Lý tưởng

vật mẫu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
cái đồng hồ

giá trị được lấy mẫu

Thực tế
XXXXXXXXX 9 10 11 12 13 14 15 16
vật mẫu
cái đồng hồ

16/6

16/7 16/7

Thời gian một bit

Điều kiện
1 1 1 0 X 0 X 0 X 0 00 0 XXXXXX
để xác nhận

bit bắt đầu


Cạnh rơi Ít nhất 2 bit Ít nhất 2 bit
phát hiện trên 3 lúc 0 trên 3 lúc 0 ai15471

Ghi chú: Nếu chuỗi không hoàn thành, việc phát hiện bit bắt đầu sẽ bị hủy bỏ và bộ thu sẽ quay trở lại trạng thái
không hoạt động (không có cờ nào được đặt) trong đó nó chờ cạnh xuống.

Bit bắt đầu được xác nhận (cờ RXNE được đặt, ngắt được tạo nếu RXNEIE = 1) nếu 3 bit được lấy mẫu ở mức
0 (lấy mẫu đầu tiên ở bit thứ 3, 5 và 7 tìm thấy 3 bit ở 0 và lấy mẫu thứ hai ở bit thứ 8, 9 và bit
thứ 10 cũng tìm thấy 3 bit ở 0).

Bit bắt đầu được xác thực (cờ RXNE được đặt, ngắt được tạo nếu RXNEIE = 1) nhưng cờ nhiễu NE được đặt
nếu, đối với cả hai lần lấy mẫu, ít nhất 2 trong số 3 bit được lấy mẫu ở mức 0 (lấy mẫu ở vị trí thứ 3,
thứ 5 và bit thứ 7 và lấy mẫu ở bit thứ 8, 9 và 10). Nếu điều kiện này không được đáp ứng, quá trình phát
hiện bắt đầu sẽ bị hủy bỏ và bộ thu sẽ trở về trạng thái không hoạt động (không có cờ nào được đặt).

Nếu, đối với một trong các lần lấy mẫu (lấy mẫu ở bit thứ 3, 5 và 7 hoặc lấy mẫu ở bit thứ 8, 9 và 10), 2
trong số 3 bit được tìm thấy ở mức 0, thì bit bắt đầu được xác thực nhưng cờ nhiễu NE bit được thiết
lập.

794/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Máy phát thu không đồng bộ đồng bộ đa năng (USART)

Tiếp nhận ký tự

Trong quá trình nhận USART, dữ liệu sẽ thay đổi bit ít quan trọng nhất trước tiên thông qua
chân RX. Ở chế độ này, thanh ghi USART_DR bao gồm một bộ đệm (RDR) giữa bus nội bộ và thanh
ghi dịch chuyển nhận được.

Thủ tục:

1. Kích hoạt USART bằng cách ghi bit UE trong thanh ghi USART_CR1 lên 1.

2. Lập trình bit M trong USART_CR1 để xác định độ dài từ.

3. Lập trình số bit dừng trong USART_CR2.

4. Chọn bật DMA (DMAR) trong USART_CR3 nếu thực hiện giao tiếp đa bộ đệm
địa điểm. Định cấu hình thanh ghi DMA như được giải thích trong giao tiếp đa bộ đệm. BƯỚC 3

5. Chọn tốc độ truyền mong muốn bằng thanh ghi tốc độ truyền USART_BRR 6. Đặt

bit RE USART_CR1. Điều này cho phép người nhận bắt đầu tìm kiếm một
chút bắt đầu.

Khi nhận được một ký tự

• Bit RXNE được thiết lập. Nó chỉ ra rằng nội dung của thanh ghi dịch chuyển được chuyển đến
RDR. Nói cách khác, dữ liệu đã được nhận và có thể đọc được (cũng như các cờ
lỗi liên quan của nó).

• Một ngắt được tạo ra nếu bit RXNEIE được đặt.

• Cờ lỗi có thể được đặt nếu phát hiện lỗi khung, nhiễu hoặc lỗi tràn trong quá trình thu.

• Trong multibuffer, RXNE được thiết lập sau mỗi byte nhận được và bị xóa bởi DMA đọc vào
thanh ghi dữ liệu.
• Trong chế độ đệm đơn, việc xóa bit RXNE được thực hiện bằng phần mềm đọc vào thanh
ghi USART_DR. Cờ RXNE cũng có thể bị xóa bằng cách viết số 0 vào nó. Bit RXNE phải
được xóa trước khi kết thúc quá trình nhận ký tự tiếp theo để tránh
một lỗi tràn.

Ghi chú: Bit RE không được reset trong khi nhận dữ liệu. Nếu bit RE bị vô hiệu hóa trong quá
trình nhận thì việc nhận byte hiện tại sẽ bị hủy bỏ.

Phá vỡ nhân vật

Khi nhận được ký tự ngắt, USART sẽ xử lý nó như một lỗi đóng khung.

Nhân vật nhàn rỗi

Khi phát hiện khung không hoạt động, quy trình tương tự như ký tự nhận được dữ liệu cộng
với ngắt nếu bit IDLEIE được đặt.

Lỗi tràn

Lỗi tràn xảy ra khi nhận được một ký tự khi RXNE chưa được đặt lại. Dữ liệu không thể được
chuyển từ thanh ghi dịch sang thanh ghi RDR cho đến khi bit RXNE bị xóa.

RM0008 Phiên bản 21 795/1136

827
Machine Translated by Google

Máy phát thu không đồng bộ đồng bộ đa năng (USART) RM0008

Cờ RXNE được đặt sau mỗi byte nhận được. Lỗi tràn xảy ra nếu cờ RXNE được đặt khi nhận
được dữ liệu tiếp theo hoặc yêu cầu DMA trước đó chưa được phục vụ. Khi
xảy ra lỗi tràn:

• Bit ORE được thiết lập.

• Nội dung RDR sẽ không bị mất. Dữ liệu trước đó có sẵn khi đọc tới
USART_DR được thực hiện.

• Thanh ghi thay đổi sẽ bị ghi đè. Sau thời điểm đó, mọi dữ liệu nhận được trong quá trình tràn
bị mất.

• Một ngắt được tạo ra nếu bit RXNEIE được đặt hoặc cả hai bit EIE và DMAR
được thiết lập.

• Bit ORE được đặt lại bằng cách đọc vào thanh ghi USART_SR, sau đó là thao tác đọc thanh
ghi USART_DR.

Ghi chú: Bit ORE khi được đặt sẽ cho biết ít nhất 1 dữ liệu đã bị mất. Có hai khả năng:

• nếu RXNE=1 thì dữ liệu hợp lệ cuối cùng được lưu trong thanh ghi nhận RDR và có thể
được đọc,
• nếu RXNE=0 thì điều đó có nghĩa là dữ liệu hợp lệ cuối cùng đã được đọc và do đó không
có gì để đọc trong RDR. Trường hợp này có thể xảy ra khi dữ liệu hợp lệ cuối cùng được
đọc trong RDR cùng lúc với dữ liệu mới (và bị mất) được nhận. Nó cũng có thể xảy ra
khi dữ liệu mới được nhận trong quá trình đọc (giữa quyền truy cập đọc thanh ghi USART_SR
và quyền truy cập đọc USART_DR).

Lỗi tiếng ồn

Kỹ thuật lấy mẫu quá mức được sử dụng (ngoại trừ ở chế độ đồng bộ) để phục hồi dữ liệu
bằng cách phân biệt giữa dữ liệu đến hợp lệ và nhiễu.

Hình 284. Lấy mẫu dữ liệu để phát hiện tiếng ồn

DÒNG RX

giá trị được lấy mẫu

Vật mẫu
cái đồng hồ 1 2 3 4 5 6 7 số 8 9 10 11 12 13 14 15 16

16/6

16/7 16/7

Một chút thời gian

796/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Máy phát thu không đồng bộ đồng bộ đa năng (USART)

Bảng 191. Phát hiện tiếng ồn từ dữ liệu được lấy mẫu

Giá trị lấy mẫu trạng thái ĐB Giá trị bit nhận được Hiệu lực dữ liệu

000 0 0 Có hiệu lực

001 1 0 Không hơ p lê

010 1 0 Không hơ p lê

011 1 1 Không hơ p lê

100 1 0 Không hơ p lê

101 1 1 Không hơ p lê

110 1 1 Không hơ p lê

111 0 1 Có hiệu lực

Khi phát hiện thấy nhiễu trong khung:

• NE được đặt ở cạnh lên của bit RXNE.

• Dữ liệu không hợp lệ được chuyển từ thanh ghi Shift sang thanh ghi USART_DR.

• Không có ngắt nào được tạo ra trong trường hợp truyền thông một byte. Tuy nhiên, bit này tăng
cùng lúc với bit RXNE và chính nó tạo ra ngắt. Trong trường hợp giao tiếp nhiều bộ
đệm, một ngắt sẽ được phát ra nếu bit EIE được đặt trong thanh ghi USART_CR3.

Bit NE được đặt lại bằng thao tác đọc thanh ghi USART_SR, sau đó là thao tác đọc thanh ghi
USART_DR.

Lỗi đóng khung

Lỗi khung được phát hiện khi:

Bit dừng không được nhận dạng khi tiếp nhận vào thời điểm dự kiến, sau khi mất đồng bộ hóa
hoặc bị nhiễu quá mức.

Khi phát hiện lỗi đóng khung:

• Bit FE được thiết lập bằng phần cứng

• Dữ liệu không hợp lệ được chuyển từ thanh ghi Shift sang thanh ghi USART_DR.

• Không có ngắt nào được tạo ra trong trường hợp truyền thông một byte. Tuy nhiên, bit này tăng
cùng lúc với bit RXNE và chính nó tạo ra ngắt. Trong trường hợp giao tiếp nhiều bộ
đệm, một ngắt sẽ được phát ra nếu bit EIE được đặt trong thanh ghi USART_CR3.

Bit FE được đặt lại bằng thao tác đọc thanh ghi USART_SR, sau đó là thao tác đọc thanh ghi
USART_DR.

RM0008 Phiên bản 21 797/1136

827
Machine Translated by Google

Máy phát thu không đồng bộ đồng bộ đa năng (USART) RM0008

Các bit dừng có thể cấu hình trong quá trình tiếp nhận

Số lượng bit dừng nhận được có thể được cấu hình thông qua các bit điều khiển của Thanh ghi điều
khiển 2 - nó có thể là 1 hoặc 2 ở chế độ bình thường và 0,5 hoặc 1,5 ở chế độ Thẻ thông minh.

1. Bit dừng 0,5 (tiếp nhận ở chế độ Thẻ thông minh): Không thực hiện lấy mẫu đối với bit dừng 0,5.
Kết quả là không phát hiện được lỗi đóng khung và không phát hiện được khung ngắt khi chọn
bit dừng 0,5.

2. 1 stop bit: Việc lấy mẫu cho 1 bit stop được thực hiện trên mẫu thứ 8, 9 và 10.

3. 1,5 bit stop (chế độ Smartcard): Khi truyền ở chế độ Smartcard, thiết bị phải kiểm tra xem dữ
liệu đã được gửi đúng chưa. Do đó, khối máy thu phải được bật (RE = 1 trong thanh ghi
USART_CR1) và bit dừng được kiểm tra để kiểm tra xem thẻ thông minh có phát hiện ra lỗi chẵn
lẻ hay không. Trong trường hợp xảy ra lỗi chẵn lẻ, thẻ thông minh sẽ buộc tín hiệu dữ liệu ở
mức thấp trong quá trình lấy mẫu - tín hiệu NACK-, tín hiệu này được gắn cờ là lỗi định khung.
Sau đó, cờ FE được đặt với RXNE ở cuối bit dừng 1,5. Việc lấy mẫu cho 1,5 bit dừng được thực
hiện trên các mẫu thứ 16, 17 và 18 (chu kỳ xung nhịp 1 baud sau khi bắt đầu bit dừng). Bit
dừng 1,5 có thể được phân tách thành 2 phần: một khoảng thời gian xung nhịp 0,5 baud trong
đó không có gì xảy ra, tiếp theo là 1 khoảng thời gian bit dừng bình thường trong đó việc
lấy mẫu diễn ra giữa chừng. Tham khảo Phần 27.3.11 để biết thêm chi tiết.

4. 2 bit stop: Việc lấy mẫu cho 2 bit stop được thực hiện trên mẫu thứ 8, 9 và 10 của bit stop
đầu tiên. Nếu phát hiện lỗi khung trong bit dừng đầu tiên, cờ lỗi khung sẽ được đặt. Bit dừng
thứ hai không được kiểm tra lỗi đóng khung. Cờ RXNE sẽ được đặt ở cuối bit dừng đầu tiên.

27.3.4 Tạo tốc độ truyền phân số

Tốc độ truyền cho máy thu và máy phát (Rx và Tx) đều được đặt ở cùng giá trị như được lập trình
trong các giá trị Mantissa và Fraction của USARTDIV.

fCK
Tốc độ truyền Tx/Rx =
(16*USARTDIV)

chú thích: fCK - Đồng hồ đầu vào cho thiết bị ngoại vi (PCLK1 cho USART2, 3, 4, 5 hoặc PCLK2 cho USART1)

USARTDIV là số điểm cố định không dấu được mã hóa trên thanh ghi USART_BRR.

Ghi chú: Bộ đếm baud được cập nhật với giá trị mới của thanh ghi Baud sau khi ghi vào USART_BRR. Do đó
giá trị thanh ghi tốc độ Baud không được thay đổi trong quá trình truyền thông.

Cách lấy USARTDIV từ các giá trị đăng ký USART_BRR

Ví dụ 1:

Nếu DIV_Mantissa = 0d27 và DIV_Fraction = 0d12 (USART_BRR = 0x1BC), thì

Thần chú (USARTDIV) = 0d27

Phân số (USARTDIV) = 12/16 = 0d0,75

Do đó USARTDIV = 0d27,75

798/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Máy phát thu không đồng bộ đồng bộ đa năng (USART)

Ví dụ 2:

Để lập trình USARTDIV = 0d25.62

Điều này dẫn đến:

DIV_Phân số = 16*0d0,62 = 0d9,92

Số thực gần nhất là 0d10 = 0xA

DIV_Mantissa = mantissa (0d25.620) = 0d25 = 0x19

Khi đó, USART_BRR = 0x19A do đó USARTDIV = 0d25.625

Ví dụ 3: Lập

trình USARTDIV = 0d50.99

Điều này dẫn đến:

DIV_Phân số = 16*0d0,99 = 0d15,84

Số thực gần nhất là 0d16 = 0x10 => tràn DIV_frac[3:0] => phần mang phải được thêm vào phần
định trị

DIV_Mantissa = mantissa (0d50.990 + mang theo) = 0d51 = 0x33

Khi đó, USART_BRR = 0x330 do đó USARTDIV = 0d51.000

Bảng 192. Tính toán lỗi cho tốc độ truyền được lập trình

Tốc độ truyền fPCLK = 36 MHz fPCLK = 72 MHz

Giá trị được lập trình Giá trị được lập trình
S.No tính bằng Kbps Thực tế % Lỗi(1) Thực tế % Lỗi(1)
trong thanh ghi Tốc độ Baud trong thanh ghi Tốc độ Baud

1. 2.4 2.400 937,5 0% 2.4 1875 0%

2. 9,6 9.600 234.375 0% 9,6 468,75 0%

3. 19.2 19.2 117.1875 0% 19.2 234.375 0%

4. 57,6 57,6 39.0625 0% 57,6 78.125 0,%

5. 115,2 115,384 19,5 0,15% 115,2 39.0625 0%

6. 230,4 230,769 9,75 0,16% 230,769 19,5 0,16%

7. 460,8 461,538 4.875 0,16% 461,538 9,75 0,16%

8. 921.6 923.076 2.4375 0,16% 923,076 4.875 0,16%

9. 2250 2250 1 0% 2250 2 0%

10. 4500 NA NA NA 4500 1 0%

1. Được xác định là (Tốc độ truyền được tính toán - Tốc độ truyền mong muốn) / Tốc độ truyền mong muốn.

Ghi chú: Xung nhịp CPU càng thấp thì độ chính xác đối với tốc độ Baud cụ thể càng thấp. Giới hạn trên của
tốc độ truyền có thể đạt được có thể được cố định bằng dữ liệu này.

Chỉ USART1 có xung nhịp PCLK2 (tối đa 72 MHz). Các USART khác có xung nhịp PCLK1 (tối đa 36
MHz).

RM0008 Phiên bản 21 799/1136

827
Machine Translated by Google

Máy phát thu không đồng bộ đồng bộ đa năng (USART) RM0008

27.3.5 Dung sai của máy thu USART đối với độ lệch đồng hồ

Bộ thu không đồng bộ của USART chỉ hoạt động chính xác nếu tổng độ lệch của hệ thống đồng hồ nhỏ
hơn dung sai của bộ thu USART. Các nguyên nhân góp phần tạo ra sai lệch tổng thể là:

• DTRA: Độ lệch do lỗi máy phát (bao gồm cả độ lệch của


bộ dao động cục bộ của máy phát)

• DQUANT: Lỗi do lượng tử hóa tốc độ baud của máy thu


• DREC: Độ lệch của bộ dao động cục bộ của máy thu

• DTCL: Độ lệch do đường truyền (thường là do bộ thu phát có thể gây ra sự bất đối xứng giữa
thời gian chuyển tiếp từ thấp lên cao và thời gian chuyển tiếp từ cao xuống thấp)

DTRA + DQUANT + DREC + DTCL < Dung sai máy thu USART

Dung sai của bộ thu USART để nhận dữ liệu đúng cách bằng độ lệch cho phép tối đa và phụ thuộc
vào các lựa chọn sau:
• Độ dài ký tự 10 hoặc 11 bit được xác định bởi bit M trong thanh ghi USART_CR1
• có sử dụng tốc độ baud phân đoạn hay không

Bảng 193. Dung sai máy thu USART khi DIV_Fraction bằng 0
chút M NF là một lỗi NF là không quan tâm

0 3,75% 4,375%

1 3,41% 3,97%

Bảng 194. Dung sai bộ thu USART khi DIV_Fraction khác 0


chút M NF là một lỗi NF là không quan tâm

0 3,33% 3,88%

1 3,03% 3,53%

Ghi chú: Các số liệu được chỉ định trong Bảng 193 và Bảng 194 có thể hơi khác nhau trong trường hợp đặc biệt
khi các khung nhận được chứa một số khung Nhàn rỗi có thời gian chính xác là 10 bit khi M=0 (thời gian
11 bit khi M=1).

27.3.6 Giao tiếp đa bộ xử lý

Có khả năng thực hiện giao tiếp đa bộ xử lý với USART (một số USART được kết nối trong mạng).
Chẳng hạn, một trong các USART có thể là chính, đầu ra TX của nó được kết nối với đầu vào RX
của USART khác. Những cái còn lại là phụ, đầu ra TX tương ứng của chúng được AND logic với
nhau và kết nối với đầu vào RX của chính.

Trong cấu hình đa bộ xử lý, điều mong muốn là chỉ người nhận tin nhắn dự định mới chủ
động nhận được nội dung tin nhắn đầy đủ, do đó giảm chi phí dịch vụ USART dư thừa cho tất cả
người nhận không có địa chỉ.

800/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Máy phát thu không đồng bộ đồng bộ đa năng (USART)

Các thiết bị không có địa chỉ có thể được đặt ở chế độ tắt tiếng bằng chức năng tắt tiếng.
Ở chế độ tắt tiếng:

• Không có bit trạng thái tiếp nhận nào có thể được thiết lập.

• Tất cả các ngắt nhận đều bị ức chế.

• Bit RWU trong thanh ghi USART_CR1 được đặt thành 1. RWU có thể được điều khiển tự động bằng
phần cứng hoặc được ghi bởi phần mềm trong một số điều kiện nhất định.

USART có thể vào hoặc thoát khỏi chế độ tắt tiếng bằng một trong hai phương pháp, tùy thuộc vào
Bit WAKE trong thanh ghi USART_CR1:
• Phát hiện dòng nhàn rỗi nếu bit WAKE được đặt lại,

• Phát hiện đánh dấu địa chỉ nếu bit WAKE được đặt.

Phát hiện dòng nhàn rỗi (WAKE=0)

USART chuyển sang chế độ tắt tiếng khi bit RWU được ghi thành 1.

Nó thức dậy khi phát hiện khung nhàn rỗi. Sau đó bit RWU bị xóa bằng phần cứng nhưng bit IDLE
không được đặt trong thanh ghi USART_SR. RWU cũng có thể được ghi về 0 bằng phần mềm.

Một ví dụ về hoạt động của chế độ tắt tiếng sử dụng tính năng phát hiện dòng không tải được đưa ra trong Hình 285.

Hình 285. Chế độ tắt tiếng bằng cách sử dụng chức năng phát hiện dòng không hoạt động

RXNE RXNE

RX Dữ liệu 1 Dữ liệu 2 Dữ liệu 3 Dữ liệu 4 nhàn rỗi Dữ liệu 5 Dữ liệu 6

Chế độ tắt tiếng Chế độ bình thường


RWU

RWU được viết thành 1 Đã phát hiện khung nhàn rỗi

Phát hiện dấu địa chỉ (WAKE=1)

Trong chế độ này, byte được nhận dạng là địa chỉ nếu MSB của chúng là '1', nếu không
chúng được coi là dữ liệu. Trong một byte địa chỉ, địa chỉ của máy thu mục tiêu được đặt trên 4
LSB. Từ 4 bit này được người nhận so sánh với địa chỉ riêng của nó được lập trình trong các bit
ADD trong thanh ghi USART_CR2.

USART chuyển sang chế độ tắt tiếng khi nhận được ký tự địa chỉ không khớp với địa chỉ được

lập trình của nó. Trong trường hợp này, bit RWU được thiết lập bằng phần cứng. Cờ RXNE không
được đặt cho byte địa chỉ này và không có yêu cầu ngắt cũng như DMA nào được đưa ra vì
USART sẽ chuyển sang chế độ tắt tiếng.

Nó thoát khỏi chế độ tắt tiếng khi nhận được ký tự địa chỉ khớp với địa chỉ được lập

trình. Sau đó bit RWU bị xóa và các byte tiếp theo được nhận bình thường. Bit RXNE được
đặt cho ký tự địa chỉ vì bit RWU đã bị xóa.

Bit RWU có thể được ghi thành 0 hoặc 1 khi bộ đệm máy thu không chứa dữ liệu (RXNE=0 trong thanh
ghi USART_SR). Nếu không thì nỗ lực ghi sẽ bị bỏ qua.

Một ví dụ về hoạt động của chế độ tắt tiếng bằng cách sử dụng tính năng phát hiện dấu địa chỉ được đưa ra trong Hình 286.

RM0008 Phiên bản 21 801/1136

827
Machine Translated by Google

Máy phát thu không đồng bộ đồng bộ đa năng (USART) RM0008

Hình 286. Chế độ tắt tiếng bằng cách sử dụng tính năng phát hiện dấu địa chỉ

Trong ví dụ này, địa chỉ hiện tại của người nhận là 1 RXNE RXNE RXNE
(được lập trình trong thanh ghi USART_CR2)

RX Địa chỉ nhàn rỗi=0 Dữ liệu 1 Dữ liệu 2 nhàn rỗi Địa chỉ=1 Dữ liệu 3 Dữ liệu 4 Cộng=2 Dữ liệu 5

Chế độ tắt tiếng Chế độ bình thường Chế độ tắt tiếng


RWU

Địa chỉ không khớp Địa chỉ trùng khớp Địa chỉ không khớp

RWU được viết thành 1

(RXNE đã bị xóa)

27.3.7 Kiểm soát chẵn lẻ

Kiểm soát chẵn lẻ (tạo bit chẵn lẻ khi truyền và kiểm tra tính chẵn lẻ khi nhận) có thể được
bật bằng cách đặt bit PCE trong thanh ghi USART_CR1. Tùy thuộc vào độ dài khung được xác
định bởi bit M, các định dạng khung USART có thể có được liệt kê trong Bảng 195.

Bảng 195. Định dạng khung(1)

chút M bit PCE khung USART

0 0 | SB | dữ liệu 8 bit | STB |

0 1 | SB | Dữ liệu 7 bit | PB | STB |

1 0 | SB | Dữ liệu 9 bit | STB |

1 1 | SB | Dữ liệu 8 bit PB | STB |

1. Legends: SB: Bit bắt đầu, STB: Bit dừng, PB: Bit chẵn lẻ

Ghi chú: Trong trường hợp đánh thức bởi một dấu địa chỉ, bit MSB của dữ liệu sẽ được tính đến chứ
không phải bit chẵn lẻ

Tính chẵn lẻ: bit chẵn lẻ được tính toán để thu được số “1” chẵn bên trong khung được tạo từ
7 hoặc 8 bit LSB (tùy thuộc vào việc M có bằng 0 hay 1) và bit chẵn lẻ.

Ví dụ: dữ liệu=00110101; Đặt 4 bit => bit chẵn lẻ sẽ là 0 nếu chọn chẵn lẻ (bit PS trong
USART_CR1 = 0).

Tính chẵn lẻ lẻ: bit chẵn lẻ được tính toán để thu được số lẻ “1” bên trong khung được tạo
từ 7 hoặc 8 bit LSB (tùy thuộc vào việc M có bằng 0 hay 1) và bit chẵn lẻ.

Ví dụ: dữ liệu=00110101; Đặt 4 bit => bit chẵn lẻ sẽ là 1 nếu chọn chẵn lẻ lẻ (bit PS
trong USART_CR1 = 1).

Chế độ truyền: Nếu bit PCE được đặt trong USART_CR1, thì bit MSB của dữ liệu được ghi trong
thanh ghi dữ liệu sẽ được truyền đi nhưng bị thay đổi bởi bit chẵn lẻ (số chẵn là “1s” nếu
chọn chẵn lẻ (PS=0) hoặc số lẻ là “1s” nếu chọn chẵn lẻ lẻ (PS=1)). Nếu kiểm tra tính chẵn
lẻ không thành công, cờ PE được đặt trong thanh ghi USART_SR và ngắt được tạo ra nếu
PEIE được đặt trong thanh ghi USART_CR1.

802/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Máy phát thu không đồng bộ đồng bộ đa năng (USART)

27.3.8 Chế độ LIN (mạng kết nối cục bộ)

Chế độ LIN được chọn bằng cách đặt bit LINEN trong thanh ghi USART_CR2. Trong chế độ LIN,
các bit sau phải được xóa:

• STOP[1:0], CLKEN trong thanh ghi USART_CR2

• SCEN, HDSEL và IREN trong thanh ghi USART_CR3.

truyền dẫn LIN

Quy trình tương tự được giải thích trong Mục 27.3.2 phải được áp dụng cho đường
truyền LIN Master so với đường truyền USART thông thường với những điểm khác biệt sau:

• Xóa bit M để cấu hình độ dài từ 8 bit.

• Đặt bit LINEN để vào chế độ LIN. Trong trường hợp này, việc thiết lập bit SBK sẽ gửi 13 bit '0' làm
ký tự ngắt. Sau đó, một bit giá trị '1' được gửi để cho phép phát hiện lần bắt đầu tiếp theo.

Lễ tân LIN

Một mạch phát hiện sự cố được triển khai trong USART. Việc phát hiện hoàn toàn độc lập với bộ thu USART
thông thường. Việc ngắt có thể được phát hiện bất cứ khi nào nó xảy ra, trong trạng thái không hoạt
động hoặc trong một khung.

Khi bộ thu được bật (RE=1 trong USART_CR1), mạch sẽ xem đầu vào RX để tìm tín hiệu khởi động.
Phương pháp phát hiện các bit bắt đầu giống nhau khi tìm kiếm các ký tự hoặc dữ liệu
ngắt. Sau khi phát hiện được bit bắt đầu, mạch sẽ lấy mẫu các bit tiếp theo giống hệt như
dữ liệu (trên các mẫu thứ 8, 9 và 10). Nếu 10 (khi LBDL = 0 trong USART_CR2) hoặc 11 (khi
LBDL=1 trong USART_CR2) các bit liên tiếp được phát hiện là '0' và theo sau là ký tự phân
cách thì cờ LBD được đặt trong USART_SR. Nếu bit LBDIE = 1, ngắt sẽ được tạo ra. Trước khi
xác thực điểm ngắt, dấu phân cách sẽ được kiểm tra vì nó biểu thị rằng đường RX đã trở lại mức
cao.

Nếu '1' được lấy mẫu trước khi xảy ra 10 hoặc 11, mạch phát hiện ngắt sẽ hủy việc phát hiện
hiện tại và tìm kiếm lại bit bắt đầu.

Nếu chế độ LIN bị tắt (LINEN=0), bộ thu sẽ tiếp tục hoạt động như USART bình thường mà không
tính đến việc phát hiện ngắt.

Nếu chế độ LIN được bật (LINEN=1), ngay khi xảy ra lỗi định khung (tức là bit dừng được
phát hiện ở '0', đây sẽ là trường hợp đối với bất kỳ khung ngắt nào), bộ thu sẽ dừng cho đến
khi mạch phát hiện ngắt nhận được một trong hai a '1', nếu từ ngắt không hoàn chỉnh hoặc
ký tự phân cách nếu phát hiện dấu ngắt.

Hoạt động của máy trạng thái phát hiện sự cố và cờ ngắt được hiển thị trên Hình 287. Ví
dụ về các khung ngắt được đưa ra trên Hình 288.

RM0008 Phiên bản 21 803/1136

827
Machine Translated by Google

Máy phát thu không đồng bộ đồng bộ đa năng (USART) RM0008

Hình 287. Phát hiện ngắt ở chế độ LIN (độ dài ngắt 11 bit - bit LBDL được đặt)

Trường hợp 1: tín hiệu ngắt không đủ dài => ngắt bị loại bỏ, LBD không được đặt

dòng RX Phá vỡ khung

Chụp nhấp nháy

máy trạng thái reak Nhàn rỗi Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 Bit8 Bit9 Bit10 Nhàn rỗi

Đọc mẫu 0 0000 0 0 0 0 0 1

Trường hợp 2: tín hiệu ngắt vừa đủ dài => phát hiện ngắt, LBD được thiết lập

dòng RX Phá vỡ khung

Chụp nhấp nháy


dấu phân cách là ngay lập tức

máy trạng thái reak Nhàn rỗi Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 Bit8 Bit9 B10 Nhàn rỗi

Đọc mẫu 0 0000 0 0 0 0 0 0

LBD

Trường hợp 3: tín hiệu ngắt đủ dài => phát hiện ngắt, LBD được thiết lập

dòng RX Phá vỡ khung

Chụp nhấp nháy

máy trạng thái reak Nhàn rỗi Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 Bit8 Bit9 Bit10 chờ dấu phân cách Nhàn rỗi

Đọc mẫu 0 0000 0 0 0 0 0 0

LBD

804/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Máy phát thu không đồng bộ đồng bộ đa năng (USART)

Hình 288. Phát hiện ngắt trong chế độ LIN so với phát hiện lỗi đóng khung

Trong các ví dụ này, chúng tôi giả sử rằng LBDL=1 (độ dài ngắt 11 bit), M=0 (dữ liệu 8 bit)

Trường hợp 1: sự cố xảy ra sau khi không hoạt động

dòng RX dữ liệu 1 nhàn rỗi PHÁ VỠ dữ liệu2 (0x55) dữ liệu 3 (tiêu đề)

1 lần dữ liệu 1 lần dữ liệu

RXNE / FE

LBD

Trường hợp 1: xảy ra sự cố khi đang nhận dữ liệu

dòng RX dữ liệu 1 dữ liệu 2 PHÁ VỠ dữ liệu2 (0x55) dữ liệu 3 (tiêu đề)

1 lần dữ liệu 1 lần dữ liệu

RXNE / FE

LBD

27.3.9 Chế độ đồng bộ USART

Chế độ đồng bộ được chọn bằng cách ghi bit CLKEN trong thanh ghi USART_CR2 lên 1. Ở chế độ đồng bộ,
các bit sau phải được xóa:

• Bit LINEN trong thanh ghi USART_CR2,

• Các bit SCEN, HDSEL và IREN trong thanh ghi USART_CR3.

USART cho phép người dùng điều khiển truyền thông nối tiếp đồng bộ hai chiều ở chế độ chính. Chân
CK là đầu ra của đồng hồ máy phát USART. Không có xung đồng hồ nào được gửi đến chân CK trong bit
start và bit stop. Tùy thuộc vào trạng thái của bit LBCL trong thanh ghi USART_CR2, xung đồng hồ sẽ
được tạo hoặc không được tạo trong bit dữ liệu hợp lệ cuối cùng (dấu địa chỉ). Bit CPOL trong
thanh ghi USART_CR2 cho phép người dùng chọn cực của đồng hồ và bit CPHA trong thanh ghi
USART_CR2 cho phép người dùng chọn pha của đồng hồ bên ngoài (xem Hình 289, Hình 290 và Hình 291).

Trong thời gian nghỉ, mở đầu và ngắt gửi, đồng hồ CK bên ngoài không được kích hoạt.

Ở chế độ đồng bộ, bộ phát USART hoạt động giống hệt như ở chế độ không đồng bộ. Nhưng vì CK được
đồng bộ với TX (theo CPOL và CPHA) nên dữ liệu trên TX cũng đồng bộ.

Ở chế độ này, bộ thu USART hoạt động theo cách khác so với chế độ không đồng bộ. Nếu
RE=1, dữ liệu được lấy mẫu trên CK (cạnh tăng hoặc giảm, tùy thuộc vào CPOL và CPHA), mà không có
bất kỳ lấy mẫu quá mức nào. Phải tôn trọng thiết lập và thời gian giữ (phụ thuộc vào tốc
độ truyền: thời gian 1/16 bit).

Ghi chú: Chân CK hoạt động cùng với chân TX. Do đó, đồng hồ chỉ được cung cấp nếu bộ phát được bật
(TE=1) và dữ liệu đang được truyền (thanh ghi dữ liệu USART_DR

RM0008 Phiên bản 21 805/1136

827
Machine Translated by Google

Máy phát thu không đồng bộ đồng bộ đa năng (USART) RM0008

được viết bởi). Điều này có nghĩa là không thể nhận dữ liệu đồng bộ mà không truyền dữ liệu.

Các bit LBCL, CPOL và CPHA phải được chọn khi cả bộ phát và bộ thu đều bị tắt (TE=RE=0) để
đảm bảo rằng các xung đồng hồ hoạt động chính xác. Các bit này không được thay đổi khi bộ phát
hoặc bộ thu được bật.

Nên đặt TE và RE theo cùng một lệnh để giảm thiểu việc thiết lập và thời gian giữ của máy thu.

USART chỉ hỗ trợ chế độ chính: nó không thể nhận hoặc gửi dữ liệu liên quan đến đồng hồ đầu
vào (CK luôn là đầu ra).

Hình 289. Ví dụ USART về truyền đồng bộ

RX Dữ liệu ra
TX Dữ liệu trong

USART Thiết bị đồng bộ


(ví dụ SPI nô lệ)

CK Cái đồng hồ

Hình 290. Sơ đồ định thời đồng hồ dữ liệu USART (M=0)

Nhàn rỗi hoặc tiếp theo


Nhàn rỗi hoặc trước đó
đầu truyền Bắt quá trình lây truyền
M=0 (8 bit dữ liệu) Dừng lại

Đồng hồ (CPOL=0, CPHA=0)


*

Đồng hồ (CPOL=0, CPHA=1)


*

Đồng hồ (CPOL=1, CPHA=0) *

Đồng hồ (CPOL=1, CPHA=1) *

Dữ liệu trên TX 01 2 34 56 7
(từ thầy)
Bắt đầu LSB Dừng MSB

Dữ liệu trên 01 2 34 56 7
RX (từ nô lệ) MSB
LSB
*
Chụp nhấp nháy

* Bit LBCL điều khiển xung đồng hồ dữ liệu cuối cùng

806/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Máy phát thu không đồng bộ đồng bộ đa năng (USART)

Hình 291. Sơ đồ định thời đồng hồ dữ liệu USART (M=1)


Nhàn rỗi hoặc trước đó
đầu truyền Bắt
M=1 (9 bit dữ liệu) Nhàn rỗi hoặc tiếp theo

Dừng lại
quá trình lây truyền

Đồng hồ (CPOL=0, CPHA=0)


*

Đồng hồ (CPOL=0, CPHA=1)


*

Đồng hồ (CPOL=1, CPHA=0) *

Đồng hồ (CPOL=1, CPHA=1) *

Dữ liệu trên TX 01 2 34 56 7 số 8

(từ thầy)
Bắt đầu LSB Dừng MSB

Dữ liệu trên 01 234 56 7 số 8

RX (từ nô lệ) MSB


LSB

*
Chụp nhấp nháy

* Bit LBCL điều khiển xung đồng hồ dữ liệu cuối cùng

Hình 292. Thời gian thiết lập/giữ dữ liệu RX

CK (chụp nhấp nháy trên CK


cạnh tăng trong ví dụ này)
Dữ liệu trên RX
bit DATA hợp lệ
(từ nô lệ)

tCÀI ĐẶT GIỮ

tSETUP = thời gian tHOLD 1/16 bit

Ghi chú: Chức năng của CK sẽ khác ở chế độ Smartcard. Tham khảo phần Chế độ thẻ thông minh để biết thêm chi tiết.

27.3.10 Giao tiếp bán song công một dây

Chế độ bán song công một dây được chọn bằng cách đặt bit HDSEL trong thanh ghi USART_CR3. Trong chế độ
này, các bit sau phải được xóa:

• Các bit LINEN và CLKEN trong thanh ghi USART_CR2,

• Bit SCEN và IREN trong thanh ghi USART_CR3.

USART có thể được cấu hình để tuân theo giao thức bán song công một dây. Ở chế độ bán song công một
dây, các chân TX và RX được kết nối bên trong. Việc lựa chọn giữa giao tiếp bán song công và song công
hoàn toàn được thực hiện bằng bit điều khiển 'HALF DUPLEX SEL' (HDSEL trong USART_CR3).

Ngay khi HDSEL được ghi vào 1:

• RX không còn được sử dụng nữa,

• TX luôn được giải phóng khi không có dữ liệu nào được truyền đi. Do đó, nó hoạt động như một IO tiêu chuẩn
khi không hoạt động hoặc khi tiếp nhận. Điều đó có nghĩa là IO phải được cấu hình sao cho TX được
định cấu hình là đầu vào nổi (hoặc đầu ra có cống mở cao) khi không được USART điều khiển.

RM0008 Phiên bản 21 807/1136

827
Machine Translated by Google

Máy phát thu không đồng bộ đồng bộ đa năng (USART) RM0008

Ngoài ra, việc liên lạc cũng tương tự như những gì được thực hiện ở chế độ USART thông thường.
Các xung đột trên tuyến phải được quản lý bằng phần mềm (ví dụ: bằng cách sử dụng trọng tài
tập trung). Đặc biệt, việc truyền tải không bao giờ bị chặn bởi phần cứng và tiếp tục xảy
ra ngay khi dữ liệu được ghi vào thanh ghi dữ liệu trong khi bit TE được thiết lập.

27.3.11 Thẻ thông minh

Chế độ Smartcard được chọn bằng cách đặt bit SCEN trong thanh ghi USART_CR3. Trong chế độ
Smartcard, các bit sau phải được xóa:

• Bit LINEN trong thanh ghi USART_CR2,

• Bit HDSEL và IREN trong thanh ghi USART_CR3.

Hơn nữa, bit CLKEN có thể được thiết lập để cung cấp đồng hồ cho thẻ thông minh.

Giao diện Smartcard được thiết kế để hỗ trợ các Smartcard giao thức không đồng bộ như
được định nghĩa trong tiêu chuẩn ISO 7816-3. USART nên được cấu hình là:

• 8 bit cộng với tính chẵn lẻ: trong đó M=1 và PCE=1 trong thanh ghi USART_CR1
• 1,5 bit dừng khi truyền và nhận: trong đó STOP='11' trong thanh ghi USART_CR2.

Ghi chú: Cũng có thể chọn 0,5 bit dừng để nhận nhưng nên sử dụng 1,5 bit dừng cho cả truyền và nhận để
tránh chuyển đổi giữa hai cấu hình.

Hình 293 cho thấy các ví dụ về những gì có thể nhìn thấy trên dòng dữ liệu có và không có tính chẵn lẻ
lỗi.

Hình 293. Giao thức không đồng bộ ISO 7816-3

Không có lỗi chẵn lẻ


thời gian bảo vệ

S 0 1 2 3 4 5 6 7 P

Bắt đầu
chút

Với lỗi chẵn lẻ thời gian bảo vệ

S 0 1 2 3 4 5 6 7 P

Dòng kéo xuống thấp


Bắt đầu
bởi người nhận trong khi dừng lại
chút
trường hợp lỗi chẵn lẻ

Khi được kết nối với thẻ thông minh, đầu ra USART TX sẽ điều khiển một đường hai chiều cũng
được điều khiển bởi thẻ thông minh. Chân TX phải được cấu hình ở dạng cống mở.

808/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Máy phát thu không đồng bộ đồng bộ đa năng (USART)

Smartcard là một giao thức truyền thông song công một dây.

• Việc truyền dữ liệu từ thanh ghi dịch chuyển phát được đảm bảo bị trễ tối thiểu 1/2 baud
clock. Trong hoạt động bình thường, thanh ghi dịch truyền đầy đủ sẽ bắt đầu dịch ở
cạnh xung nhịp tiếp theo. Trong chế độ Smartcard, quá trình truyền này còn bị trì hoãn
thêm bởi đồng hồ tốc độ truyền 1/2 được đảm bảo.
• Nếu phát hiện lỗi chẵn lẻ trong quá trình nhận khung được lập trình với chu kỳ bit dừng
0,5 hoặc 1,5, đường truyền sẽ bị kéo xuống mức thấp trong khoảng thời gian xung
nhịp baud sau khi hoàn thành khung nhận. Điều này nhằm cho Smartcard biết rằng dữ
liệu được truyền tới USART chưa được nhận chính xác. Tín hiệu NACK này (kéo đường
truyền xuống mức thấp trong xung nhịp 1 baud) sẽ gây ra lỗi định khung ở phía máy phát
(được cấu hình với 1,5 bit dừng). Ứng dụng có thể xử lý việc gửi lại dữ liệu theo giao
thức. Lỗi chẵn lẻ sẽ được máy thu 'NACK' nếu bit điều khiển NACK được đặt, nếu không thì
NACK không được truyền đi.

• Việc xác nhận cờ TC có thể bị trì hoãn bằng cách lập trình thanh ghi Guard Time.
Trong hoạt động bình thường, TC được xác nhận khi thanh ghi dịch chuyển phát trống và
không có yêu cầu truyền tiếp nào được thực hiện. Trong chế độ Smartcard, thanh ghi dịch
truyền trống sẽ kích hoạt bộ đếm thời gian bảo vệ đếm đến giá trị được lập trình trong
thanh ghi Thời gian bảo vệ. TC bị buộc ở mức thấp trong thời gian này. Khi bộ đếm thời gian
bảo vệ đạt tới giá trị đã lập trình, TC được xác nhận ở mức cao.

• Việc hủy xác nhận cờ TC không bị ảnh hưởng bởi chế độ Smartcard.
• Nếu phát hiện lỗi khung ở đầu máy phát (do NACK từ máy thu), NACK sẽ không được phát
hiện dưới dạng bit bắt đầu bởi khối nhận của máy phát.
Theo giao thức ISO, thời lượng của NACK nhận được có thể là 1 hoặc 2 chu kỳ xung nhịp.

• Về phía bên nhận, nếu phát hiện ra lỗi chẵn lẻ và NACK được truyền đi thì bên nhận sẽ không
phát hiện NACK như một bit bắt đầu.

Ghi chú: Ký tự ngắt không có ý nghĩa quan trọng trong chế độ Thẻ thông minh. Dữ liệu 0x00 có lỗi đóng khung sẽ
được coi là dữ liệu chứ không phải là điểm ngắt.

Không có khung IDLE nào được truyền khi chuyển đổi bit TE. Khung IDLE (như được xác định cho
các cấu hình khác) không được xác định bởi giao thức ISO.

Hình 294 trình bày chi tiết cách USART lấy mẫu tín hiệu NACK. Trong ví dụ này, USART truyền
dữ liệu và được cấu hình với 1,5 bit dừng. Phần thu của USART được kích hoạt để kiểm
tra tính toàn vẹn của dữ liệu và tín hiệu NACK.

RM0008 Phiên bản 21 809/1136

827
Machine Translated by Google

Máy phát thu không đồng bộ đồng bộ đa năng (USART) RM0008

Hình 294. Phát hiện lỗi chẵn lẻ bằng cách sử dụng 1,5 bit stop

Bit 7 Bit chẵn lẻ 1.5 Bit dừng

1 chút thời gian thời gian 1,5 bit

lấy mẫu tại lấy mẫu tại

ngày 8, 9, 10 ngày 16, 17, 18

thời gian 0,5 bit 1 chút thời gian

lấy mẫu tại lấy mẫu tại


ngày 8, 9, 10 ngày 8, 9, 10

USART có thể cung cấp đồng hồ cho thẻ thông minh thông qua đầu ra CK. Trong chế độ
Smartcard, CK không liên quan đến giao tiếp mà chỉ được lấy từ đồng hồ đầu vào ngoại vi
bên trong thông qua bộ chia tỷ lệ trước 5 bit. Tỷ lệ phân chia được cấu hình trong
thanh ghi bộ đếm gộp trước USART_GTPR. Tần số CK có thể được lập trình từ fCK/2 đến fCK/62,
trong đó fCK là đồng hồ đầu vào ngoại vi.

27.3.12 Khối IrDA SIR ENDEC

Chế độ IrDA được chọn bằng cách đặt bit IREN trong thanh ghi USART_CR3. Trong chế độ
IrDA, các bit sau phải được xóa:

• Các bit LINEN, STOP và CLKEN trong thanh ghi USART_CR2,

• Bit SCEN và HDSEL trong thanh ghi USART_CR3.

Lớp vật lý IrDA SIR chỉ định việc sử dụng sơ đồ điều chế Return to Zero, Inverted (RZI)
biểu thị logic 0 dưới dạng xung ánh sáng hồng ngoại (xem Hình 295).

Bộ mã hóa truyền SIR điều chỉnh đầu ra luồng bit truyền không trở về 0 (NRZ) từ USART.
Luồng xung đầu ra được truyền đến trình điều khiển đầu ra bên ngoài và đèn LED hồng ngoại.
USART chỉ hỗ trợ tốc độ bit lên tới 115,2Kbps cho SIR ENDEC. Ở chế độ bình thường, độ rộng
xung truyền được chỉ định là 3/16 của chu kỳ bit.

Bộ giải mã nhận SIR giải điều chế luồng bit trở về 0 từ bộ dò hồng ngoại và xuất luồng
bit nối tiếp NRZ nhận được sang USART. Đầu vào bộ giải mã thường ở mức CAO (trạng thái
đánh dấu) ở trạng thái không hoạt động. Đầu ra bộ mã hóa truyền có cực tính ngược lại
với đầu vào bộ giải mã. Bit bắt đầu được phát hiện khi đầu vào bộ giải mã ở mức thấp.

810/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Máy phát thu không đồng bộ đồng bộ đa năng (USART)

• IrDA là giao thức truyền thông bán song công. Nếu Máy phát bận (tức là
USART gửi dữ liệu đến bộ mã hóa IrDA), mọi dữ liệu trên đường nhận IrDA sẽ bị bộ giải mã IrDA
bỏ qua và nếu Bộ thu bận (USART nhận dữ liệu đã giải mã từ USART), dữ liệu trên TX từ USART đến
IrDA không được mã hóa bởi IrDA. Trong khi nhận dữ liệu, nên tránh truyền vì dữ liệu
được truyền có thể bị hỏng.

• A '0' được truyền dưới dạng xung cao và '1' được truyền dưới dạng '0'. Chiều rộng của
xung được chỉ định là 3/16 của khoảng thời gian bit đã chọn ở chế độ bình thường (xem Hình 296).

• Bộ giải mã SIR chuyển đổi tín hiệu nhận tuân thủ IrDA thành luồng bit để
USART.

• Logic nhận SIR diễn giải trạng thái cao là logic và các xung thấp là logic
số không.

• Đầu ra bộ mã hóa phát có cực tính ngược với đầu vào bộ giải mã. SIR
đầu ra ở trạng thái thấp khi không hoạt động.

• Đặc tả IrDA yêu cầu chấp nhận các xung lớn hơn 1,41 us. Độ rộng xung chấp nhận được có thể lập
trình được. Logic phát hiện trục trặc ở đầu thu lọc ra các xung có độ rộng nhỏ hơn 2 chu
kỳ PSC (PSC là giá trị bộ đếm gộp được lập trình trong thanh ghi Baud công suất thấp
IrDA, USART_GTPR). Các xung có độ rộng nhỏ hơn 1 chu kỳ PSC luôn bị loại bỏ, nhưng các xung có
độ rộng lớn hơn một và nhỏ hơn hai chu kỳ có thể được chấp nhận hoặc bị loại bỏ, những xung
lớn hơn 2 chu kỳ sẽ được chấp nhận dưới dạng xung. Bộ mã hóa/giải mã IrDA không hoạt động
khi PSC=0.

• Máy thu có thể giao tiếp với máy phát công suất thấp.
• Trong chế độ IrDA, các bit STOP trong thanh ghi USART_CR2 phải được cấu hình thành “bit stop”.

Chế độ năng lượng thấp IrDA

Hệ thống điều khiển

Ở chế độ năng lượng thấp, độ rộng xung không được duy trì ở mức 3/16 của chu kỳ bit. Thay vào đó,
độ rộng của xung gấp 3 lần tốc độ truyền công suất thấp, tối thiểu có thể là 1,42 MHz.
Nói chung giá trị này là 1,8432 MHz (1,42 MHz < PSC < 2,12 MHz). Một bộ chia có thể lập trình ở
chế độ năng lượng thấp sẽ chia đồng hồ hệ thống để đạt được giá trị này.

Người nhận

Việc thu ở chế độ năng lượng thấp cũng tương tự như việc thu ở chế độ bình thường. Để phát hiện
trục trặc, USART nên loại bỏ các xung có thời lượng ngắn hơn 1/PSC. Mức thấp hợp lệ chỉ được chấp
nhận nếu thời lượng của nó lớn hơn 2 chu kỳ của đồng hồ Baud công suất thấp IrDA (giá trị PSC
tính bằng USART_GTPR).

Ghi chú: Một xung có độ rộng nhỏ hơn hai và lớn hơn một chu kỳ PSC có thể bị loại bỏ hoặc không.

Thời gian thiết lập máy thu phải được quản lý bằng phần mềm. Đặc tả lớp vật lý IrDA chỉ
định độ trễ tối thiểu là 10 ms giữa truyền và nhận (IrDA là giao thức bán song công).

RM0008 Phiên bản 21 811/1136

827
Machine Translated by Google

Máy phát thu không đồng bộ đồng bộ đa năng (USART) RM0008

Hình 295. Sơ đồ khối IrDA SIR ENDEC-

TX

HOẶC USART_TX

QUÝ NGÀI

Còi báo động


Chuyển giao IrDA_OUT
Mã hoá
USART

QUÝ NGÀI

RX Nhận được IrDA_IN


Bộ giải mã

USART_RX

Hình 296. Điều chế dữ liệu IrDA (3/16) -chế độ bình thường

Bắt đầu dừng lại một chút

TX chút

1 0 0 1 1 0 1
0 1 0

chu kỳ bit

IrDA_OUT
16/3

IrDA_IN

RX
0 0 0 1 0 1
0 1 1 1

27.3.13 Liên lạc liên tục bằng DMA

USART có khả năng liên tục liên lạc bằng DMA. Các yêu cầu DMA cho bộ đệm Rx và bộ đệm Tx được
tạo độc lập.

Ghi chú: Người dùng nên tham khảo thông số kỹ thuật của sản phẩm để biết tính khả dụng của bộ
điều khiển DMA. Nếu DMA không có sẵn trong sản phẩm, bạn nên sử dụng USART như được giải
thích trong Phần 27.3.2 hoặc 27.3.3. Trong thanh ghi USART_SR, người dùng có thể xóa
cờ TXE/RXNE để liên lạc liên tục.

Truyền sử dụng DMA

Chế độ DMA có thể được kích hoạt để truyền bằng cách đặt bit DMAT trong thanh ghi
USART_CR3. Dữ liệu được tải từ vùng SRAM được định cấu hình bằng thiết bị ngoại vi DMA (tham
khảo thông số kỹ thuật DMA) vào thanh ghi USART_DR bất cứ khi nào bit TXE được đặt. Để ánh xạ
kênh DMA cho truyền USART, hãy sử dụng quy trình sau (x biểu thị số kênh):

812/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Máy phát thu không đồng bộ đồng bộ đa năng (USART)

1. Viết địa chỉ thanh ghi USART_DR vào thanh ghi điều khiển DMA để định cấu hình nó làm đích
truyền. Dữ liệu sẽ được chuyển đến địa chỉ này từ bộ nhớ sau mỗi sự kiện TXE.

2. Ghi địa chỉ bộ nhớ vào thanh ghi điều khiển DMA để định cấu hình nó làm nguồn truyền. Dữ
liệu sẽ được tải vào thanh ghi USART_DR từ vùng bộ nhớ này sau mỗi sự kiện TXE.

3. Cấu hình tổng số byte được chuyển sang thanh ghi điều khiển DMA.

4. Cấu hình mức độ ưu tiên kênh trong thanh ghi DMA

5. Định cấu hình việc tạo ngắt DMA sau khi truyền một nửa/toàn bộ theo yêu cầu của
ứng dụng.

6. Xóa bit TC trong thanh ghi SR bằng cách ghi 0 vào nó.

7. Kích hoạt kênh trong thanh ghi DMA.

Khi đạt đến số lượng truyền dữ liệu được lập trình trong Bộ điều khiển DMA, bộ điều khiển
DMA sẽ tạo ra một ngắt trên vectơ ngắt kênh DMA.

Ở chế độ truyền, khi DMA đã ghi tất cả dữ liệu cần truyền (cờ TCIF được đặt trong thanh ghi DMA_ISR), cờ
TC có thể được giám sát để đảm bảo rằng giao tiếp USART đã hoàn tất. Điều này là cần thiết để tránh
làm hỏng lần truyền cuối cùng trước khi tắt USART hoặc vào chế độ Dừng. Phần mềm phải đợi cho đến
khi TC=1. Cờ TC vẫn bị xóa trong suốt quá trình truyền dữ liệu và nó được thiết lập bằng phần cứng ở cuối
quá trình truyền của khung cuối cùng.

Hình 297. Truyền dẫn sử dụng DMA

Lời mở đầu nhàn rỗi Khung 1 Khung 2 Khung 3

dòng TX

thiết lập bằng phần cứng thiết lập bằng phần cứng

xóa bằng cách đọc DMA xóa bằng cách đọc DMA
Cờ TXE thiết lập bằng phần cứng

bị DMA bỏ qua vì quá


Yêu cầu DMA
trình truyền DMA đã hoàn tất

USART_DR F1 F2 F3

Cờ TC thiết lập bằng phần cứng

DMA viết
SPI_DR
xóa

cờ DMA TCIF thiết lập bằng phần cứng bằng phần mềm

(Chuyển khoản hoàn tất)

phần mềm cấu hình DMA DMA viết F1 vào DMA viết F2 vào DMA ghi F3 vào Quá trình chuyển
để gửi 3 dữ liệu và DMA đã hoàn tất phần mềm đợi cho đến khi TC=1
cho phép USART_DR USART_DR USART_DR. (TCIF=1 inch
USART DMA_ISR)

ai17192

RM0008 Phiên bản 21 813/1136

827
Machine Translated by Google

Máy phát thu không đồng bộ đồng bộ đa năng (USART) RM0008

Tiếp nhận sử dụng DMA

Chế độ DMA có thể được bật để thu bằng cách đặt bit DMAR trong thanh ghi USART_CR3.
Dữ liệu được tải từ thanh ghi USART_DR đến vùng SRAM được định cấu hình bằng thiết bị
ngoại vi DMA (tham khảo thông số kỹ thuật DMA) bất cứ khi nào nhận được byte dữ liệu. Để ánh
xạ kênh DMA để thu USART, hãy sử dụng quy trình sau:

1. Viết địa chỉ thanh ghi USART_DR vào thanh ghi điều khiển DMA để định cấu hình nó làm nguồn
truyền. Dữ liệu sẽ được chuyển từ địa chỉ này vào bộ nhớ sau mỗi sự kiện RXNE.

2. Ghi địa chỉ bộ nhớ vào thanh ghi điều khiển DMA để định cấu hình nó làm đích truyền. Dữ
liệu sẽ được tải từ USART_DR vào vùng bộ nhớ này sau mỗi sự kiện RXNE.

3. Cấu hình tổng số byte được truyền trong thanh ghi điều khiển DMA.

4. Cấu hình mức ưu tiên kênh trong thanh ghi điều khiển DMA

5. Định cấu hình tạo ngắt sau khi truyền một nửa/toàn bộ theo yêu cầu của ứng dụng.

6. Kích hoạt kênh trong thanh ghi điều khiển DMA.

Khi đạt đến số lượng truyền dữ liệu được lập trình trong Bộ điều khiển DMA, bộ điều khiển DMA
sẽ tạo ra một ngắt trên vectơ ngắt kênh DMA.

Hình 298. Tiếp nhận bằng DMA

Khung 1 Khung 2 Khung 3

dòng TX

thiết lập bằng phần cứng

xóa bằng cách đọc DMA


Cờ RXNE

Yêu cầu DMA

USART_DR F1 F2 F3

DMA đọc SPI_DR

xóa
Cờ DMA TCIF thiết lập bằng phần cứng bằng phần mềm

(Chuyển khoản hoàn tất)

phần mềm cấu hình các DMA đọc F1 từ DMA đọc F2 từ DMA đọc F3 từ Quá trình chuyển
DMA để nhận 3 khối dữ liệu
DMA đã hoàn tất
và cho phép
USART_DR USART_DR USART_DR (TCIF=1 inch
USART DMA_ISR)

ai17193

Gắn cờ lỗi và tạo gián đoạn trong giao tiếp đa bộ đệm

Trong trường hợp giao tiếp nhiều bộ đệm nếu xảy ra lỗi trong quá trình giao dịch, cờ lỗi sẽ
được xác nhận sau byte hiện tại. Một ngắt sẽ được tạo ra nếu cờ cho phép ngắt được đặt. Đối
với lỗi định khung, lỗi tràn và cờ nhiễu được xác nhận bằng RXNE trong trường hợp nhận byte
đơn, sẽ có bit cho phép ngắt cờ lỗi riêng (bit EIE trong thanh ghi USART_CR3), nếu được thiết
lập sẽ phát ra ngắt sau byte hiện tại với một trong những lỗi này.

814/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Máy phát thu không đồng bộ đồng bộ đa năng (USART)

27.3.14 Kiểm soát luồng phần cứng

Có thể kiểm soát luồng dữ liệu nối tiếp giữa hai thiết bị bằng cách sử dụng đầu vào CTS và đầu
ra RTS. Hình 299 minh họa cách kết nối hai thiết bị ở chế độ này:

Hình 299. Điều khiển luồng phần cứng giữa hai USART

USART 1 USART 2
TX RX

mạch TX mạch thu


CTS RTS

RX TX

mạch thu mạch TX


RTS CTS

Kiểm soát luồng RTS và CTS có thể được kích hoạt độc lập bằng cách ghi các bit RTSE và CTSE
tương ứng thành 1 (trong thanh ghi USART_CR3).

Kiểm soát luồng RTS

Nếu điều khiển luồng RTS được bật (RTSE=1), thì RTS được xác nhận (ở mức thấp) miễn là bộ thu
USART sẵn sàng nhận dữ liệu mới. Khi thanh ghi nhận đầy, RTS sẽ được xác nhận lại, cho
biết rằng quá trình truyền dự kiến sẽ dừng ở cuối khung hiện tại. Hình 300 cho thấy một ví
dụ về giao tiếp khi bật điều khiển luồng RTS.

Hình 300. Điều khiển luồng RTS

Bắt đầu
Dừng lại Dừng lại
Dữ liệu 1 Bắt đầu nhàn rỗi Dữ liệu 2
RX Chút Chút Chút Chút

RTS

RXNE Dữ liệu 1 đọc RXNE


Dữ liệu 2 bây giờ có thể được truyền đi

Kiểm soát dòng chảy CTS

Nếu điều khiển luồng CTS được bật (CTSE=1), thì máy phát sẽ kiểm tra đầu vào CTS trước
khi truyền khung tiếp theo. Nếu CTS được xác nhận (ở mức thấp), thì dữ liệu tiếp theo
sẽ được truyền (giả sử rằng dữ liệu sẽ được truyền, nói cách khác, nếu TXE=0), nếu không
thì quá trình truyền sẽ không xảy ra. Khi CTS được xác nhận lại trong quá trình truyền, quá
trình truyền hiện tại được hoàn thành trước khi máy phát dừng.

Khi CTSE=1, bit trạng thái CTSIF được phần cứng tự động đặt ngay khi đầu vào CTS chuyển đổi.
Nó cho biết khi nào người nhận đã sẵn sàng hoặc chưa sẵn sàng để liên lạc.
Một ngắt được tạo ra nếu bit CTSIE trong thanh ghi USART_CR3 được đặt. Hình dưới đây
cho thấy một ví dụ về giao tiếp khi kích hoạt điều khiển luồng CTS.

RM0008 Phiên bản 21 815/1136


827
Machine Translated by Google

Máy phát thu không đồng bộ đồng bộ đa năng (USART) RM0008

Hình 301. Điều khiển luồng CTS


CTS CTS

CTS

Truyền đăng ký dữ liệu

TDR Dữ liệu 2 trống Dữ liệu 3 trống

Bắt đầu Bắt đầu


Dữ liệu 1 Dừng Dữ liệu 2 Dừng lại
Dữ liệu 3
TX
Nhàn rỗi
Chút Chút Chút Chút

Viết dữ liệu 3 trong TDR


Truyền dữ liệu 3

bị trì hoãn cho đến khi CTS = 0

27.4 USART ngắt

Bảng 196. Yêu cầu ngắt USART

Cho phép
Sự kiện gián đoạn Cờ sự kiện
Bit điều khiển

Truyền dữ liệu đăng ký trống TXE TXEIE

Cờ CTS CTS CTSIE

Truyền tải hoàn tất TC TCIE

Dữ liệu đã nhận sẵn sàng để đọc RXNE


RXNEIE
Đã phát hiện lỗi tràn Quặng

Đã phát hiện đường dây nhàn rỗi nhàn rỗi IDLEIE

Lỗi chẵn lẻ Thể dục PEIE

Phá cờ LBD LBDI

Cờ nhiễu, lỗi tràn và lỗi đóng khung trong giao tiếp đa bộ


NE hoặc ORE hoặc FE EIE(1)
đệm

1. Bit này chỉ được sử dụng khi việc nhận dữ liệu được thực hiện bởi DMA.

Các sự kiện ngắt USART được kết nối với cùng một vectơ ngắt (xem Hình 302).
• Trong quá trình truyền: Hoàn tất truyền, Xóa để gửi hoặc Truyền ngắt thanh ghi dữ liệu
trống.

• Trong khi nhận: Phát hiện dòng không hoạt động, Lỗi tràn, Thanh ghi nhận dữ liệu
không trống, Lỗi chẵn lẻ, phát hiện ngắt LIN, Cờ nhiễu (chỉ trong giao tiếp nhiều
bộ đệm) và Lỗi khung (chỉ trong giao tiếp nhiều bộ đệm).

Những sự kiện này tạo ra một ngắt nếu Bit điều khiển kích hoạt tương ứng được đặt.

816/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Máy phát thu không đồng bộ đồng bộ đa năng (USART)

Hình 302. Sơ đồ ánh xạ ngắt USART

TC
TCIE

TXE
TXEIE

CTS
CTSIE

USART
nhàn rỗi

IDLEIE ngắt

RXNEIE
Quặng

RXNEIE
RXNE

Thể dục

PEIE

LBD
LBDI

FE
ĐB
Quặng
EIE
DMAR

27.5 Cấu hình chế độ USART

Bảng 197. Cấu hình chế độ USART(1)

Chế độ USART USART1 USART2 USART3 UART4 UART5

Chế độ không đồng bộ X X X X X

Kiểm soát luồng phần cứng X X X NA NA

Truyền thông đa bộ đệm (DMA) X X X X NA

Truyền thông đa bộ xử lý X X X X X

Đồng bộ X X X NA NA

Thẻ thông minh X X X NA NA

Half-Duplex (Chế độ một dây) X X X X X

IrDA X X X X X
LIN X X X X X

1. X = được hỗ trợ; NA = không áp dụng được.

27.6 thanh ghi USART


Tham khảo Phần 2.2 trên trang 45 để biết danh sách các chữ viết tắt được sử dụng trong mô tả đăng ký.

Các thanh ghi ngoại vi có thể được truy cập bằng nửa từ (16 bit) hoặc từ (32 bit).

RM0008 Phiên bản 21 817/1136


827
Machine Translated by Google

Máy phát thu không đồng bộ đồng bộ đa năng (USART) RM0008

27.6.1 Thanh ghi trạng thái (USART_SR)


Độ lệch địa chỉ: 0x00
Giá trị đặt lại: 0x00C0

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CTS LBD TXE TC RXNE Quặng nhàn rỗi NE FE Thể dục

Kín đáo
rc_w0 rc_w0 r rc_w0 rc_w0 r r r r r

Bit 31:10 Dự trữ, bị phần cứng ép về 0.

Bit 9 CTS: Cờ CTS

Bit này được thiết lập bằng phần cứng khi đầu vào CTS chuyển đổi, nếu bit CTSE được thiết lập. Nó được xóa

bằng phần mềm (bằng cách ghi về 0). Một ngắt được tạo ra nếu CTSIE=1 trong thanh ghi USART_CR3.

0: Không có thay đổi nào xảy ra trên dòng trạng thái CTS

1: Đã xảy ra thay đổi trên dòng trạng thái CTS


Bit này không có sẵn cho UART4 & UART5.

Bit 8 LBD: Cờ phát hiện ngắt LIN

Bit này được thiết lập bằng phần cứng khi phát hiện thấy ngắt LIN. Nó được xóa bằng phần mềm (bằng cách

ghi về 0). Một ngắt được tạo ra nếu LBDIE = 1 trong thanh ghi USART_CR2.
0: Không phát hiện thấy lỗi LIN

1: Phát hiện lỗi LIN

Lưu ý: Một ngắt được tạo ra khi LBD=1 nếu LBDIE=1

Bit 7 TXE: Truyền thanh ghi dữ liệu trống

Bit này được thiết lập bằng phần cứng khi nội dung của thanh ghi TDR được chuyển vào thanh ghi dịch. Một

ngắt được tạo ra nếu bit TXEIE = 1 trong thanh ghi USART_CR1. Nó được xóa bằng cách ghi vào thanh ghi USART_DR.

0: Dữ liệu không được chuyển tới thanh ghi dịch

1: Dữ liệu được chuyển tới thanh ghi dịch)

Lưu ý: Bit này được sử dụng trong quá trình truyền đệm đơn.

Bit 6 TC: Quá trình truyền hoàn tất

Bit này được thiết lập bằng phần cứng nếu quá trình truyền khung chứa dữ liệu hoàn tất và nếu TXE được thiết

lập. Một ngắt được tạo ra nếu TCIE=1 trong thanh ghi USART_CR1. Nó được xóa bằng một trình tự phần mềm (đọc

từ thanh ghi USART_SR, sau đó ghi vào thanh ghi USART_DR). Bit TC cũng có thể bị xóa bằng cách viết

'0' vào nó. Trình tự xóa này chỉ được khuyến nghị cho giao tiếp nhiều bộ đệm.

0: Quá trình truyền chưa hoàn tất

1: Quá trình truyền hoàn tất

Bit 5 RXNE: Thanh ghi đọc dữ liệu không trống

Bit này được thiết lập bằng phần cứng khi nội dung của thanh ghi dịch chuyển RDR được chuyển sang thanh ghi

USART_DR. Một ngắt được tạo ra nếu RXNEIE=1 trong thanh ghi USART_CR1.

Nó được xóa bằng cách đọc vào thanh ghi USART_DR. Cờ RXNE cũng có thể bị xóa bằng cách viết số 0 vào nó.

Trình tự xóa này chỉ được khuyến nghị cho giao tiếp nhiều bộ đệm.

0: Không nhận được dữ liệu

1: Dữ liệu đã nhận đã sẵn sàng để đọc.

818/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Máy phát thu không đồng bộ đồng bộ đa năng (USART)

Bit 4 IDLE: Đã phát hiện dòng IDLE

Bit này được thiết lập bởi phần cứng khi phát hiện thấy Đường dây nhàn rỗi. Một ngắt được tạo ra nếu

IDLEIE=1 trong thanh ghi USART_CR1. Nó được xóa bằng một trình tự phần mềm (đọc vào thanh ghi USART_SR, sau

đó là đọc vào thanh ghi USART_DR).


0: Không phát hiện thấy đường dây nhàn rỗi

1: Đường dây nhàn rỗi được phát hiện

Lưu ý: Bit IDLE sẽ không được thiết lập lại cho đến khi bit RXNE được thiết lập lại (tức là một bit nhàn rỗi mới

dòng xảy ra).

Bit 3 ORE: Lỗi tràn

Bit này được thiết lập bằng phần cứng khi từ hiện đang được nhận trong thanh ghi dịch chuyển sẵn sàng

được chuyển vào thanh ghi RDR trong khi RXNE=1. Một ngắt được tạo ra nếu RXNEIE=1 trong thanh ghi

USART_CR1. Nó được xóa bằng một trình tự phần mềm (đọc vào thanh ghi USART_SR, sau đó là đọc vào thanh ghi

USART_DR).
0: Không có lỗi tràn

1: Phát hiện lỗi tràn

Lưu ý: Khi bit này được đặt, nội dung thanh ghi RDR sẽ không bị mất nhưng thanh ghi dịch chuyển sẽ bị mất.

bị ghi đè. Một ngắt được tạo ra trên cờ ORE trong trường hợp liên lạc với nhiều bộ đệm
nếu bit EIE được đặt.

Bit 2 NE: Cờ báo lỗi nhiễu

Bit này được thiết lập bởi phần cứng khi phát hiện thấy nhiễu trên khung nhận được. Nó được xóa bằng một

trình tự phần mềm (đọc vào thanh ghi USART_SR, sau đó là đọc vào thanh ghi USART_DR).

0: Không phát hiện thấy tiếng ồn

1: Phát hiện tiếng ồn

Lưu ý: Bit này không tạo ra ngắt vì nó xuất hiện cùng lúc với bit RXNE

chính nó tạo ra một ngắt gián đoạn được tạo ra trên cờ NE trong trường hợp giao tiếp Đa bộ đệm nếu bit
EIE được đặt.

Bit 1 FE: Lỗi đóng khung

Bit này được thiết lập bởi phần cứng khi phát hiện ra quá trình khử đồng bộ hóa, nhiễu quá mức hoặc ký tự bị

hỏng. Nó được xóa bằng một trình tự phần mềm (đọc vào thanh ghi USART_SR, sau đó là đọc vào thanh ghi

USART_DR).

0: Không phát hiện thấy lỗi khung

1: Phát hiện lỗi đóng khung hoặc ký tự ngắt

Lưu ý: Bit này không tạo ra ngắt vì nó xuất hiện cùng lúc với bit RXNE

mà chính nó tạo ra một ngắt. Nếu từ hiện đang được truyền gây ra cả lỗi khung và lỗi tràn, nó sẽ được

truyền và chỉ bit ORE được đặt.

Một ngắt được tạo ra trên cờ FE trong trường hợp giao tiếp Đa bộ đệm nếu bit EIE được đặt.

Bit 0 PE: Lỗi chẵn lẻ

Bit này được thiết lập bằng phần cứng khi xảy ra lỗi chẵn lẻ ở chế độ máy thu. Nó được xóa bằng một trình

tự phần mềm (đọc vào thanh ghi trạng thái, sau đó là đọc vào thanh ghi dữ liệu USART_DR). Phần mềm phải đợi cờ

RXNE được đặt trước khi xóa bit PE.

Một ngắt được tạo ra nếu PEIE = 1 trong thanh ghi USART_CR1.

0: Không có lỗi chẵn lẻ

1: Lỗi chẵn lẻ

RM0008 Phiên bản 21 819/1136

827
Machine Translated by Google

Máy phát thu không đồng bộ đồng bộ đa năng (USART) RM0008

27.6.2 Thanh ghi dữ liệu (USART_DR)

Độ lệch địa chỉ: 0x04

Giá trị đặt lại: Không xác định

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DR[8:0]
Kín đáo
rw rw rw rw rw rw rw rw rw

Bit 31:9 Dự trữ, bị phần cứng ép về 0.

Bit 8:0 DR[8:0]: Giá trị dữ liệu

Chứa ký tự dữ liệu đã nhận hoặc được truyền, tùy thuộc vào việc nó được đọc từ hay được ghi vào.

Thanh ghi dữ liệu thực hiện chức năng kép (đọc và ghi) vì nó bao gồm hai thanh ghi, một để truyền
(TDR) và một để nhận (RDR)
Thanh ghi TDR cung cấp giao diện song song giữa bus nội bộ và thanh ghi dịch chuyển đầu ra (xem
Hình 1).
Thanh ghi RDR cung cấp giao diện song song giữa thanh ghi dịch đầu vào và bus nội bộ.

Khi truyền với tính năng chẵn lẻ được bật (bit PCE được đặt thành 1 trong thanh ghi USART_CR1),
giá trị được ghi trong MSB (bit 7 hoặc bit 8 tùy thuộc vào độ dài dữ liệu) không có hiệu lực
vì nó được thay thế bằng tính chẵn lẻ.
Khi nhận với tính năng chẵn lẻ được bật, giá trị đọc trong bit MSB là bit chẵn lẻ nhận được.

27.6.3 Thanh ghi tốc độ truyền (USART_BRR)

Ghi chú: Bộ đếm baud ngừng đếm nếu các bit TE hoặc RE tương ứng bị vô hiệu hóa.

Độ lệch địa chỉ: 0x08

Giá trị đặt lại: 0x0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

DIV_Mantissa[11:0] DIV_Fraction[3:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:16 Dự trữ, bị phần cứng ép về 0.

Bits 15:4 DIV_Mantissa[11:0]: mantissa của USARTDIV

12 bit này xác định phần định trị của Bộ chia USART (USARTDIV)

Bit 3:0 DIV_Fraction[3:0]: phần của USARTDIV

4 bit này xác định phần của Bộ chia USART (USARTDIV)

820/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Máy phát thu không đồng bộ đồng bộ đa năng (USART)

27.6.4 Thanh ghi điều khiển 1 (USART_CR1)


Độ lệch địa chỉ: 0x0C

Giá trị đặt lại: 0x0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

UE M WAKE PCE PS PEIE TXEIE TCIE RXNEIE IDLEIE TE RE RWU SBK


Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:14 Dự trữ, bị phần cứng ép về 0.

Bit 13 UE: Kích hoạt USART

Khi bit này bị xóa, bộ chia tỷ lệ trước USART và đầu ra sẽ dừng lại và phần cuối của dòng điện

truyền byte để giảm mức tiêu thụ điện năng. bit này được thiết lập và xóa bằng phần mềm.

0: Bộ chia tỷ lệ trước USART và đầu ra bị tắt


1: Đã bật USART

Bit 12 M: Độ dài từ

Bit này xác định độ dài từ. Nó được thiết lập hoặc xóa bằng phần mềm.

0: 1 Bit bắt đầu, 8 bit dữ liệu, n Bit dừng

1: 1 Bit bắt đầu, 9 bit dữ liệu, n bit dừng

Lưu ý: Không được sửa đổi bit M trong quá trình truyền dữ liệu (cả truyền và nhận)

Bit 11 WAKE: Phương thức đánh thức

Bit này xác định phương thức đánh thức USART, nó được thiết lập hoặc xóa bằng phần mềm.
0: Đường dây nhàn rỗi

1: Dấu địa chỉ

Bit 10 PCE: Cho phép kiểm soát chẵn lẻ

Bit này chọn điều khiển chẵn lẻ phần cứng (tạo và phát hiện). Khi điều khiển tính chẵn lẻ được bật, tính

chẵn lẻ được chèn vào vị trí MSB (bit thứ 9 nếu M=1; bit thứ 8 nếu M=0) và tính chẵn lẻ được kiểm tra trên dữ

liệu nhận được. bit này được thiết lập và xóa bằng phần mềm.

Sau khi được thiết lập, PCE sẽ hoạt động sau byte hiện tại (trong quá trình thu và truyền).

0: Kiểm soát chẵn lẻ bị vô hiệu hóa

1: Đã bật kiểm soát chẵn lẻ

Bit 9 PS: Lựa chọn chẵn lẻ

Bit này chọn chẵn lẻ hoặc chẵn lẻ khi tạo/phát hiện chẵn lẻ được bật (bộ bit PCE). Nó được thiết lập và xóa

bằng phần mềm. Tính chẵn lẻ sẽ được chọn sau byte hiện tại.

0: Chẵn lẻ

1: Tính chẵn lẻ

Bit 8 PEIE: Cho phép ngắt PE

bit này được thiết lập và xóa bằng phần mềm.

0: Ngắt bị ức chế

1: Ngắt USART được tạo ra bất cứ khi nào PE=1 trong thanh ghi USART_SR

Bit 7 TXEIE: Cho phép ngắt TXE

bit này được thiết lập và xóa bằng phần mềm.

0: Ngắt bị ức chế

1: Ngắt USART được tạo bất cứ khi nào TXE=1 trong thanh ghi USART_SR

RM0008 Phiên bản 21 821/1136

827
Machine Translated by Google

Máy phát thu không đồng bộ đồng bộ đa năng (USART) RM0008

Bit 6 TCIE: Cho phép ngắt hoàn tất truyền

bit này được thiết lập và xóa bằng phần mềm.

0: Ngắt bị ức chế

1: Ngắt USART được tạo ra bất cứ khi nào TC=1 trong thanh ghi USART_SR

Bit 5 RXNEIE: Cho phép ngắt RXNE

bit này được thiết lập và xóa bằng phần mềm.

0: Ngắt bị ức chế

1: Ngắt USART được tạo bất cứ khi nào ORE=1 hoặc RXNE=1 trong thanh ghi USART_SR

Bit 4 IDLEIE: Cho phép ngắt IDLE

bit này được thiết lập và xóa bằng phần mềm.

0: Ngắt bị ức chế

1: Ngắt USART được tạo bất cứ khi nào IDLE=1 trong thanh ghi USART_SR

Bit 3 TE: Kích hoạt máy phát

Bit này cho phép máy phát. Nó được thiết lập và xóa bằng phần mềm.
0: Bộ phát bị tắt

1: Máy phát được bật

Lưu ý: 1: Trong quá trình truyền, xung “0” trên bit TE (“0” theo sau là “1”) sẽ gửi phần mở đầu (dòng nhàn rỗi)

sau từ hiện tại, ngoại trừ trong chế độ Smartcard.

2: Khi TE được thiết lập, có độ trễ 1 bit trước khi quá trình truyền bắt đầu.

Bit 2 RE: Kích hoạt bộ thu

Bit này cho phép người nhận. Nó được thiết lập và xóa bằng phần mềm.
0: Bộ thu bị vô hiệu hóa

1: Bộ thu được kích hoạt và bắt đầu tìm kiếm bit bắt đầu

Bit 1 RWU: Đánh thức bộ thu

Bit này xác định xem USART có ở chế độ tắt tiếng hay không. Nó được thiết lập và xóa bằng phần mềm và có thể bị

xóa bằng phần cứng khi nhận ra trình tự đánh thức.


0: Bộ thu ở chế độ hoạt động

1: Bộ thu ở chế độ tắt tiếng

Lưu ý: 1: Trước khi chọn chế độ Tắt tiếng (bằng cách đặt bit RWU), USART trước tiên phải nhận một byte dữ liệu,

nếu không nó không thể hoạt động ở chế độ Tắt tiếng khi đánh thức bằng phát hiện dòng Nhàn rỗi.

2: Trong cấu hình đánh thức Phát hiện dấu địa chỉ (bit WAKE=1), phần mềm không thể sửa đổi bit RWU trong

khi bit RXNE được đặt.

Bit 0 SBK: Gửi ngắt

Tập bit này được sử dụng để gửi các ký tự ngắt. Nó có thể được thiết lập và xóa bằng phần mềm. Nó phải được

thiết lập bằng phần mềm và sẽ được thiết lập lại bằng phần cứng trong thời gian nghỉ.
0: Không có ký tự ngắt được truyền đi

1: Ký tự ngắt sẽ được truyền đi

822/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Máy phát thu không đồng bộ đồng bộ đa năng (USART)

27.6.5 Thanh ghi điều khiển 2 (USART_CR2)


Độ lệch địa chỉ: 0x10

Giá trị đặt lại: 0x0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CLK
LANH DỪNG[1:0] CPOL CPHA LBCL Res. LBDIE LBDL Res. THÊM[3:0]
Res. VN

rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:15 Dự trữ, bị phần cứng ép về 0.

Bit 14 LINEN: Bật chế độ LIN

bit này được thiết lập và xóa bằng phần mềm.


0: Chế độ LIN bị tắt

1: Đã bật chế độ LIN

Chế độ LIN cho phép khả năng gửi các ngắt đồng bộ LIN (13 bit thấp) bằng cách sử dụng bit SBK trong thanh ghi

USART_CR1 và để phát hiện các ngắt đồng bộ LIN.

Bit 13:12 DỪNG: Bit DỪNG

Các bit này được sử dụng để lập trình các bit dừng.

00: 1 bit dừng

01: 0,5 Bit dừng

10: 2 bit dừng

11: 1.5 Bit dừng

Bit Stop 0,5 và bit Stop 1,5 không có sẵn cho UART4 & UART5.

Bit 11 CLKEN: Kích hoạt đồng hồ

Bit này cho phép người dùng kích hoạt chân CK.

0: Chân CK bị vô hiệu hóa

1: Đã bật chân CK
Bit này không có sẵn cho UART4 & UART5.

Bit 10 CPOL: Phân cực đồng hồ

Bit này cho phép người dùng chọn cực của đầu ra xung nhịp trên chân CK ở chế độ đồng bộ. Nó hoạt động cùng

với bit CPHA để tạo ra mối quan hệ đồng hồ/dữ liệu mong muốn 0: Giá trị thấp ổn định trên chân CK

bên ngoài cửa

sổ truyền.

1: Giá trị cao ổn định trên chân CK bên ngoài cửa sổ truyền dẫn.
Bit này không có sẵn cho UART4 & UART5.

Bit 9 CPHA: Pha đồng hồ

Bit này cho phép người dùng chọn pha đầu ra xung nhịp trên chân CK ở chế độ đồng bộ. Nó hoạt động cùng với

bit CPOL để tạo ra mối quan hệ đồng hồ/dữ liệu mong muốn (xem hình 290 đến 291)

0: Chuyển tiếp xung nhịp đầu tiên là cạnh thu thập dữ liệu đầu tiên.

1: Quá trình chuyển đổi đồng hồ thứ hai là cạnh thu thập dữ liệu đầu tiên.
Bit này không có sẵn cho UART4 & UART5.

RM0008 Phiên bản 21 823/1136

827
Machine Translated by Google

Máy phát thu không đồng bộ đồng bộ đa năng (USART) RM0008

Bit 8 LBCL: Xung đồng hồ bit cuối cùng

Bit này cho phép người dùng chọn xem xung đồng hồ liên quan đến bit dữ liệu cuối cùng được truyền (MSB) có

phải được xuất ra trên chân CK ở chế độ đồng bộ hay không.

0: Xung đồng hồ của bit dữ liệu cuối cùng không được xuất ra chân CK

1: Xung đồng hồ của bit dữ liệu cuối cùng được xuất ra chân CK

Bit cuối cùng là bit dữ liệu thứ 8 hoặc thứ 9 được truyền tùy thuộc vào định dạng 8 hoặc 9 bit được chọn bởi

bit M trong thanh ghi USART_CR1.


Bit này không có sẵn cho UART4 & UART5.

Bit 7 Dành riêng, bị phần cứng ép về 0.

Bit 6 LBDIE: Cho phép ngắt phát hiện ngắt LIN

Mặt nạ ngắt ngắt (phát hiện ngắt bằng cách sử dụng dấu phân cách ngắt).

0: Ngắt bị ức chế

1: Một ngắt được tạo ra bất cứ khi nào LBD=1 trong thanh ghi USART_SR

Bit 5 LBDL: độ dài phát hiện ngắt lin

Bit này dùng để lựa chọn giữa phát hiện ngắt 11 bit hoặc 10 bit.

Phát hiện ngắt 0: 10 bit

Phát hiện ngắt 1: 11 bit

Bit 4 Dành riêng, bị phần cứng ép về 0.

Bit 3:0 ADD[3:0]: Địa chỉ của nút USART

Trường bit này cung cấp địa chỉ của nút USART.

Điều này được sử dụng trong giao tiếp đa bộ xử lý trong chế độ tắt tiếng, để đánh thức bằng tính năng phát hiện
dấu địa chỉ.

Ghi chú: Không nên ghi 3 bit này (CPOL, CPHA, LBCL) khi bộ phát được bật.

27.6.6 Thanh ghi điều khiển 3 (USART_CR3)


Độ lệch địa chỉ: 0x14

Giá trị đặt lại: 0x0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

CTSIE CTSE RTSE DMAT DMAR SCEN NACK HDSEL IRLP IREN EIE
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw

Bit 31:11 Dự trữ, bị phần cứng ép về 0.

Bit 10 CTSIE: Cho phép ngắt CTS

0: Ngắt bị ức chế

1: Một ngắt được tạo ra bất cứ khi nào CTS=1 trong thanh ghi USART_SR
Bit này không có sẵn cho UART4 & UART5.

Bit 9 CTSE: Kích hoạt CTS

0: Kiểm soát luồng phần cứng CTS bị vô hiệu hóa

1: Đã bật chế độ CTS, dữ liệu chỉ được truyền khi đầu vào CTS được xác nhận (gắn với 0). Nếu đầu vào CTS được

xác nhận lại trong khi dữ liệu đang được truyền thì quá trình truyền sẽ hoàn tất trước khi dừng. Nếu dữ

liệu được ghi vào thanh ghi dữ liệu trong khi CTS được xác nhận lại thì việc truyền sẽ bị trì hoãn cho đến khi

CTS được xác nhận.


Bit này không có sẵn cho UART4 & UART5.

824/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Máy phát thu không đồng bộ đồng bộ đa năng (USART)

Bit 8 RTSE: Kích hoạt RTS

0: Kiểm soát luồng phần cứng RTS bị vô hiệu hóa

1: Đã bật ngắt RTS, dữ liệu chỉ được yêu cầu khi còn chỗ trống trong bộ đệm nhận.

Việc truyền dữ liệu dự kiến sẽ dừng sau khi ký tự hiện tại được truyền đi. Đầu ra RTS được xác nhận

(gắn với 0) khi có thể nhận được dữ liệu.


Bit này không có sẵn cho UART4 & UART5.

Bit 7 DMAT: Bộ phát kích hoạt DMA

Bit này được thiết lập/đặt lại bằng


phần mềm 1: Chế độ DMA được bật để truyền 0: Chế

độ DMA bị tắt để truyền Bit này không khả dụng cho

UART5.

Bit 6 DMAR: Bộ thu kích hoạt DMA

Bit này được thiết lập/đặt lại bằng

phần mềm 1: Chế độ DMA được bật để thu 0: Chế

độ DMA bị vô hiệu hóa để thu Bit này không khả


dụng cho UART5.

Bit 5 SCEN: Bật chế độ thẻ thông minh

Bit này được sử dụng để kích hoạt chế độ Smartcard.


0: Chế độ thẻ thông minh bị tắt 1:

Đã bật Chế độ thẻ thông minh Bit

này không khả dụng cho UART4 & UART5.

Bit 4 NACK: Kích hoạt NACK thẻ thông minh

0: Truyền NACK trong trường hợp lỗi chẵn lẻ bị vô hiệu hóa 1: Truyền

NACK trong khi có lỗi chẵn lẻ được bật Bit này không khả dụng
cho UART4 & UART5.

Bit 3 HDSEL: Lựa chọn bán song công

Lựa chọn chế độ bán song công một dây

0: Chế độ bán song công không được chọn

1: Chế độ bán song công được chọn

Bit 2 IRLP: IrDA công suất thấp

Bit này được sử dụng để lựa chọn giữa chế độ IrDA công suất bình thường và công suất thấp
0: Chế độ bình thường

1: Chế độ năng lượng thấp

Bit 1 IREN: Bật chế độ IrDA

bit này được thiết lập và xóa bằng phần mềm.


0: IrDA bị vô hiệu hóa

1: IrDA được kích hoạt

Bit 0 EIE: Cho phép ngắt lỗi Bit cho

phép ngắt lỗi được yêu cầu để cho phép tạo ngắt trong trường hợp có lỗi đóng khung, lỗi tràn hoặc lỗi

nhiễu (FE=1 hoặc ORE=1 hoặc NE=1 trong thanh ghi USART_SR) trong trường hợp Đa Giao tiếp đệm (DMAR=1 trong

thanh ghi USART_CR3).

0: Ngắt bị cấm 1: Ngắt

được tạo bất cứ khi nào DMAR=1 trong thanh ghi USART_CR3 và FE=1 hoặc ORE=1 hoặc NE=1 trong thanh ghi USART_SR.

RM0008 Phiên bản 21 825/1136

827
Machine Translated by Google

Máy phát thu không đồng bộ đồng bộ đa năng (USART) RM0008

27.6.7 Thời gian bảo vệ và thanh ghi bộ đếm trước (USART_GTPR)

Độ lệch địa chỉ: 0x18

Giá trị đặt lại: 0x0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

Kín đáo

15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

GT[7:0] PSC[7:0]

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:16 Dự trữ, bị phần cứng ép về 0.

Bit 15:8 GT[7:0]: Giá trị thời gian bảo vệ

Trường bit này cung cấp giá trị thời gian Guard theo số lượng đồng hồ baud.

Điều này được sử dụng trong chế độ Smartcard. Cờ Hoàn thành truyền được đặt sau giá trị thời gian bảo vệ
này.

Bit này không có sẵn cho UART4 & UART5.

Bit 7:0 PSC[7:0]: Giá trị bộ đếm trước

– Ở chế độ năng lượng thấp IrDA:

PSC[7:0] = Tốc độ truyền công suất thấp IrDA


Được sử dụng để lập trình bộ đếm gộp trước để chia đồng hồ hệ thống nhằm đạt được tần số công suất thấp:

Đồng hồ nguồn được chia cho giá trị được đưa ra trong thanh ghi (8 bit có ý nghĩa):
00000000: Dành riêng - không lập trình giá trị này
00000001: chia đồng hồ nguồn cho 1
00000010: chia đồng hồ nguồn cho 2
...

– Ở chế độ IrDA bình thường: PSC phải được đặt thành 00000001.

– Ở chế độ Thẻ thông minh:

PSC[4:0]: Giá trị bộ đếm trước


Được sử dụng để lập trình bộ đếm gộp trước nhằm chia đồng hồ hệ thống để cung cấp đồng hồ thẻ thông minh.

Giá trị được đưa ra trong thanh ghi (5 bit có nghĩa) được nhân với 2 để có hệ số chia của tần số xung nhịp
nguồn:
00000: Dành riêng - không lập trình giá trị này
00001: chia đồng hồ nguồn cho 2
00010: chia đồng hồ nguồn cho 4
00011: chia đồng hồ nguồn cho 6
...

Lưu ý: Bit [7:5] không có hiệu lực nếu sử dụng chế độ Thẻ thông minh.

Bit này không có sẵn cho UART4 & UART5.

826/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 Máy phát thu không đồng bộ đồng bộ đa năng (USART)

27.6.8 Bản đồ đăng ký USART

Bảng bên dưới cung cấp bản đồ thanh ghi USART và các giá trị đặt lại.

Bảng 198. Bản đồ đăng ký USART và giá trị đặt lại

Đăng ký bù đắp

1
5
ố8
s

7
6

0
3
9

2
4
USART_SR

hd
ểụT
0x00 Kín đáo

c
DBL
STC

EXT

hr
n

gnặuQ
ENXR

àỗ
ni
Đặt lại giá trị 0011000000

USART_DR DR[8:0]
0x04 Kín đáo

Đặt lại giá trị 000000000

DIV_Phân số
USART_BRR DIV_Mantissa[15:4] N
0x08 Kín đáo
[3:0]
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

USART_CR1

áb
T

ỐRN

0x0C Kín đáo


t
ECP

KBS
EIEP

UWR
EICT
EIEXT
CỨHT

EIELDI
EIENXR
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0
STO
USART_CR2 P THÊM[3:0]
0x10 Kín đáo

LCBL

LDBL
LOPC

AHPC

IDBL
HNAL

[1:0]
NEKLC

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0

íđ
K

íđ
K


o

o
USART_CR3
0x14 Kín đáo

EIE
PLRI

NERI
ESTR
ESTC

TAMD

KCAN
HNẢC
RAMD
EISTC

LESDH
Đặt lại giá trị 00000000000

USART_GTPR GT[7:0] PSC[7:0]


0x18 Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Tham khảo Bảng 3 trên trang 50 để biết địa chỉ biên của thanh ghi.

RM0008 Phiên bản 21 827/1136

827
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

28 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Các thiết bị mật độ thấp là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 16 đến 32 Kbyte.

Các thiết bị có mật độ trung bình là bộ vi điều khiển STM32F101xx, STM32F102xx và


STM32F103xx trong đó mật độ bộ nhớ Flash nằm trong khoảng từ 64 đến 128 Kbyte.

Các thiết bị mật độ cao là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ bộ nhớ
Flash nằm trong khoảng từ 256 đến 512 Kbyte.

Các thiết bị có mật độ XL là bộ vi điều khiển STM32F101xx và STM32F103xx trong đó mật độ


bộ nhớ Flash nằm trong khoảng từ 768 Kbyte đến 1 Mbyte.

Các thiết bị đường kết nối là bộ vi điều khiển STM32F105xx và STM32F107xx.

Phần này chỉ áp dụng cho các thiết bị đường kết nối STM32F105xx và STM32F107xx.

28.1 Giới thiệu vềOTG_FS


Các phần Bản quyền (c) 2004, 2005 Synopsys, Inc. Mọi quyền được bảo lưu. Được sử dụng với sự cho phép.

Phần này trình bày kiến trúc và mô hình lập trình của bộ điều khiểnOTG_FS.

Các từ viết tắt sau đây được sử dụng trong suốt phần này:

FS Hết tốc độ

LS Tốc độ thấp

MAC Bộ điều khiển truy cập phương tiện

otg Đang di chuyển

PFC Bộ điều khiển gói FIFO

vật lý Lớp vật lý

USB Bus nối tiếp đa năng

UTMI Giao diện macrocell thu phát USB 2.0 (UTMI)

Các tài liệu tham khảo được thực hiện sau đây:

• Bổ sung USB khi đang di chuyển, Bản sửa đổi 1.3


• Thông số kỹ thuật phiên bản Universal Serial Bus 2.0

OTG_FS là bộ điều khiển thiết bị hai vai trò (DRD) hỗ trợ cả chức năng của thiết bị và máy
chủ, đồng thời hoàn toàn tuân thủ Phần bổ sung khi di chuyển cho Thông số kỹ thuật
USB 2.0. Nó cũng có thể được cấu hình làm bộ điều khiển chỉ dành cho máy chủ hoặc chỉ
dành cho thiết bị, hoàn toàn tuân thủ Thông số kỹ thuật USB 2.0. Ở chế độ máy chủ,OTG_FS hỗ
trợ truyền tốc độ tối đa (FS, 12 Mbits/s) và tốc độ thấp (LS, 1,5 Mbits/s) trong khi ở chế độ
thiết bị, nó chỉ hỗ trợ tốc độ tối đa (FS, 12 Mbits/s) chuyển khoản. OTG_FS hỗ trợ cả HNP và SRP.
Thiết bị bên ngoài duy nhất cần có là bơm sạc cho VBUS ở chế độ máy chủ.

828/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

28.2 Các tính năng chính củaOTG_FS

Các tính năng chính có thể được chia thành ba loại: tính năng chung, chế độ máy chủ và
chế độ thiết bị.

28.2.1 Đặc điểm chung

Các tính năng chung của giao diệnOTG_FS như sau:


• Nó được chứng nhận USB-IF theo Thông số kỹ thuật Bus nối tiếp vạn năng Rev 2.0
• Nó bao gồm hỗ trợ đầy đủ (PHY) cho giao thức On-The-Go (OTG) tùy chọn được nêu chi tiết
trong thông số kỹ thuật Bổ sung On-The-Go Rev 1.3

– Hỗ trợ tích hợp nhận dạng thiết bị AB (dòng ID)

– Hỗ trợ tích hợp cho Giao thức đàm phán máy chủ (HNP) và Giao thức yêu cầu phiên
(SRP)

– Cho phép máy chủ tắt VBUS để tiết kiệm pin trong ứng dụngOTG

– Nó hỗ trợ giám sát các mức VBUS bằng cách sử dụng các bộ so sánh nội bộ.
– Nó hỗ trợ chuyển đổi vai trò động của máy chủ-ngoại vi
• Nó có thể được cấu hình bằng phần mềm để hoạt động như:

– Thiết bị ngoại vi USB FS có khả năng SRP (thiết bị B)

– Máy chủ USB FS/LS có khả năng SRP (thiết bị A)

– Thiết bị vai trò kép tốc độ tối đa USB khi đang di chuyển
• Nó hỗ trợ FS SOF và LS Keep-alives với

– Kết nối PAD xung SOF (OTG_FS_SOF)

– Kết nối bên trong xung SOF với bộ đếm thời gian2 (TIM2)

– Thời gian đóng khung có thể cấu hình

– Có thể cấu hình ngắt kết thúc khung


• Nó bao gồm các tính năng tiết kiệm năng lượng như dừng hệ thống trong khi tạm dừng
USB, tắt các miền đồng hồ bên trong lõi kỹ thuật số, quản lý năng lượng PHY và DFIFO
• Nó có RAM chuyên dụng 1,25 Kbyte với điều khiển FIFO nâng cao:

– Có thể cấu hình phân vùng không gian RAM thành các FIFO khác nhau để sử dụng RAM
linh hoạt và hiệu quả

– Mỗi FIFO có thể chứa nhiều gói tin

– Cấp phát bộ nhớ động

– Kích thước FIFO có thể định cấu hình không phải là lũy thừa của 2 để cho phép sử dụng liền kề
vị trí bộ nhớ
• Nó đảm bảo băng thông USB tối đa cho tối đa một khung hình (1ms) mà không cần sự can
thiệp của hệ thống

RM0008 Phiên bản 21 829/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

28.2.2 Các tính năng của chế độ máy chủ

Các tính năng và yêu cầu chính của giao diệnOTG_FS trong chế độ máy chủ như sau:

Bơm sạc ngoài để tạo điện áp VBUS .

• Lên đến 8 kênh máy chủ (ống): mỗi kênh có thể được cấu hình lại một cách linh hoạt để phân bổ
bất kỳ loại truyền USB nào.
• Bộ lập lịch phần cứng tích hợp:

– Tối đa 8 yêu cầu ngắt cộng với yêu cầu truyền đẳng thời trong phần cứng định kỳ
xếp hàng

– Tối đa 8 yêu cầu kiểm soát cộng với chuyển hàng loạt trong hàng đợi phần cứng không định kỳ

• Quản lý một RX FIFO được chia sẻ, một FIFO TX định kỳ và một FIFO TX không định kỳ để sử
dụng hiệu quả RAM dữ liệu USB.

28.2.3 Tính năng chế độ ngoại vi

Các tính năng chính của giao diệnOTG_FS ở chế độ ngoại vi như sau:
• 1 điểm cuối điều khiển hai chiều0

• 3 điểm cuối IN (EP) có thể định cấu hình để hỗ trợ chuyển số lượng lớn, ngắt hoặc đồng bộ

• 3 điểm cuối OUT có thể định cấu hình để hỗ trợ chuyển số lượng lớn, ngắt hoặc đồng bộ

• Quản lý Rx FIFO được chia sẻ và Tx-OUT FIFO để sử dụng USB hiệu quả
RAM dữ liệu

• Quản lý tối đa 4 FIFO Tx-IN chuyên dụng (một cho mỗi IN EP hoạt động) để giảm tải cho ứng
dụng

• Hỗ trợ tính năng ngắt kết nối mềm.

830/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

28.3 Mô tả chức năngOTG_FS

Hình 303. Sơ đồ khối tốc độ đầy đủ củaOTG

Lõi Cortex®

OOT_FS_DP
Quyền lực
USB2.0 otg OOT_FS_DM

FS-OTG UTMIFS FS
cái đồng hồ
cốt lõi vật lý OOT_FS_ID
bộ điều khiển
treo USB

Đồng hồ USB ở 48 MHz


Miền đồng hồ hệ thống
Miền đồng hồ
OOT_FS_VBUS
USB

Bus nối tiếp đa năng


ýA
tM eR
u X
b

OOT_FS_SOF

1,25 Kbyte
dữ liệu USB
FIFO

MS19928V4

28.3.1 Chân cắm OOT

Bảng 199. Các chân vào/ra của hệ thống OG_FS

Tên tín hiệu Loại tín hiệu Sự miêu tả

OOT_FS_DP Đầu vào/đầu ra kỹ thuật số USB dòng D+

OOT_FS_DM Đầu vào/đầu ra kỹ thuật số USB O-line D-line

OOT_FS_ID Đầu vào kỹ thuật số ID USB USB

OOT_FS_VBUS Đầu vào analog USB-OTG VBUS

OOT_FS_SOF Đầu ra kỹ thuật số Khung bắt đầu của USB OG (khả năng hiển thị)

28.3.2 Lõi tốc độ đầy đủ 28.3.2

USBOTG FS nhận xung nhịp 48 MHz ±0,25% từ bộ điều khiển đặt lại và đồng hồ (RCC), thông qua một thạch

anh bên ngoài. Đồng hồ USB được sử dụng để điều khiển miền 48 MHz ở tốc độ tối đa (12 Mbit/s) và phải
được bật trước khi định cấu hình lõiOTG FS.

CPU đọc và ghi từ/đến các thanh ghi lõi của FS của FS thông qua bus ngoại vi AHB. Nó được thông báo về
các sự kiện USB thông qua dòng ngắt USB-OTG duy nhất được mô tả trong Phần 28.15: NgắtOTG_FS.

RM0008 Phiên bản 21 831/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

CPU gửi dữ liệu qua USB bằng cách ghi các từ 32-bit vào các vị trí chuyên biệt dành riêng cho mục
đích OG_FS (các thanh ghi đẩy). Sau đó, dữ liệu sẽ được tự động lưu trữ vào các FIFO dữ liệu
Tx được định cấu hình trong RAM dữ liệu USB. Có một thanh ghi đẩy Tx-FIFO cho mỗi điểm
cuối (chế độ ngoại vi) hoặc kênh ngoài (chế độ máy chủ).

CPU nhận dữ liệu từ USB bằng cách đọc các từ 32-bit từ các địa chỉ chuyên dụng (các thanh ghi
pop). Sau đó, dữ liệu sẽ được tự động truy xuất từ Rx-FIFO được chia sẻ được định cấu hình
trong RAM dữ liệu USB 1,25 KB. Có một thanh ghi pop Rx-FIFO cho mỗi điểm cuối hoặc trong kênh.

Lớp giao thức USB được điều khiển bởi công cụ giao diện nối tiếp (SIE) và được tuần tự hóa
qua USB bằng mô-đun thu phát tốc độ đầy đủ/thấp trong lớp vật lý trên chip (PHY).

28.3.3 PHY tốc độ đầy đủ

PHY tốc độ đầy đủ được nhúng được điều khiển bởi lõi LTE FS và truyền tín hiệu dữ liệu và
điều khiển USB thông qua tập hợp con tốc độ đầy đủ của UTMI+ Bus (UTMIFS). Nó cung cấp sự hỗ
trợ vật lý cho kết nối USB.
PHY tốc độ đầy đủ bao gồm các thành phần sau:

• Mô-đun thu phát FS/LS được sử dụng bởi cả máy chủ và thiết bị. Nó trực tiếp điều khiển truyền động
và tiếp nhận trên các đường USB một đầu.
• Điện trở kéo ID tích hợp được sử dụng để lấy mẫu dòng ID để nhận dạng thiết bị A/B.

• Điện trở kéo lên và kéo xuống tích hợp DP/DM được điều khiển bởi lõiOTG_FS
tùy thuộc vào vai trò hiện tại của thiết bị. Là một thiết bị ngoại vi, nó cho phép điện
trở kéo lên DP phát tín hiệu cho các kết nối ngoại vi tốc độ tối đa ngay khi VBUS được cảm
nhận ở mức hợp lệ (phiên B hợp lệ). Ở chế độ máy chủ, điện trở kéo xuống được bật trên
cả DP/DM. Các điện trở kéo lên và kéo xuống được chuyển đổi linh hoạt khi vai trò của
thiết bị được thay đổi thông qua giao thức đàm phán máy chủ (HNP).
• Mạch ECN điện trở kéo lên/kéo xuống. Bộ kéo lên DP bao gồm 2 điện trở được điều khiển
riêng biệt vớiOTG_FS theo Thông báo Thay đổi Kỹ thuật điện trở áp dụng cho USB Rev2.0.
Việc cắt giảm cường độ kéo lên DP cho phép loại bỏ nhiễu và chất lượng tín hiệu Tx/Rx
tốt hơn.

• Bộ so sánh cảm biến VBUS có độ trễ được sử dụng để phát hiện VBUS Hợp lệ, Phiên AB
Ngưỡng điện áp hợp lệ và cuối phiên. Chúng được sử dụng để điều khiển giao thức yêu cầu phiên
(SRP), phát hiện các điều kiện khởi động và kết thúc phiên hợp lệ, đồng thời liên tục giám
sát việc cung cấp VBUS trong quá trình hoạt động của USB.

• Mạch phương pháp xung VBUS dùng để sạc/xả VBUS qua điện trở trong SRP (ổ yếu).

832/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

28.4 Thiết bị vai trò kép otg (DRD)

Hình 304. Kết nối thiết bị OOT AB

VDD
5 V đến VDD
Bộ điều chỉnh điện áp

VDD
STM32 MCU VN
STMPS2141STR
GPIO
giới hạn hiện tại Nguồn điện 5 V

Quá dòng phân phối điện (2)


GPIO+IRQ công tắc

VBUS
PA9
DM
PA11
OSC_IN DP
PA12

uầĐ
PA10
NHẬN DẠNG

OSC_OUT
VSS

MS19904V4

1. Chỉ cần bộ ổn áp ngoài khi build thiết bị hỗ trợ VBUS

2. STMPS2141STR chỉ cần thiết nếu ứng dụng phải hỗ trợ thiết bị hỗ trợ VBUS . Có thể sử dụng công tắc
nguồn cơ bản nếu có sẵn 5 V trên bảng ứng dụng.

28.4.1 Phát hiện dòng ID

Vai trò máy chủ hoặc thiết bị ngoại vi (mặc định) được đảm nhận tùy thuộc vào chân
đầu vào ID (OTG_FS_ID). Trạng thái dòng ID được xác định khi cắm USB, tùy thuộc vào phía nào
của cáp USB được kết nối với ổ cắm micro-AB.
• Nếu mặt B của cáp USB được kết nối bằng dây ID nổi, điện trở kéo lên tích hợp sẽ phát
hiện mức ID cao và vai trò Ngoại vi mặc định sẽ được xác nhận. Trong cấu hình
này,OTG_FS tuân thủ FSM tiêu chuẩn được mô tả trong phần 6.8.2: Thiết bị B di động của
phần bổ sung Thông số kỹ thuật On-The-Go Rev1.3 cho USB2.0.

• Nếu đầu A của cáp USB được kết nối với ID nối đất, thìOTG_FS sẽ phát ra ngắt thay đổi
trạng thái dòng ID (bit CIDSCHG trongOTG_FS_GINTSTS) để khởi tạo phần mềm máy chủ và tự
động chuyển sang vai trò máy chủ. Trong cấu hình này,OTG_FS tuân thủ FSM tiêu
chuẩn được mô tả trong phần 6.8.1: Khi đang di chuyển Một thiết bị có phần bổ sung
Thông số kỹ thuật khi di chuyển Rev1.3 cho USB2.0.

28.4.2 Thiết bị vai trò kép HNP

Bit có khả năng HNP trong thanh ghi cấu hình USB toàn cầu (bit HNPCAP trongOTG_FS_GUSBCFG)
cho phép lõiOTG_FS tự động thay đổi vai trò của nó từ máy chủ A sang thiết bị ngoại vi A
và ngược lại, hoặc từ thiết bị ngoại vi B sang máy chủ B và ngược lại. ngược lại theo
giao thức đàm phán máy chủ (HNP). Trạng thái thiết bị hiện tại có thể được đọc bằng các
giá trị kết hợp của bit Trạng thái ID kết nối trong thanh ghi trạng thái và điều khiểnOTG
toàn cầu (bit CIDSTS trongOTG_FS_GOTGCTL) và chế độ hoạt động hiện tại của bit trong thanh
ghi trạng thái và ngắt toàn cục (bit CMOD trongOTG_FS_GINTSTS ).

Mô hình chương trình HNP được mô tả chi tiết ở Mục 28.17: Mô hình lập trìnhOTG_FS.

RM0008 Phiên bản 21 833/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

28.4.3 Thiết bị vai trò kép SRP

Bit có khả năng SRP trong thanh ghi cấu hình USB chung (bit SRPCAP trongOTG_FS_GUSBCFG)
cho phép lõiOTG_FS tắt việc tạo VBUS cho thiết bị A để tiết kiệm năng lượng. Lưu ý máy A luôn
đảm nhiệm việc điều khiển VBUS
bất kể vai trò máy chủ hay thiết bị ngoại vi củaOTG_FS.

mô hình chương trình thiết bị A/B SRP được mô tả chi tiết trong Phần 28.17: Mô hình lập
trìnhOTG_FS.

28.5 thiết bị ngoại vi USB

Phần này cung cấp mô tả chức năng củaOTG_FS ở chế độ ngoại vi USB.
OTG_FS hoạt động như một thiết bị ngoại vi USB trong các trường hợp sau:

• Thiết bị ngoại vi B-OTG

– Trạng thái mặc định của thiết bị B-OTG nếu cắm cáp USB bên B

• Thiết bị ngoại vi A-OTG

– Trạng thái thiết bị A-OTG sau khi HNP chuyển đổi thành chức năng ngoại vi của OG_FS
• Thiết bị B

– Nếu có dòng ID, hoạt động và được kết nối với mặt B của cáp USB, đồng thời bit có khả năng
HNP trong thanh ghi Cấu hình USB Toàn cầu (bit HNPCAP trongOTG_FS_GUSBCFG) bị xóa (xem On-
The-Go Rev1. 3 mệnh 6.8.3).
• Chỉ thiết bị ngoại vi (xem Hình 305: Kết nối chỉ dành cho thiết bị ngoại vi USB)

– Bit chế độ thiết bị bắt buộc trong thanh ghi cấu hình USB toàn cầu (FDMOD
trongOTG_FS_GUSBCFG) được đặt thành 1, buộc lõiOTG_FS chỉ hoạt động như một thiết
bị ngoại vi USB (xem On-The-Go Rev1.3 par. 6.8.3) . Trong trường hợp này, dòng ID bị
bỏ qua ngay cả khi có trên đầu nối USB.

Ghi chú: Để xây dựng triển khai thiết bị chạy bằng bus trong trường hợp cấu hình chỉ dành cho thiết bị B
hoặc thiết bị ngoại vi, phải thêm bộ điều chỉnh bên ngoài để tạo ra nguồn cung cấp chip VDD từ
VBUS.

Hình 305. Kết nối chỉ dành cho thiết bị ngoại vi USB

VDD
5V đến VDD
Bộ điều chỉnh điện áp

STM32 MCU

VBUS
PA9
DM
PA11
OSC_IN DP
uầĐ

PA12
VSS
OSC_OUT

MS19905V4

1. Sử dụng bộ điều chỉnh để tạo ra một thiết bị chạy bằng bus.

834/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

28.5.1 Thiết bị ngoại vi có khả năng SRP

Bit có khả năng SRP trong thanh ghi cấu hình USB toàn cầu (bit SRPCAP trongOTG_FS_GUSBCFG)
cho phépOTG_FS hỗ trợ giao thức yêu cầu phiên (SRP).
Bằng cách này, nó cho phép thiết bị A từ xa tiết kiệm năng lượng bằng cách tắt VBUS trong khi phiên USB
bị treo.

Mô hình chương trình chế độ ngoại vi SRP được mô tả chi tiết trong phần giao thức yêu cầu phiên
thiết bị B.

28.5.2 Trạng thái ngoại vi

Trạng thái hỗ trợ

Đầu vào VBUS phát hiện điện áp hợp lệ của Phiên B mà qua đó thiết bị ngoại vi USB được phép chuyển sang
trạng thái được cấp nguồn (xem USB2.0 par9.1). Sau đó, Otto_FS tự động kết nối điện trở kéo lên DP để báo
hiệu kết nối thiết bị tốc độ tối đa với máy chủ và tạo ra ngắt yêu cầu phiên (bit SRQINT trongOTG_FS_GINTSTS)
để thông báo trạng thái được cấp nguồn.

Đầu vào VBUS cũng đảm bảo rằng các mức VBUS hợp lệ được máy chủ cung cấp trong quá trình hoạt động
của USB. Nếu phát hiện thấy sự sụt giảm VBUS dưới mức hợp lệ của phiên B (ví dụ: do mất điện hoặc nếu
cổng máy chủ đã bị tắt), thìOTG_FS sẽ tự động ngắt kết nối và phát hiện thấy kết thúc phiên (bit
SEDET trongOTG_FS_GOTGINT) bị gián đoạn. được tạo để thông báo rằngOTG_FS đã
thoát khỏi trạng thái được cấp nguồn.

Ở trạng thái được cấp nguồn,OTG_FS dự kiến sẽ nhận được một số tín hiệu đặt lại từ máy chủ.
Không thể thực hiện thao tác USB nào khác. Khi nhận được tín hiệu đặt lại, ngắt được phát hiện đặt lại
(USBRST trongOTG_FS_GINTSTS) được tạo. Khi tín hiệu đặt lại hoàn tất, ngắt thực hiện liệt kê (bit
ENUMDNE trongOTG_FS_GINTSTS) được tạo và OG_FS chuyển sang trạng thái Mặc định.

Ngắt kết nối mềm

Trạng thái được cấp nguồn có thể được thoát bằng phần mềm với tính năng ngắt kết nối mềm. Điện trở kéo
lên DP bị loại bỏ bằng cách đặt bit ngắt kết nối mềm trong thanh ghi điều khiển thiết bị (bit SDIS
trongOTG_FS_DCTL), gây ra gián đoạn phát hiện ngắt kết nối thiết bị ở phía máy chủ mặc dù cáp USB
chưa thực sự được tháo ra khỏi cổng máy chủ.

Trạng thái mặc định

Ở trạng thái Mặc định,OTG_FS mong nhận được lệnh SET_ADDRESS từ máy chủ. Không thể thực hiện thao tác
USB nào khác. Khi lệnh SET_ADDRESS hợp lệ được giải mã trên USB, ứng dụng sẽ ghi số tương ứng vào
trường địa chỉ thiết bị trong thanh ghi cấu hình thiết bị (bit DAD trongOTG_FS_DCFG). Sau đó,OTG_FS
chuyển sang trạng thái địa chỉ và sẵn sàng trả lời các giao dịch của máy chủ tại địa chỉ USB đã
được định cấu hình.

Trạng thái treo

Thiết bị ngoại viOTG_FS liên tục theo dõi hoạt động của USB. Sau khi đếm 3 mili giây USB không hoạt
động, ngắt tạm dừng sớm (bit ESUSP trongOTG_FS_GINTSTS) được phát ra và được xác nhận sau 3 mili
giây bằng ngắt tạm dừng (bit USBSUSP trongOTG_FS_GINTSTS), nếu thích hợp. Sau đó, bit tạm
dừng thiết bị sẽ tự động được đặt trong thanh ghi trạng thái thiết bị (bit SUSPSTS trongOTG_FS_DSTS)
vàOTG_FS chuyển sang trạng thái treo.

RM0008 Phiên bản 21 835/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Trạng thái treo có thể được thoát tùy ý bởi chính thiết bị. Trong trường hợp này, ứng dụng
sẽ thiết lập bit báo hiệu đánh thức từ xa trong thanh ghi điều khiển thiết bị (bit RWUSIG
trongOTG_FS_DCTL) và xóa nó sau 1 đến 15 ms.

Khi phát hiện tín hiệu tiếp tục từ máy chủ, ngắt tiếp tục (bit WKUPINT trongOTG_FS_GINTSTS) được tạo
và bit tạm dừng thiết bị sẽ tự động bị xóa.

28.5.3 Điểm cuối ngoại vi

LõiOTG_FS khởi tạo các điểm cuối USB sau:

• Điểm cuối điều khiển 0:

– Hai chiều và chỉ xử lý các thông báo điều khiển

– Bộ sổ đăng ký riêng biệt để xử lý các giao dịch vào và ra

– Kiểm soát phù hợp (OTG_FS_DIEPCTL0/OTG_FS_DOEPCTL0), chuyển


các thanh ghi cấu hình (OTG_FS_DIEPTSIZ0/OTG_FS_DIEPTSIZ0) và ngắt trạng thái
(OTG_FS_DIEPINTx/)OTG_FS_DOEPINT0). Tập hợp các bit có sẵn bên trong thanh ghi kích thước
điều khiển và truyền tải hơi khác so với tập hợp các điểm cuối khác

• Điểm cuối 3 IN

– Mỗi trong số chúng có thể được cấu hình để hỗ trợ chế độ đẳng thời, số lượng lớn hoặc ngắt
kiểu chuyển giao

– Mỗi người trong số họ có quyền kiểm soát thích hợp (OTG_FS_DIEPCTLx), cấu hình truyền
(OTG_FS_DIEPTSIZx) và các thanh ghi ngắt trạng thái (OTG_FS_DIEPINTx)

– Thanh ghi mặt nạ ngắt chung của điểm cuối Thiết bị IN (OTG_FS_DIEPMSK) có sẵn để bật/tắt một loại
nguồn ngắt điểm cuối duy nhất trên tất cả các
Điểm cuối IN (bao gồm EP0)

– Hỗ trợ ngắt truyền IN đẳng thời không hoàn chỉnh (bit IISOIXFR trong
OTG_FS_GINTSTS), được xác nhận khi có ít nhất một điểm cuối IN đẳng thời mà quá trình truyền
không được hoàn thành trong khung hiện tại. Ngắt này được xác nhận cùng với sự kết
thúc của ngắt khung định kỳ (OTG_FS_GINTSTS/EOPF).

• 3 điểm cuối OUT

– Mỗi trong số chúng có thể được cấu hình để hỗ trợ chế độ đẳng thời, số lượng lớn hoặc ngắt
kiểu chuyển giao

– Mỗi người trong số họ có một thanh ghi điều khiển thích hợp (OTG_FS_DOEPCTLx), cấu hình truyền
(OTG_FS_DOEPTSIZx) và thanh ghi ngắt trạng thái (OTG_FS_DOEPINTx)

– Thanh ghi mặt nạ ngắt chung của điểm cuối thiết bị đầu ra (OTG_FS_DOEPMSK) có sẵn để bật/tắt
một loại nguồn ngắt điểm cuối duy nhất trên tất cả các điểm cuối OUT (bao gồm EP0)

– Hỗ trợ ngắt truyền OUT đẳng thời không hoàn chỉnh (bit INCOMPISOOUT trongOTG_FS_GINTSTS), được
xác nhận khi có ít nhất một điểm cuối OUT đẳng thời mà tại đó quá trình truyền không
được hoàn thành trong khung hiện tại. Ngắt này được xác nhận cùng với sự kết thúc của ngắt
khung định kỳ (OTG_FS_GINTSTS/EOPF).

836/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Kiểm soát điểm cuối

• Các điều khiển điểm cuối sau đây có sẵn cho ứng dụng thông qua thanh ghi điều khiển IN/OUT điểm
cuối-x của thiết bị (DIEPCTLx/DOEPCTLx):

– Bật/tắt điểm cuối

– Kích hoạt điểm cuối trong cấu hình hiện tại

– Kiểu truyền chương trình USB (đẳng đồng bộ, số lượng lớn, ngắt)

– Kích thước gói hỗ trợ chương trình

– Số Tx-FIFO của chương trình được liên kết với điểm cuối IN

– Lập trình PID dữ liệu0/data1 dự kiến hoặc được truyền (chỉ hàng loạt/ngắt)

– Lập trình khung chẵn/lẻ trong đó giao dịch được nhận hoặc truyền (chỉ đẳng thời
gian)

– Tùy chọn lập trình bit NAK để luôn xác nhận tiêu cực máy chủ bất kể trạng thái FIFO

– Tùy chọn lập trình bit STALL để luôn dừng mã thông báo máy chủ ở điểm cuối đó

– Tùy chọn lập trình chế độ SNOOP cho điểm cuối OUT không kiểm tra trường CRC của dữ liệu
nhận được

Chuyển điểm cuối

Các thanh ghi kích thước truyền điểm cuối-x của thiết bị (DIEPTSIZx/DOEPTSIZx) cho phép ứng dụng lập
trình các tham số kích thước truyền và đọc trạng thái truyền. Lập trình phải được thực hiện trước
khi thiết lập bit kích hoạt điểm cuối trong thanh ghi điều khiển điểm cuối. Sau khi bật điểm
cuối, các trường này ở chế độ chỉ đọc khi lõi FS của hệ thống cập nhật chúng với trạng thái truyền
hiện tại.

Các tham số truyền sau đây có thể được lập trình:

• Kích thước truyền theo byte

• Số gói cấu thành kích thước truyền tổng thể

Trạng thái điểm cuối/ngắt

Các thanh ghi ngắt điểm cuối-x của thiết bị (DIEPINTx/DOPEPINTx) cho biết trạng thái của điểm cuối
đối với các sự kiện liên quan đến USB và AHB. Ứng dụng phải đọc các thanh ghi này khi bit ngắt
điểm cuối OUT hoặc bit ngắt điểm cuối IN trong thanh ghi ngắt lõi (bit OEPINT trong
FATOT_FS_GINTSTS hoặc bit IEPINT trongOTG_FS_GINTSTS, tương ứng) được thiết lập. Trước khi ứng
dụng có thể đọc các thanh ghi này, trước tiên ứng dụng phải đọc tất cả các thanh ghi ngắt điểm
cuối (OTG_FS_DAINT) của thiết bị để có được số điểm cuối chính xác cho thanh ghi ngắt điểm cuối-x
của thiết bị . Ứng dụng phải xóa bit thích hợp trong thanh ghi này để xóa các bit tương ứng trong
thanh ghi DAINT và GINTSTS

RM0008 Phiên bản 21 837/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Lõi ngoại vi cung cấp các kiểm tra trạng thái và tạo ngắt sau đây:

• Ngắt truyền đã hoàn thành, cho biết rằng quá trình truyền dữ liệu đã hoàn tất trên cả hai mặt ứng dụng
(AHB) và USB

• Giai đoạn thiết lập đã được thực hiện (chỉ kiểm soát)

• FIFO truyền liên kết trống một nửa hoặc hoàn toàn trống (ở điểm cuối)

• Xác nhận NAK đã được truyền đến máy chủ (chỉ ở chế độ isochronous)

Mã thông báo IN đã nhận được khi Tx-FIFO trống (chỉ nhập hàng loạt/ngắt)

• Đã nhận được mã thông báo khi điểm cuối chưa được bật

• Tình trạng lỗi bập bẹ đã được phát hiện

• Việc vô hiệu hóa điểm cuối bằng ứng dụng có hiệu quả

• Điểm cuối NAK theo ứng dụng có hiệu quả (chỉ trong isochronous)

• Đã nhận được hơn 3 gói thiết lập quay lại (chỉ kiểm soát)

• Đã phát hiện tình trạng hết thời gian chờ (chỉ kiểm soát)

• Gói tin ra ngoài đồng bộ đã bị loại bỏ mà không tạo ra ngắt

Máy chủ USB 28.6

Phần này cung cấp mô tả chức năng củaOTG_FS ở chế độ máy chủ USB. OTG_FS hoạt động như một máy chủ lưu
trữ USB trong các trường hợp sau:

• Máy chủ A-OTG

– Trạng thái mặc định của thiết bị A-OTG khi cắm cáp USB vào bên A

• Máy chủ B-OTG

– Thiết bị B-OTG sau khi HNP chuyển sang vai trò chủ

• Thiết bị A

– Nếu có dòng ID, hoạt động và được kết nối với phía A của cáp USB, đồng thời bit có khả năng HNP bị
xóa trong thanh ghi Cấu hình USB Toàn cầu (bit HNPCAP trongOTG_FS_GUSBCFG). Các điện trở
kéo xuống tích hợp được cài đặt tự động trên đường DP/DM.

• Chỉ máy chủ (xem Hình 306: Kết nối chỉ máy chủ USB).

– Bit chế độ máy chủ bắt buộc trong thanh ghi cấu hình USB chung (bit FHMOD trong
OTG_FS_GUSBCFG) buộc lõiOTG_FS chỉ hoạt động như một máy chủ lưu trữ USB. Trong trường hợp này,
dòng ID bị bỏ qua ngay cả khi có trên đầu nối USB. Điện trở kéo xuống tích hợp được cài đặt tự
động trên đường DP/DM.

Ghi chú: Thế hệ VBUS 5 V trên chip không được hỗ trợ. Vì lý do này, một máy bơm sạc hoặc nếu có sẵn 5 V trên bảng ứng
dụng thì phải thêm một công tắc nguồn cơ bản bên ngoài để điều khiển đường dây VBUS 5 V. Bơm sạc bên ngoài

có thể được điều khiển bởi bất kỳ đầu ra GPIO nào. Điều này là bắt buộc đối với cấu hình máy chủ A-host,
thiết bị A và máy chủ A-OT.

Đầu vào VBUS đảm bảo rằng các mức VBUS hợp lệ được cung cấp bởi bơm sạc trong khi hoạt động bằng USB trong
khi đầu ra quá dòng của bơm sạc có thể là đầu vào cho bất kỳ chân GPIO nào được định cấu hình để

tạo ra các ngắt cổng. ISR quá dòng phải vô hiệu hóa kịp thời VBUS
thế hệ.

838/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Hình 306. Kết nối chỉ dành cho máy chủ USB

VDD
5 V

VN STMPS2141STR
GPIO
giới hạn hiện tại Nguồn điện 5 V

Quá dòng công tắc phân


GPIO + IRQ
phối điện(2)

VBUS

DM
OSC_IN
DP

uầĐ
VSS
OSC_OUT

MSv36915V2

1. STMPS2141STR chỉ cần thiết nếu ứng dụng phải hỗ trợ thiết bị hỗ trợ VBUS . Có thể sử dụng công tắc
nguồn cơ bản nếu có sẵn 5 V trên bảng ứng dụng.

28.6.1 Máy chủ có khả năng SRP

Hỗ trợ SRP có sẵn thông qua bit có khả năng SRP trong thanh ghi cấu hình USB chung (bit SRPCAP
trongOTG_FS_GUSBCFG). Khi bật tính năng SRP, máy chủ có thể tiết kiệm năng lượng bằng cách tắt nguồn VBUS
trong khi phiên USB bị treo.

Mô hình chương trình chế độ máy chủ SRP được mô tả chi tiết trong phần giao thức yêu cầu phiên thiết
bị A.

28.6.2 Trạng thái máy chủ USB

Nguồn cổng máy chủ

Thế hệ VBUS 5 V trên chip không được hỗ trợ. Vì lý do này, một bơm sạc hoặc, nếu có sẵn 5 V trên bảng
ứng dụng, một công tắc nguồn cơ bản phải được bổ sung bên ngoài để điều khiển đường dây VBUS 5 V. Bơm
sạc bên ngoài có thể được điều khiển bởi bất kỳ đầu ra GPIO nào. Khi ứng dụng quyết định bật VBUS bằng
GPIO đã chọn, nó cũng phải đặt bit nguồn cổng trong thanh ghi trạng thái và điều khiển cổng máy chủ
(bit PPWR trongOTG_FS_HPRT).

VBUS hợp lệ

Khi HNP hoặc SRP được bật, chân cảm biến VBUS (PA9) phải được kết nối với VBUS. Đầu vào VBUS đảm
bảo rằng mức VBUS hợp lệ được cung cấp bởi bơm sạc trong quá trình hoạt động của USB. Bất kỳ sự sụt
giảm điện áp VBUS không lường trước nào xuống dưới ngưỡng hợp lệ VBUS (4,25 V) đều dẫn đến ngắtOTG
được kích hoạt bởi bit được phát hiện cuối phiên (bit SEDET trongOTG_FS_GOTGINT). Sau đó, ứng dụng được
yêu cầu loại bỏ nguồn VBUS và xóa bit nguồn cổng.

Khi cả HNP và SRP đều bị vô hiệu hóa, chân cảm biến VBUS (PA9) không được kết nối với VBUS. Pin
này có thể được sử dụng như GPIO.

Cờ quá dòng của bơm sạc cũng có thể được sử dụng để ngăn ngừa hư hỏng về điện. Kết nối đầu ra cờ quá
dòng từ bơm sạc với bất kỳ đầu vào GPIO nào và định cấu hình nó để tạo ra ngắt cổng ở mức hoạt động.
ISR quá dòng phải vô hiệu hóa kịp thời việc tạo VBUS và xóa bit nguồn cổng.

RM0008 Phiên bản 21 839/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Phát hiện máy chủ của kết nối ngoại vi

Nếu SRP hoặc HNP được bật, ngay cả khi có thể gắn thiết bị ngoại vi USB hoặc thiết bị B bất kỳ lúc nào,
thìOTG_FS sẽ không phát hiện bất kỳ kết nối bus nào cho đến khi kết thúc cảm biến VBUS ( VBUS trên
4,75 V). Khi VBUS ở mức hợp lệ và thiết bị B từ xa được gắn vào, lõiOTG_FS sẽ phát ra ngắt cổng máy
chủ được kích hoạt bởi bit được kết nối với thiết bị trong thanh ghi trạng thái và điều khiển cổng máy
chủ (bit PCDET trongOTG_FS_HPRT).

Khi cả HNP và SRP đều bị tắt, các thiết bị ngoại vi USB hoặc thiết bị B sẽ được phát hiện ngay khi chúng
được kết nối. LõiOTG_FS phát ra ngắt cổng máy chủ được kích hoạt bởi bit được kết nối của thiết
bị trong trạng thái và điều khiển cổng máy chủ (bit PCDET trongOTG_FS_HPRT).

Phát hiện máy chủ ngoại vi bị ngắt kết nối

Sự kiện ngắt kết nối ngoại vi kích hoạt ngắt được phát hiện ngắt kết nối (bit DISCINT trongOTG_FS_GINTSTS).

Liệt kê máy chủ

Sau khi phát hiện kết nối ngoại vi, máy chủ phải bắt đầu quá trình liệt kê bằng cách gửi lệnh đặt lại
và cấu hình USB đến thiết bị ngoại vi mới.

Trước khi bắt đầu điều khiển thiết lập lại USB, ứng dụng sẽ đợi ngắt OG được kích hoạt bởi bit gỡ lỗi
được thực hiện (bit DBCDNE trongOTG_FS_GOTGINT), cho biết rằng bus đã ổn định trở lại sau khi sự cố về
điện gây ra bởi việc gắn điện trở kéo lên trên DP (FS) hoặc DM (LS).

Ứng dụng điều khiển tín hiệu đặt lại USB (số 0 một đầu) qua USB bằng cách giữ bit đặt lại cổng được đặt
trong thanh ghi trạng thái và điều khiển cổng máy chủ (bit PRST trongOTG_FS_HPRT) trong
tối thiểu 10 mili giây và tối đa là 20 mili giây. Ứng dụng sẽ xử lý việc đếm thời gian và sau đó xóa bit
đặt lại cổng.

Sau khi trình tự đặt lại USB hoàn tất, ngắt cổng máy chủ được kích hoạt bởi bit thay đổi bật/tắt cổng (bit
PENCHNG trongOTG_FS_HPRT). Điều này thông báo cho ứng dụng rằng tốc độ của thiết bị ngoại vi được liệt
kê có thể được đọc từ trường tốc độ cổng trong thanh ghi trạng thái và điều khiển cổng máy chủ (bit
PSPD trongOTG_FS_HPRT) và máy chủ đang bắt đầu điều khiển SOF (FS) hoặc Keep Alives (LS). ). Máy chủ
hiện đã sẵn sàng hoàn thành việc liệt kê ngoại vi bằng cách gửi các lệnh cấu hình ngoại vi.

Tạm dừng máy chủ

Ứng dụng quyết định tạm dừng hoạt động USB bằng cách đặt bit tạm dừng cổng trong thanh ghi trạng thái
và điều khiển cổng máy chủ (bit PSUSP trongOTG_FS_HPRT). LõiOTG_FS ngừng gửi SOF và chuyển sang trạng
thái treo.

Trạng thái treo có thể được thoát tùy ý theo sáng kiến của thiết bị từ xa (đánh thức từ xa). Trong
trường hợp này, ngắt đánh thức từ xa (bit WKUPINT trongOTG_FS_GINTSTS) được tạo ra khi phát hiện tín
hiệu đánh thức từ xa, bit tiếp tục cổng trong thanh ghi trạng thái và điều khiển cổng máy chủ (bit PRES
trongOTG_FS_HPRT) tự động thiết lập và tín hiệu tiếp tục được tự động được điều khiển qua USB. Ứng dụng
phải tính thời gian cho cửa sổ tiếp tục và sau đó xóa bit tiếp tục của cổng để thoát khỏi trạng thái treo
và khởi động lại SOF.

Nếu trạng thái tạm dừng được thoát khỏi chủ động của máy chủ, ứng dụng phải đặt bit tiếp tục cổng
để bắt đầu báo hiệu tiếp tục trên cổng máy chủ, tính thời gian cho cửa sổ tiếp tục và cuối cùng xóa bit
tiếp tục cổng.

840/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

28.6.3 Kênh chủ


LõiOTG_FS khởi tạo 8 kênh máy chủ. Mỗi kênh máy chủ đều hỗ trợ truyền máy chủ USB (ống USB). Máy chủ không
thể hỗ trợ nhiều hơn 8 yêu cầu chuyển cùng một lúc. Nếu có hơn 8 yêu cầu truyền đang chờ xử lý từ ứng
dụng, trình điều khiển bộ điều khiển máy chủ (HCD) phải phân bổ lại các kênh khi chúng có sẵn từ nhiệm
vụ trước đó, nghĩa là sau khi nhận được quá trình truyền hoàn tất và kênh bị gián đoạn.

Mỗi kênh máy chủ có thể được cấu hình để hỗ trợ vào/ra và bất kỳ loại giao dịch định kỳ/không định kỳ nào.
Mỗi kênh máy chủ cung cấp cho chúng tôi các thanh ghi điều khiển thích hợp (HCCHARx), cấu hình
truyền (HCTSIZx) và trạng thái/ngắt (HCINTx) với các thanh ghi mặt nạ liên quan (HCINTMSKx).

Kiểm soát kênh máy chủ

• Các điều khiển kênh máy chủ sau đây có sẵn cho ứng dụng thông qua máy chủ
thanh ghi đặc tính kênh-x (HCCHARx):

– Bật/tắt kênh

– Lập trình tốc độ FS/LS của thiết bị ngoại vi USB mục tiêu

– Lập trình địa chỉ của thiết bị ngoại vi USB mục tiêu

– Lập trình số điểm cuối của thiết bị ngoại vi USB mục tiêu

– Lập trình hướng truyền vào/ra

– Lập trình kiểu truyền USB (điều khiển, số lượng lớn, ngắt, đẳng thời)

– Lập trình kích thước gói tối đa (MPS)

– Lập trình truyền định kỳ được thực hiện trong các khung chẵn/lẻ

Chuyển kênh máy chủ

Các thanh ghi kích thước truyền kênh máy chủ (HCTSIZx) cho phép ứng dụng lập trình các tham số kích
thước truyền và đọc trạng thái truyền. Việc lập trình phải được thực hiện trước khi thiết lập bit kích
hoạt kênh trong thanh ghi đặc tính kênh chủ. Khi điểm cuối được bật, trường số lượng gói ở chế độ chỉ đọc
khi lõi FS của FS cập nhật nó theo trạng thái truyền hiện tại.

• Các tham số truyền sau có thể được lập trình:

– kích thước truyền theo byte

– số lượng gói tạo nên kích thước truyền tổng thể

– dữ liệu ban đầu PID

Trạng thái/ngắt kênh máy chủ

Thanh ghi ngắt kênh-x máy chủ (HCINTx) cho biết trạng thái của điểm cuối đối với các sự kiện liên quan
đến USB và AHB. Ứng dụng phải đọc các thanh ghi này khi bit ngắt kênh máy chủ trong thanh ghi ngắt lõi (bit
HCINT trongOTG_FS_GINTSTS) được đặt. Trước khi ứng dụng có thể đọc các thanh ghi này, trước tiên nó phải
đọc thanh ghi ngắt tất cả các kênh (HCAINT) của máy chủ để lấy số kênh chính xác cho thanh ghi ngắt kênh-x
của máy chủ. Ứng dụng phải xóa bit thích hợp trong thanh ghi này để xóa

RM0008 Phiên bản 21 841/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

các bit tương ứng trong thanh ghi HAINT và GINTSTS. Các bit mặt nạ cho mỗi nguồn ngắt của
mỗi kênh cũng có sẵn trong thanh ghiOT_FS_HCINTMSK-x.

• Lõi máy chủ cung cấp các kiểm tra trạng thái và tạo ngắt sau đây:

– Ngắt truyền hoàn thành, cho biết quá trình truyền dữ liệu đã hoàn tất trên cả hai mặt
ứng dụng (AHB) và USB

– Kênh đã dừng do truyền hoàn tất, lỗi giao dịch USB hoặc lệnh vô hiệu hóa từ ứng dụng

– FIFO truyền liên kết trống một nửa hoặc hoàn toàn trống (điểm cuối IN)

– Đã nhận được phản hồi ACK

– Đã nhận được phản hồi NAK

– Đã nhận được phản hồi STALL

– Lỗi giao dịch USB do lỗi CRC, timeout, lỗi nhét bit, EOP sai
– Lỗi lảm nhảm

– tràn khung

– Lỗi chuyển đổi dAta

28.6.4 Bộ lập lịch máy chủ

Lõi máy chủ có bộ lập lịch phần cứng tích hợp có khả năng tự động sắp xếp lại và quản lý các
yêu cầu giao dịch USB do ứng dụng đăng. Ở đầu mỗi khung, trước tiên, máy chủ thực hiện các
giao dịch định kỳ (đẳng thời gian và ngắt), sau đó là các giao dịch không định kỳ (điều
khiển và số lượng lớn) để đạt được mức độ ưu tiên cao hơn được cấp cho các loại truyền
đẳng thời và ngắt theo thông số kỹ thuật USB.

Máy chủ xử lý các giao dịch USB thông qua hàng đợi yêu cầu (một cho định kỳ và một cho không
định kỳ). Mỗi hàng đợi yêu cầu có thể chứa tối đa 8 mục. Mỗi mục nhập thể hiện một yêu cầu
giao dịch đang chờ xử lý từ ứng dụng và chứa số kênh IN hoặc OUT cùng với các thông tin khác
để thực hiện giao dịch trên USB. Thứ tự các yêu cầu được ghi vào hàng đợi xác định trình tự
các giao dịch trên giao diện USB.

Ở đầu mỗi khung, máy chủ xử lý hàng đợi yêu cầu định kỳ trước, sau đó là hàng đợi yêu cầu
không định kỳ. Máy chủ phát ra một ngắt truyền định kỳ không hoàn chỉnh (bit IPXFR
trongOTG_FS_GINTSTS) nếu một giao dịch đẳng thời hoặc ngắt được lên lịch cho khung hiện tại
vẫn đang chờ xử lý ở cuối khung hiện tại. Lõi HTHS chịu trách nhiệm hoàn toàn cho việc quản
lý hàng đợi yêu cầu định kỳ và không định kỳ. Thanh ghi trạng thái hàng đợi và FIFO
truyền định kỳ (HPTXSTS) và thanh ghi trạng thái hàng đợi và FIFO truyền không định kỳ
(HNPTXSTS) là các thanh ghi chỉ đọc có thể được sử dụng bởi ứng dụng để đọc trạng thái của
từng hàng đợi yêu cầu. Chúng chứa: • Số lượng mục miễn phí hiện có trong

yêu cầu định kỳ (không định kỳ)


hàng đợi (tối đa 8)

• Dung lượng trống hiện có sẵn trong Tx-FIFO định kỳ (không định kỳ) (giao dịch ngoài) • Mã

thông báo IN/OUT, số kênh máy chủ và thông tin trạng thái khác.

Vì hàng đợi yêu cầu có thể chứa tối đa 8 mục nhập mỗi mục, nên ứng dụng có thể lên lịch
trước cho các giao dịch trên máy chủ tùy theo thời điểm chúng đến SB về mặt vật lý đối với tối
đa 8 giao dịch định kỳ đang chờ xử lý cộng với 8 giao dịch không định kỳ đang chờ xử
lý.

Để đăng một yêu cầu giao dịch lên bộ lập lịch máy chủ (hàng đợi), ứng dụng phải kiểm tra xem
có ít nhất 1 mục nhập có sẵn trong hàng đợi yêu cầu định kỳ (không định kỳ) bằng cách đọc

842/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Các bit PTXQSAV trong thanh ghi OG_FS_HNPTXSTS hoặc các bit NPTQXSAV trong thanh
ghi OG_FS_HNPTXSTS.

Kích hoạt 28.7 SOF

Hình 307. Kết nối SOF

STM32 MCU

Đầu ra xung SOF, tới


PA8
điều khiển âm thanh bên ngoài

PA9 VBUS

PA11 D
ITR1
xung SOF
PA12 D+

uầĐ
TIM2 SOFgen PA10 NHẬN DẠNG

VSS

MS19907V3

Lõi FT FS cung cấp các phương tiện để giám sát, theo dõi và định cấu hình khung SOF trong máy
chủ và thiết bị ngoại vi, cũng như tính năng kết nối đầu ra xung SOF.

Những tiện ích như vậy đặc biệt hữu ích cho các kỹ thuật tạo đồng hồ âm thanh thích ứng, trong
đó thiết bị ngoại vi âm thanh cần đồng bộ hóa với luồng đẳng thời do PC cung cấp hoặc máy chủ cần
cắt giảm tốc độ khung hình theo yêu cầu của thiết bị ngoại vi âm thanh.

28.7.1 SOF máy chủ

Trong chế độ máy chủ, số lượng đồng hồ PHY xảy ra giữa quá trình tạo hai mã thông báo
SOF (FS) hoặc Keep-alive (LS) liên tiếp có thể được lập trình trong thanh ghi khoảng thời gian
khung máy chủ (HFIR), do đó cung cấp khả năng kiểm soát ứng dụng trong khoảng thời gian đóng khung
SOF. Một ngắt được tạo ra ở bất kỳ điểm bắt đầu khung nào (bit SOF trong OTH_FS_GINTSTS).
Số khung hiện tại và thời gian còn lại cho đến SOF tiếp theo được theo dõi trong thanh ghi số
khung máy chủ (HFNUM).

Tín hiệu xung SOF, được tạo tại bất kỳ mã thông báo bắt đầu SOF nào và có độ rộng 20 chu kỳ
HCLK, có thể được cung cấp bên ngoài trên chânOTG_FS_SOF bằng cách sử dụng bit SOFOUTEN trong
thanh ghi cấu hình và điều khiển chung. Xung SOF cũng được kết nối bên trong với bộ
kích hoạt đầu vào của bộ định thời 2 (TIM2), do đó tính năng chụp đầu vào, tính năng so sánh đầu
ra và bộ định thời có thể được kích hoạt bằng xung SOF. Kết nối TIM2 được kích hoạt bằng cách
đăng ký.

28.7.2 SOF ngoại vi


Ở chế độ thiết bị, việc bắt đầu ngắt khung được tạo ra mỗi khi nhận được mã thông báo SOF trên
USB (bit SOF trong OTH_FS_GINTSTS). Số khung tương ứng có thể được đọc từ thanh ghi trạng thái
thiết bị (bit FNSOF trongOTG_FS_DSTS). Tín hiệu xung SOF có độ rộng 20 chu kỳ HCLK cũng được tạo
ra và có thể được cung cấp bên ngoài trên

RM0008 Phiên bản 21 843/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

ChânOTG_FS_SOF bằng cách sử dụng bit cho phép đầu ra SOF trong thanh ghi cấu hình và điều khiển toàn
cầu (bit SOFOUTEN trongOTG_FS_GCCFG). Tín hiệu xung SOF cũng được kết nối bên trong với bộ kích
hoạt đầu vào TIM2, do đó tính năng chụp đầu vào, tính năng so sánh đầu ra và bộ hẹn giờ có thể được
kích hoạt bằng xung SOF. Kết nối TIM2 đã được kích hoạt.

Việc kết thúc ngắt khung định kỳ (GINTSTS/EOPF) được sử dụng để thông báo cho ứng dụng khi 80%, 85%,
90% hoặc 95% khoảng thời gian của khung thời gian trôi qua tùy thuộc vào trường khoảng thời gian khung
định kỳ trong thanh ghi cấu hình thiết bị (bit PFIVL trongOTG_FS_DCFG). Tính năng này có thể được sử
dụng để xác định xem tất cả lưu lượng truy cập đẳng thời cho khung đó đã hoàn tất hay chưa.

28.8 Chế độ năng lượng thấp OTG


Bảng 200 bên dưới xác định các chế độ năng lượng thấp STM32 và khả năng tương thích của chúng vớiOTG.

Bảng 200. Khả năng tương thích của chế độ năng lượng thấp STM32 vớiOTG

Cách thức Sự miêu tả Khả năng tương thích USB

Cần thiết khi USB không ở trạng


Chạy MCU hoàn toàn hoạt động
thái treo.

Thoát khỏi trạng thái treo USB khiến thiết bị thoát khỏi chế độ Ngủ. Khả dụng khi USB ở trạng thái
Ngủ
Nội dung đăng ký ngoại vi được lưu giữ. treo.

Thoát tạm dừng USB khiến thiết bị thoát khỏi chế độ Dừng. Khả dụng khi USB ở trạng thái
Dừng lại
Nội dung đăng ký ngoại vi được lưu giữ (1). treo.

Tắt nguồn. Thiết bị ngoại vi phải được khởi động lại sau khi thoát Không tương thích với các
Đứng gần
khỏi chế độ Chờ. ứng dụng USB.

1. Trong chế độ Dừng, có thể có các cài đặt khác nhau. Một số hạn chế cũng có thể tồn tại, vui lòng tham khảo
Phần 5: Kiểm soát nguồn (PWR) để hiểu những hạn chế nào (nếu có) áp dụng khi sử dụngOTG.

Mức tiêu thụ năng lượng của OOT PHY được điều khiển bởi ba bit trong thanh ghi cấu hình lõi
chung:

• Tắt nguồn PHY (GCCFG/PWRDWN)

Nó bật/tắt mô-đun thu phát tốc độ đầy đủ của PHY. Nó phải được thiết lập sơ bộ để cho phép mọi
hoạt động USB.

• Kích hoạt cảm biến A-VBUS (GCCFG/VBUSASEN)

Nó bật/tắt bộ so sánh VBUS liên quan đến hoạt động của thiết bị A. Nó phải được đặt khi ở chế
độ thiết bị A (máy chủ USB) và trong HNP.

• Kích hoạt cảm biến B-VBUS (GCCFG/VBUSASEN)

Nó bật/tắt bộ so sánh VBUS liên quan đến hoạt động của thiết bị B. Nó phải được đặt khi ở chế
độ thiết bị B (thiết bị ngoại vi USB) và trong HNP.

Kỹ thuật giảm nguồn có sẵn khi ở trạng thái treo USB, khi phiên USB chưa hợp lệ hoặc thiết bị bị ngắt
kết nối.

• Dừng đồng hồ PHY (bit STPPCLK trongOTG_FS_PCGCCTL)

Khi thiết lập bit dừng PHY đồng hồ trong thanh ghi điều khiển cổng đồng hồ, hầu hết
Miền xung nhịp 48 MHz bên trong lõi tốc độ đầy đủ của OG bị tắt theo xung nhịp

844/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

cổng. Mức tiêu thụ điện năng động do hoạt động chuyển đổi đồng hồ USB bị cắt ngay cả khi ứng dụng
tiếp tục chạy đầu vào đồng hồ 48 MHz

Hầu hết bộ thu phát cũng bị vô hiệu hóa và chỉ phần chịu trách nhiệm phát hiện quá trình tiếp
tục không đồng bộ hoặc sự kiện đánh thức từ xa vẫn còn hoạt động.

• Cổng HCLK (bit GATEHCLK trongOTG_FS_PCGCCTL)

Khi thiết lập bit Cổng HCLK trong thanh ghi điều khiển cổng xung nhịp, hầu hết miền xung nhịp hệ
thống bên trong lõiOTG_FS sẽ bị tắt bằng cổng xung nhịp. Chỉ có giao diện đọc và ghi đăng ký
được giữ nguyên. Mức tiêu thụ điện năng động do hoạt động chuyển đổi đồng hồ USB bị cắt ngay cả khi
đồng hồ hệ thống vẫn được ứng dụng chạy cho các mục đích khác.

• Dừng hệ thống USB

KhiOTG_FS ở trạng thái treo USB, ứng dụng có thể quyết định giảm đáng kể mức tiêu thụ điện
năng tổng thể bằng cách tắt hoàn toàn tất cả các nguồn đồng hồ trong hệ thống. Dừng hệ thống USB
được kích hoạt bằng cách trước tiên cài đặt bit đồng hồ Dừng PHY, sau đó định cấu hình chế độ
ngủ sâu của hệ thống trong mô-đun hệ thống điều khiển nguồn (PWR).

LõiOTG_FS tự động kích hoạt lại cả đồng hồ hệ thống và đồng hồ USB bằng cách phát hiện
không đồng bộ tín hiệu đánh thức từ xa (với tư cách là máy chủ) hoặc tiếp tục (với tư cách
là thiết bị) trên USB.

Để tiết kiệm năng lượng động, FIFO dữ liệu USB chỉ được bấm giờ khi được truy cập bởiOTG_FS
cốt lõi.

28.9 Cập nhật động của thanh ghiOTG_FS_HFIR


Lõi USB nhúng khả năng cắt động của khoảng thời gian tạo khung SOF ở chế độ máy chủ cho phép đồng bộ hóa
thiết bị bên ngoài với khung SOF.

Khi thanh ghiOTG_FS_HFIR được thay đổi trong khung SOF hiện tại, việc hiệu chỉnh chu kỳ SOF được áp
dụng trong khung tiếp theo như được mô tả trong Hình 308.

Hình 308. Cập nhật linh hoạtOT_FS_HFIR

Giá trịOTG_FS_HIFR cũ Giá trị OOT_FS_HIFR Giá trịOTG_FS_HIFR mới


= 400 tiết = 450 tiết+Độ trễ ghi HIFR = 450 tiết
tải
lại SOF

Độ trễ

ghi OOT_FS_HFIR

Giá trị 400 450


OOT_FS_HFIR

Khung
1

… … … …
0
1

1
0

0
054
944
993

993
004

004

054
944

054
944

hẹn giờ

ai184

RM0008 Phiên bản 21 845/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

28.10 FIFO dữ liệu USB

Hệ thống USB có RAM chuyên dụng 1,25 Kbyte với cơ chế điều khiển FIFO phức tạp. Mô-đun bộ
điều khiển FIFO gói trong lõiOTG_FS sắp xếp không gian RAM thành các Tx-FIFO trong đó ứng
dụng sẽ đẩy dữ liệu được lưu trữ tạm thời trước khi truyền USB và vào một Rx FIFO duy nhất
nơi dữ liệu nhận được từ USB được lưu trữ tạm thời trước khi truy xuất (xuất hiện) bởi
ứng dụng. Số lượng FIFO được hướng dẫn và cách chúng được tổ chức bên trong RAM tùy
thuộc vào vai trò của thiết bị. Ở chế độ ngoại vi, Tx-FIFO bổ sung được hướng dẫn cho
từng điểm cuối IN hoạt động. Mọi kích thước FIFO đều được cấu hình bằng phần mềm để đáp ứng
tốt hơn các yêu cầu của ứng dụng.

28.11 Kiến trúc FIFO ngoại vi

Hình 309. Ánh xạ địa chỉ FIFO ở chế độ thiết bị và ánh xạ truy cập FIFO AHB

Dữ liệu đơn
FIFO

DIEPTXF2[31:16]
IN điểm cuối Tx FIFO #n Tx chuyên dụng Tx FIFO #n
Truy cập đẩy DFIFO kiểm soát FIFO #n gói
từ AHB DIEPTXFx[15:0]
(không bắt buộc)

cửa sổ MAC
. . .
. . .
. . .
DIEPTXF2[15:0]

IN điểm cuối Tx FIFO #1


Tx chuyên dụng
Truy cập đẩy DFIFO Gói Tx FIFO #1
Kiểm soát FIFO #1
từ AHB DIEPTXF1[31:16]
(không bắt buộc)
DIEPTXF1[15:0]
cửa sổ MAC

IN điểm cuối Tx FIFO #0 Tx chuyên dụng


Gói Tx FIFO #0 GNPTXFSIZ[31:16]
Truy cập đẩy DFIFO Kiểm soát FIFO #0
từ AHB (không bắt buộc)

cửa sổ MAC
GNPTXFSIZ[15:0]

Bất kỳ cửa sổ DFIFO điểm cuối OUT nào


Kiểm soát FIFO Rx GRXFSIZ[31:16]
truy cập từ AHB Gói Rx

(Rx bắt đầu


Đẩy MAC
A1 = 0 Địa chỉ

cố định thành 0)

ai15611

28.11.1 FIFO Rx ngoại vi


Thiết bị ngoại viOTG sử dụng một FIFO nhận duy nhất để nhận dữ liệu hướng đến tất cả các
điểm cuối OUT. Các gói đã nhận được xếp chồng lên nhau cho đến khi có dung lượng trống
trong Rx-FIFO. Trạng thái của gói đã nhận (chứa số đích của điểm cuối OUT, số byte, PID dữ
liệu và tính hợp lệ của dữ liệu đã nhận) cũng được lõi lưu trữ trên tải trọng dữ liệu. Khi
không còn chỗ trống, các giao dịch trên máy chủ sẽ được NACK và nhận được một ngắt trên điểm
cuối được đánh địa chỉ. Kích thước của FIFO nhận được cấu hình trong thanh ghi kích
thước FIFO nhận (GRXFSIZ).

846/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Kiến trúc FIFO nhận đơn giúp thiết bị ngoại vi USB điền vào bộ đệm RAM nhận hiệu quả hơn:

• Tất cả các điểm cuối OUT đều có chung bộ đệm RAM (FIFO được chia sẻ)

• Lõi FS của FS có thể điền vào FIFO nhận tới giới hạn cho bất kỳ chuỗi máy chủ nào
Mã thông báo NGOÀI

Ứng dụng tiếp tục nhận được ngắt không trống Rx-FIFO (bit RXFLVL trongOTG_FS_GINTSTS)
miễn là có ít nhất một gói để tải xuống. Nó đọc thông tin gói từ thanh ghi trạng thái nhận và
đọc (GRXSTSP) và cuối cùng lấy dữ liệu ra khỏi FIFO nhận bằng cách đọc từ địa chỉ pop liên
quan đến điểm cuối.

28.11.2 FIFO Tx ngoại vi

Lõi có FIFO dành riêng cho mỗi điểm cuối IN. Ứng dụng định cấu hình kích thước FIFO bằng cách
ghi thanh ghi kích thước FIFO truyền không định kỳ (OTG_FS_TX0FSIZ) cho điểm cuối IN0 và điểm
cuối IN của thiết bị truyền thanh ghi FIFOx (DIEPTXFx) cho điểm cuối IN-x.

28.12 Kiến trúc FIFO của máy chủ

Hình 310. Ánh xạ địa chỉ FIFO ở chế độ máy chủ và ánh xạ truy cập FIFO AHB

Dữ liệu đơn
FIFO

Bất kỳ kênh định kỳ Tx định kỳ


Gói Tx định kỳ HPTXFSIZ[31:16]
Truy cập đẩy DFIFO kiểm soát FIFO
từ AHB
(không bắt buộc)

cửa sổ MAC HPTXFSIZ[15:0]

Bất kỳ không định kỳ Gói Tx định kỳ NPTXFSIZ[31:16]


đẩy kênh DFIFO Không định kỳ
truy cập từ AHB Kiểm soát Tx FIFO

NPTXFSIZ[15:0]
cửa sổ MAC

Gói Rx RXFSIZ[31:16]
Bất kỳ kênh DFIFO pop nào
truy cập từ AHB Kiểm soát FIFO Rx

Địa chỉ bắt đầu Rx


cố định thành 0

Đẩy MAC A1 = 0
ai15610

28.12.1 Máy chủ Rx FIFO

Máy chủ sử dụng một máy thu FIFO cho tất cả các giao dịch định kỳ và không định kỳ. FIFO
được sử dụng làm bộ đệm nhận để giữ dữ liệu đã nhận (tải trọng của gói đã nhận) từ USB cho
đến khi nó được chuyển vào bộ nhớ hệ thống. Các gói nhận được từ bất kỳ điểm cuối IN từ
xa nào được xếp chồng lên nhau cho đến khi có dung lượng trống. Trạng thái của mỗi gói nhận
được với đích kênh máy chủ, số byte, PID dữ liệu và tính hợp lệ của dữ liệu nhận được cũng
được lưu trữ vào FIFO. Kích thước của FIFO nhận được cấu hình trong thanh ghi kích thước
FIFO nhận (GRXFSIZ).

RM0008 Phiên bản 21 847/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Kiến trúc FIFO nhận đơn giúp máy chủ USB điền vào bộ đệm dữ liệu nhận một cách hiệu quả cao:

• Tất cả các kênh máy chủ được cấu hình IN đều chia sẻ cùng một bộ đệm RAM (FIFO được chia sẻ)

• Lõi FT FS có thể điền vào FIFO nhận tối đa giới hạn cho bất kỳ chuỗi mã thông báo IN nào
được điều khiển bởi phần mềm máy chủ

Ứng dụng nhận được ngắt Rx FIFO không trống miễn là có ít nhất một gói có sẵn để tải xuống.
Nó đọc thông tin gói từ thanh ghi trạng thái nhận và đọc và cuối cùng lấy dữ liệu ra khỏi FIFO
nhận.

28.12.2 FIFO Tx của máy chủ

Máy chủ sử dụng một FIFO truyền cho tất cả các giao dịch OUT không định kỳ (điều khiển và số
lượng lớn) và một FIFO truyền cho tất cả các giao dịch OUT định kỳ (đẳng thời gian và ngắt).
FIFO được sử dụng làm bộ đệm truyền để giữ dữ liệu (tải trọng của gói truyền) được
truyền qua USB. Kích thước của Tx FIFO định kỳ (không định kỳ) được cấu hình trong thanh ghi
kích thước FIFO truyền định kỳ (không định kỳ) của máy chủ (HPTXFSIZ/HNPTXFSIZ).

Việc triển khai hai Tx FIFO xuất phát từ mức độ ưu tiên cao hơn được cấp cho loại lưu lượng
truy cập định kỳ qua khung USB. Ở đầu mỗi khung, bộ lập lịch máy chủ tích hợp sẽ xử lý hàng
đợi yêu cầu định kỳ trước, sau đó là hàng đợi yêu cầu không định kỳ.

Hai kiến trúc FIFO truyền cung cấp cho máy chủ USB khả năng tối ưu hóa riêng biệt để quản
lý bộ đệm dữ liệu truyền định kỳ và không định kỳ:
• Tất cả các kênh máy chủ được định cấu hình để hỗ trợ các giao dịch định kỳ (không định kỳ)
theo hướng OUT đều có chung bộ đệm RAM (FIFO được chia sẻ)

• Lõi LTE của FS có thể điền vào FIFO truyền định kỳ (không định kỳ) đến giới hạn cho
bất kỳ chuỗi mã thông báo OUT nào được điều khiển bởi phần mềm máy chủ

LõiOTG_FS phát ra ngắt trống Tx FIFO định kỳ (bit PTXFE trongOTG_FS_GINTSTS)


miễn là Tx-FIFO định kỳ trống một nửa hoặc hoàn toàn trống, tùy thuộc vào giá trị
của bit mức trống Tx-FIFO định kỳ trong thanh ghi cấu hình AHB (PTXFELVL) bit
trongOTG_FS_GAHBCFG). Ứng dụng có thể đẩy trước dữ liệu truyền miễn là có không gian trống
trong cả Tx FIFO định kỳ và hàng đợi yêu cầu định kỳ. Có thể đọc FIFO truyền định kỳ của
máy chủ và thanh ghi trạng thái hàng đợi (HPTXSTS) để biết dung lượng còn trống trong
cả hai.

LõiOTG_FS phát ra ngắt trống Tx FIFO không định kỳ (bit NPTXFE trongOTG_FS_GINTSTS)
miễn là Tx FIFO không định kỳ trống một nửa hoặc hoàn toàn trống tùy thuộc vào bit mức
trống Tx FIFO không định kỳ trong thanh ghi cấu hình AHB (bit TXFELVL trongOTG_FS_GAHBCFG).
Ứng dụng có thể đẩy dữ liệu truyền tải miễn là còn trống trong cả hàng đợi Tx FIFO không định
kỳ và hàng đợi yêu cầu không định kỳ. Có thể đọc FIFO truyền không định kỳ của máy chủ và
thanh ghi trạng thái hàng đợi (HNPTXSTS) để biết dung lượng còn trống trong cả hai.

28.13 Phân bổ RAM FIFO

28.13.1 Chế độ thiết bị

Nhận phân bổ RAM FIFO: ứng dụng nên phân bổ RAM cho các gói SETUP: 10 vị trí phải được dành
riêng trong FIFO nhận để nhận các gói SETUP trên điểm cuối điều khiển. Lõi không sử dụng
các vị trí này, vốn được dành riêng cho các gói SETUP, để ghi bất kỳ dữ liệu nào khác. Một địa
điểm sẽ được phân bổ cho Global OUT NAK. Thông tin trạng thái

848/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

được ghi vào FIFO cùng với mỗi gói nhận được. Do đó, phải phân bổ không gian tối thiểu (Kích thước
gói lớn nhất / 4) + 1 để nhận gói. Nếu nhiều điểm cuối đẳng thời được bật thì ít nhất hai (Kích thước
gói lớn nhất / 4) + 1 khoảng trống phải được phân bổ để nhận các gói quay lại. Thông thường, nên sử
dụng hai (Kích thước gói lớn nhất / 4) + 1 khoảng trắng để khi gói trước đó được chuyển đến CPU,
USB có thể nhận gói tiếp theo.

Cùng với gói cuối cùng cho mỗi điểm cuối, thông tin trạng thái hoàn tất truyền cũng được đẩy tới FIFO.
Thông thường, nên sử dụng một vị trí cho mỗi điểm cuối OUT.

Phân bổ RAM FIFO truyền: không gian RAM tối thiểu cần thiết cho mỗi điểm cuối IN Truyền FIFO là kích
thước gói tối đa cho điểm cuối IN cụ thể đó.

Ghi chú: Nhiều không gian được phân bổ hơn trong FIFO điểm cuối truyền IN mang lại hiệu suất tốt hơn trên USB.

28.13.2 Chế độ máy chủ

Nhận phân bổ RAM FIFO

Thông tin trạng thái được ghi vào FIFO cùng với mỗi gói nhận được. Do đó, phải phân bổ không gian
tối thiểu (Kích thước gói lớn nhất / 4) + 1 để nhận gói. Nếu nhiều kênh đẳng thời được bật thì ít nhất
hai (Kích thước gói lớn nhất / 4) + 1 khoảng trắng phải được phân bổ để nhận các gói quay lại. Thông
thường, nên sử dụng hai (Kích thước gói lớn nhất / 4) + 1 khoảng trắng để khi gói trước đó được chuyển
đến CPU, USB có thể nhận gói tiếp theo.

Cùng với gói cuối cùng trong kênh máy chủ, thông tin trạng thái hoàn tất truyền cũng được đẩy tới FIFO.
Vì vậy, một địa điểm phải được phân bổ cho việc này.

Truyền phân bổ RAM FIFO

Dung lượng RAM tối thiểu cần thiết cho máy chủ FIFO truyền không định kỳ là kích thước gói tối đa
lớn nhất trong số tất cả các kênh OUT không định kỳ được hỗ trợ.

Thông thường, nên sử dụng hai dung lượng có Kích thước gói lớn nhất để khi gói hiện tại được chuyển
sang USB, CPU có thể nhận gói tiếp theo.

Dung lượng RAM tối thiểu cần thiết cho FIFO truyền định kỳ của máy chủ là kích thước gói tối đa
lớn nhất trong số tất cả các kênh OUT định kỳ được hỗ trợ. Nếu có ít nhất một điểm cuối Isochronous OUT
thì khoảng trống phải gấp ít nhất hai lần kích thước gói tối đa của kênh đó.

Ghi chú: Nhiều không gian được phân bổ hơn trong FIFO truyền không định kỳ mang lại hiệu suất tốt hơn trên USB.

28.14 Hiệu suất hệ thống USB


Hiệu năng hệ thống và USB tốt nhất đạt được nhờ bộ đệm RAM lớn, kích thước FIFO có cấu hình cao, khả
năng truy cập FIFO 32-bit nhanh chóng thông qua các thanh ghi đẩy/pop AHB và đặc biệt là cơ chế điều khiển
FIFO tiên tiến. Thật vậy, cơ chế này cho phépOTG_FS lấp đầy không gian RAM khả dụng một cách tốt
nhất bất kể trình tự USB hiện tại.
Với những tính năng này:

• Ứng dụng đạt được lợi nhuận tốt để hiệu chỉnh sự can thiệp của nó nhằm tối ưu hóa
Sử dụng băng thông CPU:

RM0008 Phiên bản 21 849/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

– Nó có thể tích lũy trước một lượng lớn dữ liệu truyền dẫn so với
khi chúng được gửi hiệu quả qua USB

– Lợi ích của việc có biên độ thời gian lớn để tải xuống dữ liệu từ một lần nhận FIFO

• Lõi USB có thể duy trì tốc độ hoạt động tối đa, nghĩa là cung cấp băng thông tốc độ tối đa
với mức độ tự chủ cao so với sự can thiệp của ứng dụng:

– Nó có sẵn một lượng lớn dữ liệu truyền tải để quản lý tự động việc gửi dữ liệu qua USB

– Nó có rất nhiều khoảng trống trong bộ đệm nhận để tự động điền dữ liệu đến từ USB vào
đó

Vì lõiOTG_FS có thể lấp đầy bộ đệm RAM 1,25 Kbyte rất hiệu quả và vì 1,25 Kbyte dữ liệu
truyền/nhận là quá đủ để bao phủ một khung tốc độ đầy đủ, nên hệ thống USB có thể chịu được
dữ liệu tốc độ đầy đủ tối đa tốc độ cho tối đa một khung USB (1 ms) mà không cần bất kỳ sự can
thiệp nào của CPU.

28.15 Ngắt OT_FS


Khi bộ điều khiểnOTG_FS đang hoạt động ở một chế độ, thiết bị hoặc máy chủ, ứng dụng không
được truy cập các thanh ghi từ chế độ khác. Nếu xảy ra truy cập bất hợp pháp, một
ngắt không khớp chế độ sẽ được tạo và phản ánh trong thanh ghi ngắt Core (bit MMIS trong thanh
ghiOT_FS_GINTSTS). Khi lõi chuyển từ chế độ này sang chế độ khác, các thanh ghi ở chế độ
hoạt động mới phải được lập trình lại như sau khi khởi động lại bật nguồn.

Hình 311 hiển thị hệ thống phân cấp ngắt.

850/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Hình 311. Phân cấp ngắt

gián đoạn đánh thức


(1) OTG_FS_WKUP

Ngắt toàn cầu


OT_FS

HOẶC

Mặt nạ ngắt toàn cục (bit 0)

OG_AHBCFG

HPRTINTHCINT IEPINT
OEPINP OTINT
Thanh ghi cấu hình AHB

OG_GINTSTS
Ngắt đăng ký lõi

31:26 25 24 23:20 19 18 17:3 2 1:0


OG_GINTMSK
Đăng ký mặt nạ ngắt lõi

OTG_GOTGINT
Thanh ghi ngắt OOT

(15 + #EP):16 (#EP-1):0


Điểm cuối OUT TRONG điểm cuối

OOT_DAINTMSK
Thiết bị đăng ký mặt nạ ngắt tất cả các
điểm cuối

OOT_DAINT
Thiết bị đăng ký ngắt tất cả các điểm cuối

OTG_DIEPMSK/
OOT_DOEPMSK
Thiết bị IN/OUT điểm cuối thanh ghi
mặt nạ ngắt chung

x = 0
OTG_DIEPINTx/
OTG_DOEPINTx
... x = #HC-1
Thanh ghi ngắt điểm cuối IN/OUT của
thiết bị

OOT_HPRT
Thanh ghi trạng thái và điều khiển cổng máy chủ

OOT_HAINTMSK
Lưu trữ tất cả các kênh đăng ký mặt nạ ngắt

OOT_HAINT
Lưu trữ tất cả các kênh đăng ký ngắt

x = 0
OTG_HCTINTMSKx
...
Các kênh máy chủ làm gián đoạn các thanh ghi mặt nạ x = #HC-1

OTG_HCTINTx
Các thanh ghi ngắt kênh máy chủ

MSv36921V3

1.OTG_FS_WKUP trở nên hoạt động (trạng thái cao) khi tình trạng tiếp tục xảy ra trong trạng thái L1 SLEEP hoặc L2 SUSPEND.

RM0008 Phiên bản 21 851/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

28.16 Thanh ghi trạng thái và điều khiểnOTG_FS


Bằng cách đọc và ghi vào các thanh ghi điều khiển và trạng thái (CSR) thông qua giao diện phụ AHB, ứng dụng sẽ

điều khiển bộ điều khiểnOTG_FS. Các thanh ghi này rộng 32 bit và địa chỉ được căn chỉnh theo khối 32 bit. Các

thanh ghiOTG_FS phải được truy cập bằng từ (32 bit).

CSR được phân loại như sau:

• Các thanh ghi toàn cầu cốt lõi

• Các thanh ghi chế độ máy chủ

• Lưu trữ các thanh ghi toàn cầu

• CSR cổng máy chủ

• Các thanh ghi dành riêng cho kênh máy chủ

• Các thanh ghi chế độ thiết bị

• Thanh ghi toàn cục của thiết bị

• Các thanh ghi dành riêng cho điểm cuối của thiết bị

• Các thanh ghi nguồn và kiểm soát xung nhịp

• Thanh ghi truy cập dữ liệu FIFO (DFIFO)

Chỉ có thể truy cập Core toàn cầu, Nguồn và kiểm soát xung nhịp, truy cập FIFO dữ liệu cũng như các thanh ghi trạng

thái và kiểm soát cổng máy chủ ở cả chế độ máy chủ và thiết bị. Khi bộ điều khiểnOTG_FS đang hoạt động ở một

chế độ, thiết bị hoặc máy chủ, ứng dụng không được truy cập các thanh ghi từ chế độ khác. Nếu xảy ra truy cập

bất hợp pháp, một ngắt không khớp chế độ sẽ được tạo và phản ánh trong thanh ghi ngắt Core (bit MMIS trong

thanh ghiOTG_FS_GINTSTS). Khi lõi chuyển từ chế độ này sang chế độ khác, các thanh ghi ở chế độ hoạt động mới phải

được lập trình lại như sau khi khởi động lại bật nguồn.

852/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

28.16.1 Bản đồ bộ nhớ CSR

Các thanh ghi chế độ máy chủ và thiết bị chiếm các địa chỉ khác nhau. Tất cả các thanh
ghi được triển khai trong miền đồng hồ AHB.

Hình 312. Sơ đồ bộ nhớ CSR

0000 giờ

CSR toàn cầu cốt lõi (1 Kbyte)

04h00

CSR chế độ máy chủ (1 Kbyte)


08h00

CSR chế độ thiết bị (1,5 Kbyte)


0E00h

CSR kiểm soát nguồn và đồng hồ (0,5 Kbyte)


1000 giờ

Thiết bị EP 0/Kênh máy chủ 0 FIFO (4 Kbyte)


2000 giờ

Thiết bị EP1/Kênh máy chủ 1 FIFO (4 Kbyte)


3000 giờ DFIFO

đẩy/bật
tới khu vực này

EP thiết bị (x – 1)(1)/Kênh máy chủ (x – 1)(1) FIFO (4 Kbyte)

Thiết bị EP x(1)/Kênh máy chủ x(1) FIFO (4 Kbyte)

Kín đáo

2 0000 giờ
DFIFO

Truy cập trực tiếp vào dữ liệu RAM gỡ lỗi đọc/


ghi vào vùng
FIFO để gỡ lỗi (128 Kbyte)
này

3 FFFFh

ai15615b

1. x = 3 ở chế độ thiết bị và x = 7 ở chế độ máy chủ.

Bản đồ CSR toàn cầu

Các thanh ghi này có sẵn ở cả chế độ máy chủ và thiết bị.

Bảng 201. Thanh ghi trạng thái và điều khiển toàn cầu lõi (CSR)

Địa chỉ bù
Từ viết tắt Tên đăng ký
đắp

OTG_FS_GOTGCTL Thanh ghi trạng thái và điều khiển 0x000OTG_FS (OTG_FS_GOTGCTL) trên trang 858

OTG_FS_GOTGINT Thanh ghi ngắt 0x004OTG_FS (OTG_FS_GOTGINT) trên trang 859

OTG_FS_GAHBCFG Thanh ghi cấu hình 0x008OTG_FS AHB (OTG_FS_GAHBCFG) trên trang 861

OTG_FS_GUSBCFG Thanh ghi cấu hình USB 0x00COTG_FS (OTG_FS_GUSBCFG) trên trang 862

OTG_FS_GRSTCTL Đăng ký đặt lại 0x010OTG_FS (OTG_FS_GRSTCTL) trên trang 864

RM0008 Phiên bản 21 853/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Bảng 201. Các thanh ghi trạng thái và điều khiển toàn cầu (CSR) cốt lõi (tiếp theo)

Địa chỉ bù
Từ viết tắt Tên đăng ký
đắp

OTG_FS_GINTSTS Thanh ghi ngắt lõi 0x014OTG_FS (OTG_FS_GINTSTS) trên trang 866

OOT_FS_GINTMSK Thanh ghi mặt nạ ngắt 0x018OTG_FS (OTG_FS_GINTMSK) trên trang 870

OTG_FS_GRXSTSR 0x01C
OTG_FS Nhận đọc trạng thái gỡ lỗi/đọc trạng tháiOTG và đăng ký pop

0x020 (OTG_FS_GRXSTSR/OTG_FS_GRXSTSP) trên trang 873


OOT_FS_GRXSTSP

OTG_FS_GRXFSIZ 0x024OTG_FS Nhận thanh ghi kích thước FIFO (OTG_FS_GRXFSIZ) trên trang 874

Thanh ghi kích thước FIFO truyền không định kỳ của máy chủ OG_FS
OTG_FS_HNPTXFSIZ/
0x028 (OTG_FS_HNPTXFSIZ)/Điểm cuối 0 Truyền kích thước FIFO
OTG_FS_DIEPTXF0(1)
(OTG_FS_DIEPTXF0)

Thanh ghi trạng thái hàng đợi/truyền FIFO không định kỳ của OG_FS
OOT_FS_HNPTXSTS 0x02C
(OTG_FS_HNPTXSTS) trên trang 875

Thanh ghi cấu hình lõi chung OG_FS (OTG_FS_GCCFG) trên trang 876
OTG_FS_GCCFG 0x038

OOT_FS_CID 0x03C Đăng ký ID lõiOTG_FS (OTG_FS_CID) trên trang 877

Thanh ghi kích thước FIFO truyền định kỳ của máy chủ OG_FS (OTG_FS_HPTXFSIZ)
OTG_FS_HPTXFSIZ 0x100
trên trang 877

0x104
Thiết bịOTG_FS IN điểm cuối truyền thanh ghi kích thước
OTG_FS_DIEPTXFx 0x108
FIFO (OTG_FS_DIEPTXFx) (x = 1..3, trong đó x là số FIFO) trên trang 877
0x10C

1. Nguyên tắc chung là sử dụngOTG_FS_HNPTXFSIZ cho chế độ máy chủ vàOTG_FS_DIEPTXF0 cho chế độ thiết bị.

Bản đồ CSR ở chế độ máy chủ

Các thanh ghi này phải được lập trình mỗi khi lõi thay đổi sang chế độ máy chủ.

Bảng 202. Thanh ghi trạng thái và điều khiển chế độ máy chủ (CSR)

địa chỉ
Từ viết tắt Tên đăng ký
bù đắp

OOT_FS_HCFG 0x400 Thanh ghi cấu hình máy chủOTG_FS (OTG_FS_HCFG) trên trang 878

OTG_FS_HFIR 0x404OTG_FS Thanh ghi khoảng thời gian khung máy chủ (OTG_FS_HFIR) trên trang 879

Thanh ghi số khung/thời gian khung còn lại của máy chủ OG_FS
OTG_FS_HFNUM 0x408
(OTG_FS_HFNUM) trên trang 879

OTG_FS_Host đăng ký trạng thái hàng đợi/truyền định kỳ FIFO


OTG_FS_HPTXSTS 0x410
(OTG_FS_HPTXSTS) trên trang 880

OTG_FS Lưu trữ tất cả các thanh ghi ngắt kênh (OTG_FS_HAINT) trên
OOT_FS_HAINT 0x414
trang 881

OTG_FS Lưu trữ tất cả các thanh ghi mặt nạ ngắt kênh (OTG_FS_HAINTMSK)
OOT_FS_HAINTMSK 0x418
trên trang 882

854/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Bảng 202. Các thanh ghi trạng thái và điều khiển chế độ máy chủ (CSR) (tiếp theo)

địa chỉ
Từ viết tắt Tên đăng ký
bù đắp

Thanh ghi trạng thái và điều khiển cổng máy chủ OTG_FS (OTG_FS_HPRT)
OOT_FS_HPRT 0x440
trên trang 882

0x500
0x520 Thanh ghi đặc tính kênh-x của máy chủ OG_FS (OTG_FS_HCCHARx) (x = 0..7,
OTG_FS_HCCHARx
... trong đó x = Channel_number) trên trang 885
0x5E0

Thanh ghi ngắt kênh x-x của máy chủ OG_FS (OTG_FS_HCINTx) (x = 0..7,
OTG_FS_HCINTx 0x508
trong đó x = Channel_number) trên trang 886

Thanh ghi mặt nạ ngắt kênh-x máy chủ OG_FS (OTG_FS_HCINTMSKx) (x = 0..7,
OTG_FS_HCINTMSKx 0x50C
trong đó x = Channel_number) trên trang 887

Thanh ghi kích thước truyền kênh x máy chủ-x (OTG_FS_HCTSIZx) (x =


OTG_FS_HCTSIZx 0x510
0..7, trong đó x = Channel_number) trên trang 888

Bản đồ CSR ở chế độ thiết bị

Các thanh ghi này phải được lập trình mỗi khi lõi thay đổi sang chế độ thiết bị.

Bảng 203. Thanh ghi trạng thái và điều khiển chế độ thiết bị

Bù lại
Từ viết tắt Tên đăng ký
Địa chỉ

OOT_FS_DCFG Thanh ghi cấu hình thiết bị 0x800OTG_FS (OTG_FS_DCFG) trên trang 889

OOT_FS_DCTL 0x804 Thanh ghi điều khiển thiết bịOTG_FS (OTG_FS_DCTL) trên trang 890

OOT_FS_DSTS 0x808 Thanh ghi trạng thái thiết bịOTG_FS (OTG_FS_DSTS) trên trang 891

Thiết bịOTG_FS IN thanh ghi mặt nạ ngắt chung điểm cuối


OTG_FS_DIEPMSK 0x810
(OTG_FS_DIEPMSK) trên trang 892

Thanh ghi mặt nạ ngắt chung điểm cuối thiết bị OOT_FS OUT
OTG_FS_DOEPMSK 0x814
(OTG_FS_DOEPMSK) trên trang 893

Thanh ghi ngắt tất cả các điểm cuối của thiết bịOTG_FS (OTG_FS_DAINT)
OOT_FS_DAINT 0x818
trên trang 894

Thanh ghi mặt nạ ngắt tất cả điểm cuối OG_FS (OTG_FS_DAINTMSK) trên trang
OOT_FS_DAINTMSK 0x81C
895

0x828 Thanh ghi thời gian xả VBUS của thiết bịOTG_FS (OTG_FS_DVBUSDIS) trên
OTG_FS_DVBUSDIS
trang 895

Thanh ghi thời gian xung VBUS của thiết bịOTG_FS (OTG_FS_DVBUSPULSE)
OTG_FS_DVBUSPULSE 0x82C
trên trang 895

Thiết bịOTG_FS Ở điểm cuối FIFO thanh ghi mặt nạ ngắt trống:
OTG_FS_DIEPEPMPSK 0x834
(OTG_FS_DIEPEPMPSK) trên trang 896

Thanh ghi điều khiển thiết bị OOT_FS IN điểm cuối 0


OTG_FS_DIEPCTL0 0x900
(OTG_FS_DIEPCTL0) trên trang 896

RM0008 Phiên bản 21 855/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Bảng 203. Thanh ghi trạng thái và điều khiển chế độ thiết bị (tiếp theo)

địa chỉ
Từ viết tắt Tên đăng ký
bù đắp

0x920
Điểm cuối x thanh ghi điều khiển của thiết bịOTG (OTG_FS_DIEPCTLx) (x =
OTG_FS_DIEPCTLx 0x940
1..3, trong đó x = Endpoint_number) trên trang 898
0x960

Thanh ghi ngắt điểm cuối-x của thiết bịOTG_FS (OTG_FS_DIEPINTx) (x =


OTG_FS_DIEPINTx 0x908
0..3, trong đó x = Endpoint_number) trên trang 905

Thiết bịOTG_FS IN điểm cuối 0 thanh ghi kích thước truyền


OTG_FS_DIEPTSIZ0 0x910
(OTG_FS_DIEPTSIZ0) trên trang 907

Thiết bịOTG_FS IN điểm cuối truyền thanh ghi trạng thái


OTG_FS_DTXFSTSx 0x918 FIFO (OTG_FS_DTXFSTSx) (x = 0..3, trong đó x = Endpoint_number)
trên trang 911

0x930
Thanh ghi kích thước truyền điểm cuối-x của thiết bịOTG_FS
OTG_FS_DIEPTSIZx 0x950 OUT endpoint-x (OTG_FS_DOEPTSIZx) (x = 1..3, trong đó x = Endpoint_number)
0x970 trên trang 911

Thanh ghi điều khiển điểm cuối 0 điều khiển thiết bị OOT_FS OUT
OOT_FS_DOEPCTL0 0xB00
(OTG_FS_DOEPCTL0) trên trang 901

0xB20
Điểm cuối x thanh ghi điều khiển của thiết bịOTG (OTG_FS_DIEPCTLx) (x =
OTG_FS_DOEPCTLx 0xB40
1..3, trong đó x = Endpoint_number) trên trang 898
0xB60

Thanh ghi ngắt điểm cuối-x của thiết bịOTG_FS (OTG_FS_DOEPINTx) (x =


OTG_FS_DOEPINTx 0xB08
0..3, trong đó x = Endpoint_number) trên trang 906

Thiết bị OOT_FS OUT điểm cuối 0 thanh ghi kích thước truyền
OTG_FS_DOEPTSIZ0 0xB10
(OTG_FS_DOEPTSIZ0) trên trang 909

0xB30
Thanh ghi kích thước truyền điểm cuối-x của thiết bịOTG_FS
OTG_FS_DOEPTSIZx 0xB50 OUT endpoint-x (OTG_FS_DOEPTSIZx) (x = 1..3, trong đó x = Endpoint_number)
0xB70 trên trang 911

Bản đồ đăng ký truy cập dữ liệu FIFO (DFIFO)

Các thanh ghi này, có sẵn ở cả chế độ máy chủ và thiết bị, được sử dụng để đọc hoặc ghi không gian FIFO
cho một điểm cuối hoặc một kênh cụ thể, theo một hướng nhất định. Nếu kênh máy chủ thuộc loại IN, FIFO
chỉ có thể được đọc trên kênh đó. Tương tự, nếu kênh máy chủ thuộc loại OUT, FIFO chỉ có thể được ghi
trên kênh.

Bảng 204. Sơ đồ thanh ghi truy cập dữ liệu FIFO (DFIFO)

Phần đăng ký truy cập FIFO Phạm vi địa chỉ Truy cập

Thiết bị IN Điểm cuối 0/Máy chủ OUT Kênh 0: Quyền truy cập ghi DFIFO w
0x1000–0x1FFC
Thiết bị OUT Điểm cuối 0/Máy chủ IN Kênh 0: Truy cập đọc DFIFO r

Thiết bị IN Điểm cuối 1/Máy chủ OUT Kênh 1: Quyền truy cập ghi DFIFO w
0x2000–0x2FFC
Thiết bị OUT Điểm cuối 1/Máy chủ IN Kênh 1: Truy cập đọc DFIFO r

856/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Bảng 204. Sơ đồ thanh ghi truy cập dữ liệu FIFO (DFIFO) (tiếp theo)

Phần đăng ký truy cập FIFO Phạm vi địa chỉ Truy cập

... ... ...

Thiết bị IN Điểm cuối x(1)/Host OUT Kênh x(1): Truy cập ghi DFIFO w
0xX000–0xXFFC
Thiết bị OUT Điểm cuối x(1)/Máy chủ IN Kênh x(1): Truy cập đọc DFIFO r

1. Trong đó x là 3 ở chế độ thiết bị và 7 ở chế độ máy chủ.

Bản đồ CSR kiểm soát nguồn và đồng hồ

Có một thanh ghi duy nhất cho nguồn điện và cổng đồng hồ. Nó có sẵn ở cả chế độ máy chủ và thiết bị.

Bảng 205. Các thanh ghi trạng thái và điều khiển cổng đồng hồ và nguồn

Tên đăng ký Từ viết tắt Địa chỉ offset: 0xE00–0xFFF

Thanh ghi điều khiển cổng nguồn và đồng hồOTG_FS_PCGCCTL 0xE00-0xE04

Kín đáo - 0xE05–0xFFF

RM0008 Phiên bản 21 857/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

28.16.2 Thanh ghi toàn cầuOTG_FS

Các thanh ghi này có sẵn ở cả chế độ máy chủ và thiết bị và không cần phải lập trình lại khi
chuyển đổi giữa các chế độ này.

Các giá trị bit trong mô tả thanh ghi được biểu thị dưới dạng nhị phân trừ khi có quy định khác.

Thanh ghi trạng thái và điều khiểnOTG_FS (OTG_FS_GOTGCTL)

Độ lệch địa chỉ: 0x000

Giá trị đặt lại: 0x0001 0000

Thanh ghiOTG_FS_GOTGCTL kiểm soát hành vi và phản ánh trạng thái của chức năngOTG của lõi.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

QRS
TCD
DLVSB

DLVSA

QRPNH
STDIC

NEPNHD

SCSGNH

SCSQRS
NEPNHSH
Kín đáo Kín đáo Kín đáo

r r r r rw rw rw r ồ r

Bit 31:20 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 19 BSVLD: Phiên B hợp lệ

Cho biết trạng thái thu phát của chế độ thiết bị.

0: Phiên B không hợp lệ.

1: Phiên B hợp lệ.

Ở chế độOTG, bạn có thể sử dụng bit này để xác định xem thiết bị đã được kết nối hay ngắt kết nối.

Lưu ý: Chỉ có thể truy cập ở chế độ thiết bị.

Bit 18 ASVLD: Phiên A hợp lệ

Cho biết trạng thái thu phát của chế độ máy chủ.

0: Phiên A không hợp lệ

1: Phiên A còn hiệu lực

Lưu ý: Chỉ có thể truy cập ở chế độ máy chủ.

Bit 17 DBCT: Thời gian gỡ lỗi dài/ngắn Biểu thị

thời gian gỡ lỗi của một kết nối được phát hiện.

0: Thời gian gỡ lỗi dài, được sử dụng cho các kết nối vật lý (100 ms + 2,5 µs)

1: Thời gian gỡ lỗi ngắn, được sử dụng cho kết nối mềm (2,5 µs)

Lưu ý: Chỉ có thể truy cập ở chế độ máy chủ.

Bit 16 CIDSTS: Trạng thái ID trình kết nối

Cho biết trạng thái ID trình kết nối trên một sự kiện kết nối.

0: Bộ điều khiểnOTG_FS ở chế độ thiết bị A 1: Bộ điều

khiểnOTG_FS ở chế độ thiết bị B

Lưu ý: Có thể truy cập được ở cả chế độ thiết bị và máy chủ.

Bit 15:12 Dành riêng, phải được giữ ở giá trị đặt lại.

858/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Bit 11 DHNPEN: Đã bật HNP của thiết bị

Ứng dụng sẽ đặt bit này khi nhận thành công lệnh SetFeature.SetHNPEnable từ máy chủ USB được kết nối.

0: HNP chưa được kích hoạt trong ứng dụng

1: HNP được kích hoạt trong ứng dụng

Lưu ý: Chỉ có thể truy cập ở chế độ thiết bị.

Bit 10 HSHNPEN: Bộ máy chủ cho phép HNP

Ứng dụng đặt bit này khi nó kích hoạt thành công HNP (sử dụng lệnh SetFeature.SetHNPEnable)

trên thiết bị được kết nối.


0: Bộ máy chủ HNP chưa được bật

1: Bộ máy chủ HNP được bật

Lưu ý: Chỉ có thể truy cập ở chế độ máy chủ.

Bit 9 HNPRQ: Yêu cầu HNP

Ứng dụng đặt bit này để bắt đầu yêu cầu HNP tới máy chủ USB được kết nối. Ứng dụng có thể xóa bit này

bằng cách ghi số 0 khi bit thay đổi trạng thái đàm phán thành công của máy chủ trong thanh ghiOTG_FS_GOTGINT

(bit HNSSCHG trongOTG_FS_GOTGINT) được đặt. Lõi xóa bit này khi bit HNSSCHG bị xóa.

0: Không có yêu cầu HNP

1: Yêu cầu HNP

Lưu ý: Chỉ có thể truy cập ở chế độ thiết bị.

Bit 8 HNGSCS: Đàm phán máy chủ thành công

Lõi thiết lập bit này khi đàm phán máy chủ thành công. Lõi xóa bit này khi bit Yêu cầu HNP (HNPRQ) trong

thanh ghi này được thiết lập.

0: Lỗi đàm phán máy chủ

1: Đàm phán chủ nhà thành công

Lưu ý: Chỉ có thể truy cập ở chế độ thiết bị.

Bit 7:2 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 1 SRQ: Yêu cầu phiên

Ứng dụng đặt bit này để bắt đầu yêu cầu phiên trên USB. Ứng dụng có thể xóa bit này bằng cách ghi số 0 khi

bit thay đổi trạng thái đàm phán thành công của máy chủ trong thanh ghiOTG_FS_GOTGINT (bit HNSSCHG

trongOTG_FS_GOTGINT) được đặt. Lõi xóa bit này khi bit HNSSCHG bị xóa.

Nếu bạn sử dụng giao diện bộ thu phát nối tiếp tốc độ đầy đủ USB 1.1 để bắt đầu yêu cầu phiên, ứng dụng phải

đợi cho đến khi VBUS xả xuống 0,2 V, sau khi bit Hợp lệ phiên B trong thanh ghi này (bit BSVLD
trongOTG_FS_GOTGCTL) bị xóa.

0: Không có yêu cầu phiên

1: Yêu cầu phiên

Lưu ý: Chỉ có thể truy cập ở chế độ thiết bị.

Bit 0 SRQSCS: Yêu cầu phiên thành công

Lõi thiết lập bit này khi bắt đầu yêu cầu phiên thành công.

0: Lỗi yêu cầu phiên

1: Yêu cầu phiên thành công

Lưu ý: Chỉ có thể truy cập ở chế độ thiết bị.

Thanh ghi ngắtOTG_FS (OTG_FS_GOTGINT)

Độ lệch địa chỉ: 0x04

Giá trị đặt lại: 0x0000 0000

RM0008 Phiên bản 21 859/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Ứng dụng sẽ đọc thanh ghi này bất cứ khi nào có ngắt OG và xóa các bit trong thanh ghi này để
xóa ngắt OOT.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

TEDES
TEDGNH
ENDCBD

GHCSSNH

GHCSSS
GHCOTDA
Kín đáo Kín đáo Kín đáo Res.

rc_ rc_ rc_ rc_ rc_ rc_


w1 w1 w1 w1 w1 w1

Bit 31:20 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 19 DBCDNE: Gỡ lỗi xong

Lõi đặt bit này khi quá trình gỡ lỗi hoàn tất sau khi thiết bị kết nối. Ứng dụng có thể bắt đầu tiến

hành thiết lập lại USB sau khi thấy sự gián đoạn này. Bit này chỉ hợp lệ khi bit có khả năng HNP hoặc SRP có khả

năng được đặt trong thanh ghiOTG_FS_GUSBCFG (bit HNPCAP hoặc bit SRPCAP trongOTG_FS_GUSBCFG, tương ứng).

Lưu ý: Chỉ có thể truy cập ở chế độ máy chủ.

Bit 18 ADTOCG: Thay đổi thời gian chờ của thiết bị A

Lõi đặt bit này để cho biết rằng thiết bị A đã hết thời gian chờ trong khi chờ thiết bị B kết nối.

Lưu ý: Có thể truy cập được ở cả chế độ thiết bị và máy chủ.

Bit 17 HNGDET: Đã phát hiện đàm phán máy chủ

Lõi đặt bit này khi phát hiện yêu cầu đàm phán máy chủ trên USB.

Lưu ý: Có thể truy cập được ở cả chế độ thiết bị và máy chủ.

Bit 16:10 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 9 HNSSCHG: Thay đổi trạng thái đàm phán thành công trên máy chủ

Phần lõi đặt bit này vào sự thành công hay thất bại của yêu cầu đàm phán máy chủ USB. Ứng dụng phải đọc

bit thành công đàm phán máy chủ của thanh ghiOTG_FS_GOTGCTL (HNGSCS trongOTG_FS_GOTGCTL) để kiểm tra thành công

hay thất bại.

Lưu ý: Có thể truy cập được ở cả chế độ thiết bị và máy chủ.

Bit 7:3 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 8 SRSSCHG: Thay đổi trạng thái thành công của yêu cầu phiên

Phần lõi thiết lập bit này về sự thành công hay thất bại của yêu cầu phiên. Ứng dụng phải đọc bit thành công

của yêu cầu phiên trong thanh ghiOTG_FS_GOTGCTL (bit SRQSCS trongOTG_FS_GOTGCTL) để kiểm tra thành công hay

thất bại.

Lưu ý: Có thể truy cập được ở cả chế độ thiết bị và máy chủ.

Bit 2 SEDET: Đã phát hiện kết thúc phiên

Lõi đặt bit này để chỉ ra rằng mức điện áp trên VBUS không còn hợp lệ đối với phiên B-Peripheral khi VBUS < 0,8 V.

Bit 1:0 Dự trữ, phải được giữ ở giá trị đặt lại.

860/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Thanh ghi cấu hình AHB-OTG_FS_GAHBCFG (OTG_FS_GAHBCFG)

Độ lệch địa chỉ: 0x008

Giá trị đặt lại: 0x0000 0000

Thanh ghi này có thể được sử dụng để cấu hình lõi sau khi bật nguồn hoặc thay đổi chế độ. Thanh ghi
này chủ yếu chứa các tham số cấu hình liên quan đến hệ thống AHB. Không thay đổi thanh ghi này sau lần
lập trình đầu tiên. Ứng dụng phải lập trình thanh ghi này trước khi bắt đầu bất kỳ giao dịch nào
trên AHB hoặc USB.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

LVLEFXT

KSMTNIG
LVLEFXTP
Kín đáo Kín đáo

ồ ồ rw

Bit 31:9 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 8 PTXFELVL: Mức trống TxFIFO định kỳ

Cho biết khi nào bit ngắt TxFIFO trống định kỳ trong thanh ghiOT_FS_GINTSTS (bit PTXFE
trongOTG_FS_GINTSTS) được kích hoạt.
0: Ngắt PTXFE (trongOTG_FS_GINTSTS) cho biết TxFIFO định kỳ trống một nửa
1: Ngắt PTXFE (trongOTG_FS_GINTSTS) chỉ ra rằng TxFIFO định kỳ hoàn toàn trống

Lưu ý: Chỉ có thể truy cập ở chế độ máy chủ.

Bit 7 TXFELVL: Mức trống TxFIFO

Trong chế độ thiết bị, bit này cho biết khi điểm cuối IN truyền ngắt trống FIFO (TXFE
trongOTG_FS_DIEPINTx.) được kích hoạt.
0: ngắt TXFE (trongOTG_FS_DIEPINTx) chỉ ra rằng TxFIFO điểm cuối IN trống một nửa

1: ngắt TXFE (trongOTG_FS_DIEPINTx) chỉ ra rằng TxFIFO điểm cuối IN hoàn toàn trống

Trong chế độ máy chủ, bit này cho biết khi nào ngắt trống Tx FIFO không định kỳ (bit NPTXFE
trongOTG_FS_GINTSTS) được kích hoạt:
0: ngắt NPTXFE (trongOTG_FS_GINTSTS) chỉ ra rằng Tx FIFO không định kỳ trống một nửa

1: ngắt NPTXFE (trongOTG_FS_GINTSTS) chỉ ra rằng Tx FIFO không định kỳ hoàn toàn trống

Bit 6:1 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 0 GINTMSK: Mặt nạ ngắt toàn cục

Ứng dụng sử dụng bit này để che hoặc vạch mặt xác nhận dòng ngắt đối với chính nó.
Bất kể cài đặt của bit này, các thanh ghi trạng thái ngắt đều được lõi cập nhật.
0: Che giấu xác nhận ngắt đối với ứng dụng.
1: Vạch mặt xác nhận ngắt đối với ứng dụng.
Lưu ý: Có thể truy cập được ở cả chế độ thiết bị và máy chủ.

RM0008 Phiên bản 21 861/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Thanh ghi cấu hình USBOTG_FS (OTG_FS_GUSBCFG)

Độ lệch địa chỉ: 0x00C

Giá trị đặt lại: 0x0000 0A00

Thanh ghi này có thể được sử dụng để định cấu hình lõi sau khi bật nguồn hoặc thay đổi sang chế độ máy
chủ hoặc chế độ thiết bị. Nó chứa các thông số cấu hình liên quan đến USB và USB-PHY. Ứng dụng phải
lập trình thanh ghi này trước khi bắt đầu bất kỳ giao dịch nào trên AHB hoặc USB. Không thực hiện thay
đổi đối với thanh ghi này sau lần lập trình đầu tiên.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 số 8 7 6 5 4 3 2 1 0

P
TRDT TOCAL

ACPNH
Kín đáo Res. Kín đáo
DOMDF

DOMHF

ẬL
V
TKPXTC

PACPRS


ồ ồ ồ rw ồ ồ r rw

Bit 31 CTXPKT: Gói Tx bị hỏng

Bit này chỉ dành cho mục đích gỡ lỗi. Không bao giờ đặt bit này thành 1.

Lưu ý: Có thể truy cập được ở cả chế độ thiết bị và máy chủ.

Bit 30 FDMOD: Buộc chế độ thiết bị

Việc ghi số 1 vào bit này sẽ buộc lõi chuyển sang chế độ thiết bị bất kể chân đầu vàoOTG_FS_ID.

0: Chế độ bình thường

1: Buộc chế độ thiết bị

Sau khi thiết lập bit lực, ứng dụng phải đợi ít nhất 25 ms trước khi thay đổi có hiệu lực.

Lưu ý: Có thể truy cập được ở cả chế độ thiết bị và máy chủ.

Bit 29 FHMOD: Buộc chế độ máy chủ

Việc ghi số 1 vào bit này sẽ buộc lõi chuyển sang chế độ máy chủ bất kể chân đầu vàoOTG_FS_ID.
0: Chế độ bình thường

1: Buộc chế độ máy chủ

Sau khi thiết lập bit lực, ứng dụng phải đợi ít nhất 25 ms trước khi thay đổi có hiệu lực.

Lưu ý: Có thể truy cập được ở cả chế độ thiết bị và máy chủ.

Bit 28:14 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 13:10 TRDT: Thời gian quay vòng USB

Các bit này cho phép thiết lập thời gian quay vòng trong đồng hồ PHY. Chúng phải được cấu hình theo Bảng

206: giá trị TRDT, tùy thuộc vào tần số AHB của ứng dụng. Giá trị TRDT cao hơn cho phép kéo dài thời gian phản hồi

của USB sang mã thông báo IN để bù cho độ trễ truy cập đọc AHB dài hơn vào FIFO dữ liệu.

Lưu ý: Chỉ có thể truy cập ở chế độ thiết bị.

Bit 9 HNPCAP: Có khả năng HNP

Ứng dụng sử dụng bit này để kiểm soát khả năng HNP của bộ điều khiểnOTG_FS.

0: Khả năng HNP không được kích hoạt.

1: Khả năng HNP được kích hoạt.

Lưu ý: Có thể truy cập được ở cả chế độ thiết bị và máy chủ.

862/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Bit 8 SRPCAP: Có khả năng SRP

Ứng dụng sử dụng bit này để kiểm soát khả năng SRP của bộ điều khiểnOTG_FS. Nếu lõi hoạt động
như một thiết bị B không có khả
năng SRP, thì nó không thể yêu cầu thiết bị A (máy chủ) được kết nối kích hoạt VBUS và
bắt đầu phiên.

0: Khả năng SRP không được kích hoạt.

1: Khả năng SRP được bật.


Lưu ý: Có thể truy cập được ở cả chế độ thiết bị và máy chủ.

Bit 7 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 6 PHYSEL: Chọn bộ thu phát nối tiếp tốc độ tối đa

Bit này luôn là 1 với quyền truy cập chỉ đọc.

Bit 5:3 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 2:0 TOCAL: Hiệu chỉnh thời gian chờ FS

Số lượng đồng hồ PHY mà các chương trình ứng dụng trong trường này được thêm vào khoảng
thời gian chờ giữa các gói tốc độ tối đa trong lõi để tính đến bất kỳ độ trễ bổ sung
nào do PHY đưa ra. Điều này có thể được yêu cầu, bởi vì độ trễ do PHY đưa ra trong việc tạo
điều kiện trạng thái đường truyền có thể khác nhau tùy theo PHY.
Giá trị thời gian chờ tiêu chuẩn USB để hoạt động ở tốc độ tối đa là 16 đến 18 lần bit (bao gồm).
Ứng dụng phải lập trình trường này dựa trên tốc độ liệt kê. Số lần bit được thêm vào trên mỗi
đồng hồ PHY là 0,25 lần bit.

Bảng 206. Giá trị TRDT

Dải tần số AHB (MHz)


Giá trị tối thiểu TRDT
Tối thiểu. Tối đa

14.2 15 0xF

15 16 0xE

16 17.2 0xD

17.2 18,5 0xC

18,5 20 0xB

20 21.8 0xA

21.8 24 0x9

24 27,5 0x8

27,5 32 0x7

32 - 0x6

RM0008 Phiên bản 21 863/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Đăng ký đặt lạiOTG_FS (OTG_FS_GRSTCTL)


Độ lệch địa chỉ: 0x010

Giá trị đặt lại: 0x8000 0000

Ứng dụng sử dụng thanh ghi này để thiết lập lại các tính năng phần cứng khác nhau bên trong lõi.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

TXFNUM

TSRCF

TSRSH

TSRSC
LDIBHA

HSLFFXR
HSLFFXT
Kín đáo

íđ

o K
r rw rs rs rs rs rs

Bit 31 AHBIDL: AHB chính không hoạt động

Cho biết máy trạng thái chính AHB đang ở trạng thái Không hoạt động.

Lưu ý: Có thể truy cập được ở cả chế độ thiết bị và máy chủ.

Bit 30:11 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 10:6 TXFNUM: Số TxFIFO

Đây là số FIFO phải được xóa bằng bit TxFIFO Flush. Trường này không được thay đổi cho đến khi lõi xóa bit TxFIFO

Flush.
00000:

– Xả TxFIFO không định kỳ ở chế độ máy chủ

– Xả Tx FIFO 0 ở chế độ thiết bị

00001:

– Xả TxFIFO định kỳ ở chế độ máy chủ

– Xả TXFIFO 1 ở chế độ thiết bị

00010: Xả TXFIFO 2 ở chế độ thiết bị

...

00101: TXFIFO 15 tuôn ra ở chế độ thiết bị 10000:

Xóa tất cả các FIFO truyền ở chế độ thiết bị hoặc máy chủ.

Lưu ý: Có thể truy cập được ở cả chế độ thiết bị và máy chủ.

Bit 5 TXFFLSH: Xả TxFIFO

Bit này xóa một cách có chọn lọc một hoặc tất cả các FIFO truyền, nhưng không thể làm như vậy nếu lõi đang ở giữa
một giao dịch.

Ứng dụng chỉ phải ghi bit này sau khi kiểm tra xem lõi không ghi vào TxFIFO hay đọc từ TxFIFO. Xác minh bằng

cách sử dụng các sổ đăng ký này:

Đọc—Ngắt hiệu quả NAK đảm bảo lõi không đọc từ FIFO

Ghi—bit AHBIDL trongOTG_FS_GRSTCTL đảm bảo lõi không ghi bất cứ thứ gì vào FIFO.

Lưu ý: Có thể truy cập được ở cả chế độ thiết bị và máy chủ.

Bit 4 RXFFLSH: Xả RxFIFO

Ứng dụng có thể xóa toàn bộ RxFIFO bằng cách sử dụng bit này, nhưng trước tiên phải đảm bảo rằng lõi không ở giữa
giao dịch.

Ứng dụng chỉ phải ghi vào bit này sau khi kiểm tra xem lõi không đọc từ RxFIFO hay ghi vào RxFIFO.

Ứng dụng phải đợi cho đến khi bit bị xóa trước khi thực hiện bất kỳ thao tác nào khác. Bit này yêu cầu 8 đồng hồ

(chậm nhất trong đồng hồ PHY hoặc AHB) để xóa.

Lưu ý: Có thể truy cập được ở cả chế độ thiết bị và máy chủ.

Bit 3 Dành riêng, phải được giữ ở giá trị đặt lại.

864/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Bit 2 FCRST: Đặt lại bộ đếm khung máy chủ

Ứng dụng ghi bit này để thiết lập lại bộ đếm số khung bên trong lõi. Khi bộ đếm khung được đặt lại, SOF

tiếp theo được gửi đi bởi lõi có số khung là 0.

Lưu ý: Chỉ có thể truy cập ở chế độ máy chủ.

Bit 1 HSRST: Thiết lập lại mềm HCLK

Ứng dụng sử dụng bit này để xóa logic điều khiển trong miền Đồng hồ AHB. Chỉ các đường ống Miền đồng hồ
AHB được đặt lại.
FIFO không bị xóa với bit này.

Tất cả các máy trạng thái trong miền đồng hồ AHB được đặt lại về trạng thái Không hoạt động sau khi chấm
dứt các giao dịch trên AHB, theo giao thức.

Các bit điều khiển CSR được sử dụng bởi các máy trạng thái miền đồng hồ AHB sẽ bị xóa.

Để xóa ngắt này, các bit mặt nạ trạng thái kiểm soát trạng thái ngắt và được tạo bởi máy trạng thái miền đồng
hồ AHB sẽ bị xóa.

Vì các bit trạng thái ngắt không bị xóa nên ứng dụng có thể nhận trạng thái của bất kỳ sự kiện cốt lõi nào
xảy ra sau khi đặt bit này.

Đây là bit tự xóa mà lõi sẽ xóa sau khi tất cả logic cần thiết được đặt lại trong lõi. Việc này có thể mất
vài đồng hồ, tùy thuộc vào trạng thái hiện tại của lõi.

Lưu ý: Có thể truy cập được ở cả chế độ thiết bị và máy chủ.

Bit 0 CSRST: Thiết lập lại lõi mềm

Đặt lại miền HCLK và PCLK như sau:

Xóa các ngắt và tất cả các bit thanh ghi CSR ngoại trừ các bit sau:

– Bit RSTPDMODL trongOTG_FS_PCGCCTL

– Bit GAYEHCLK trongOTG_FS_PCGCCTL

– Bit PWRCLMP trongOTG_FS_PCGCCTL

– Bit STPPCLK trongOTG_FS_PCGCCTL

– Bit FSLSPCS trongOTG_FS_HCFG

– Bit DSPD trongOTG_FS_DCFG

Tất cả các máy trạng thái mô-đun (ngoại trừ đơn vị phụ thuộc AHB) được đặt lại về trạng thái Không hoạt
động và tất cả các FIFO truyền và FIFO nhận đều bị xóa.

Mọi giao dịch trên AHB Master sẽ bị chấm dứt sớm nhất có thể, sau khi hoàn thành giai đoạn dữ liệu cuối cùng
của quá trình chuyển AHB. Mọi giao dịch trên USB đều bị chấm dứt ngay lập tức.

Ứng dụng có thể ghi vào bit này bất cứ lúc nào nó muốn thiết lập lại lõi. Đây là bit tự xóa và lõi sẽ xóa bit
này sau khi tất cả logic cần thiết được đặt lại trong lõi, việc này có thể mất vài đồng hồ, tùy thuộc vào
trạng thái hiện tại của lõi. Khi bit này đã bị xóa, phần mềm phải đợi ít nhất 3 đồng hồ PHY trước khi truy
cập miền PHY (độ trễ đồng bộ hóa). Phần mềm cũng phải kiểm tra xem bit 31 trong thanh ghi này
có được đặt thành 1 (AHB Master không hoạt động) trước khi bắt đầu bất kỳ thao tác nào.

Thông thường, thiết lập lại phần mềm được sử dụng trong quá trình phát triển phần mềm và cả khi bạn
thay đổi động các bit lựa chọn PHY trong các thanh ghi cấu hình USB được liệt kê ở trên.
Khi bạn thay đổi PHY, đồng hồ tương ứng cho PHY sẽ được chọn và sử dụng trong miền PHY. Khi đồng hồ mới
được chọn, miền PHY phải được đặt lại để hoạt động bình thường.

Lưu ý: Có thể truy cập được ở cả chế độ thiết bị và máy chủ.

RM0008 Phiên bản 21 865/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Thanh ghi ngắt lõiOTG_FS (OTG_FS_GINTSTS)

Độ lệch địa chỉ: 0x014

Giá trị đặt lại: 0x0400 0020

Thanh ghi này làm gián đoạn ứng dụng cho các sự kiện cấp hệ thống ở chế độ hiện tại (chế độ thiết bị
hoặc chế độ máy chủ).

Một số bit trong thanh ghi này chỉ hợp lệ ở chế độ máy chủ, trong khi các bit khác chỉ hợp lệ ở chế độ
thiết bị. Thanh ghi này cũng chỉ ra chế độ hiện tại. Để xóa các bit trạng thái ngắt của loại rc_w1, ứng
dụng phải ghi 1 vào bit.

Các ngắt trạng thái FIFO ở dạng chỉ đọc; khi phần mềm đọc hoặc ghi vào FIFO trong khi phục vụ các ngắt
này, các điều kiện ngắt FIFO sẽ tự động bị xóa.

Ứng dụng phải xóa thanh ghiOTG_FS_GINTSTS khi khởi tạo trước khi vạch mặt bit ngắt để tránh
bất kỳ ngắt nào được tạo trước khi khởi tạo.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

FOS
FPOE
TNICH

DOMC
TNIPEI
EFXTP

PSUSE

LVLFXR
TNIPEO

TNITO
TNIQRS

EFXTPN
HBK

TSRBSU
TNIUKW

ÁI

RFXIOSII
íđ
K
TNITRPH
CỆ


T

PRDOOSI
GHCSDIC

PSUSBSU

FFEKANIG
ENDMUNE

FFEKANOG
íđ
K

íđ
K

íđ
K


o

o

FNÁ
RHN
/G Ô PT
H
O I
K

rc_w1 r r r Res. rc_w1 r r rc_w1 r r r r r r

Bit 31 WKUPINT: Phát hiện ngắt tiếp tục/đánh thức từ xa

Ở chế độ thiết bị, ngắt này được xác nhận khi phát hiện thấy sơ yếu lý lịch trên USB. Ở chế độ máy chủ,
ngắt này được xác nhận khi phát hiện thấy hoạt động đánh thức từ xa trên USB.

Lưu ý: Có thể truy cập được ở cả chế độ thiết bị và máy chủ.

Bit 30 SRQINT: Yêu cầu phiên/ngắt phát hiện phiên mới

Ở chế độ máy chủ, ngắt này được xác nhận khi phát hiện yêu cầu phiên từ thiết bị.

Trong chế độ thiết bị, ngắt này được xác nhận khi VBUS nằm trong phạm vi hợp lệ cho thiết bị ngoại vi B. Có
thể truy cập ở cả chế độ thiết bị và máy chủ.

Bit 29 DISCINT: Ngắt kết nối ngắt được phát hiện

Khẳng định khi phát hiện ngắt kết nối thiết bị.

Lưu ý: Chỉ có thể truy cập ở chế độ máy chủ.

Bit 28 CIDSCG: Thay đổi trạng thái ID trình kết nối

Lõi đặt bit này khi có thay đổi về trạng thái ID trình kết nối.

Lưu ý: Có thể truy cập được ở cả chế độ thiết bị và máy chủ.

Bit 27 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 26 PTXFE: TxFIFO định kỳ trống

Được xác nhận khi FIFO truyền định kỳ trống một nửa hoặc hoàn toàn trống và có khoảng trống cho ít nhất
một mục được ghi vào hàng đợi yêu cầu định kỳ. Trạng thái trống một nửa hoặc hoàn toàn được xác
định bởi bit mức trống TxFIFO định kỳ trong thanh ghiOT_FS_GAHBCFG (bit PTXFELVL trongOTG_FS_GAHBCFG).

Lưu ý: Chỉ có thể truy cập ở chế độ máy chủ.

866/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Bit 25 HCINT: Ngắt kênh máy chủ

Lõi đặt bit này để chỉ ra rằng một ngắt đang chờ xử lý trên một trong các kênh của lõi (ở chế độ máy chủ).
Ứng dụng phải đọc thanh ghiOTG_FS_HAINT để xác định số chính xác của kênh xảy ra gián đoạn, sau đó đọc
thanh ghiOTG_FS_HCINTx tương ứng để xác định nguyên nhân chính xác gây ra gián đoạn. Ứng dụng

phải xóa bit trạng thái thích hợp trong thanh ghiOTG_FS_HCINTx để xóa bit này.

Lưu ý: Chỉ có thể truy cập ở chế độ máy chủ.

Bit 24 HPRTINT: Ngắt cổng máy chủ

Lõi đặt bit này để biểu thị sự thay đổi trạng thái cổng của một trong các cổng bộ điều khiểnOTG_FS ở chế
độ máy chủ. Ứng dụng phải đọc thanh ghiOT_FS_HPRT để xác định chính xác sự kiện gây ra gián đoạn này. Ứng
dụng phải xóa bit trạng thái thích hợp trong thanh ghiOTG_FS_HPRT để xóa bit này.

Lưu ý: Chỉ có thể truy cập ở chế độ máy chủ.

Bit 23:22 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 21 IPXFR: Chuyển định kỳ không đầy đủ

Trong chế độ máy chủ, lõi đặt bit ngắt này khi có các giao dịch định kỳ chưa hoàn tất vẫn đang chờ xử lý,

được lên lịch cho khung hiện tại.

INCOMPISOOUT: Truyền OUT đẳng thời không đầy đủ

Trong chế độ thiết bị, lõi thiết lập ngắt này để chỉ ra rằng có ít nhất một điểm cuối OUT đẳng thời mà quá
trình truyền chưa hoàn thành trong khung hiện tại. Ngắt này được xác nhận cùng với bit Kết thúc ngắt khung

định kỳ (EOPF) trong thanh ghi này.

Bit 20 IISOIXFR: Truyền IN đẳng thời không đầy đủ

Lõi thiết lập ngắt này để chỉ ra rằng có ít nhất một điểm cuối IN đẳng thời mà quá trình truyền chưa hoàn

thành trong khung hiện tại. Ngắt này được xác nhận cùng với bit Kết thúc ngắt khung định kỳ (EOPF) trong
thanh ghi này.

Lưu ý: Chỉ có thể truy cập ở chế độ thiết bị.

Bit 19 OEPINT: Ngắt điểm cuối OUT

Lõi đặt bit này để chỉ ra rằng một ngắt đang chờ xử lý trên một trong các điểm cuối OUT của lõi (ở chế độ
thiết bị). Ứng dụng phải đọc thanh ghiOTG_FS_DAINT để xác định số lượng chính xác của điểm cuối OUT
nơi xảy ra gián đoạn, sau đó đọc thanh ghiOTG_FS_DOEPINTx tương ứng để xác định nguyên nhân chính xác của

gián đoạn. Ứng dụng phải xóa bit trạng thái thích hợp trong thanh ghiOTG_FS_DOEPINTx tương ứng để xóa bit
này.

Lưu ý: Chỉ có thể truy cập ở chế độ thiết bị.

Bit 18 IEPINT: Ngắt điểm cuối IN

Lõi đặt bit này để chỉ ra rằng một ngắt đang chờ xử lý trên một trong các điểm cuối IN của lõi (ở chế độ
thiết bị). Ứng dụng phải đọc thanh ghiOTG_FS_DAINT để xác định số lượng chính xác của điểm cuối IN nơi xảy
ra gián đoạn, sau đó đọc thanh ghiOTG_FS_DIEPINTx tương ứng để xác định nguyên nhân chính xác gây ra

gián đoạn.
Ứng dụng phải xóa bit trạng thái thích hợp trong thanh ghiOTG_FS_DIEPINTx tương ứng
để xóa bit này.

Lưu ý: Chỉ có thể truy cập ở chế độ thiết bị.

Bit 17:16 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 15 EOPF: Kết thúc ngắt khung định kỳ

Cho biết rằng khoảng thời gian được chỉ định trong trường khoảng thời gian khung định kỳ của thanh

ghiOTG_FS_DCFG (bit PFIVL trongOTG_FS_DCFG) đã đạt đến khung hiện tại.

Lưu ý: Chỉ có thể truy cập ở chế độ thiết bị.

RM0008 Phiên bản 21 867/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Bit 14 ISOODRP: Gói OUT đẳng thời bị ngắt

Lõi thiết lập bit này khi nó không ghi được gói OUT đẳng thời vào RxFIFO vì RxFIFO không có đủ
không gian để chứa gói có kích thước tối đa cho điểm cuối OUT đẳng thời.

Lưu ý: Chỉ có thể truy cập ở chế độ thiết bị.

Bit 13 ENUMDNE: Đếm xong

Lõi đặt bit này để cho biết việc liệt kê tốc độ đã hoàn tất. Ứng dụng phải đọc thanh ghiOTG_FS_DSTS để
đạt được tốc độ liệt kê.

Lưu ý: Chỉ có thể truy cập ở chế độ thiết bị.

Bit 12 USBRST: Đặt lại USB

Lõi đặt bit này để cho biết rằng thiết lập lại được phát hiện trên USB.

Lưu ý: Chỉ có thể truy cập ở chế độ thiết bị.

Bit 11 USBSUSP: Tạm dừng USB

Lõi đặt bit này để chỉ ra rằng đã phát hiện thấy trạng thái tạm dừng trên USB. Lõi chuyển sang trạng
thái Tạm dừng khi không có hoạt động nào trên các dòng dữ liệu trong khoảng thời gian 3 ms.

Lưu ý: Chỉ có thể truy cập ở chế độ thiết bị.

Bit 10 ESUSP: Đình chỉ sớm


Lõi đặt bit này để cho biết rằng trạng thái Không hoạt động đã được phát hiện trên USB trong 3 mili giây.

Lưu ý: Chỉ có thể truy cập ở chế độ thiết bị.

Bit 9:8 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 7 GONAKEFF: Global OUT NAK có hiệu lực

Cho biết rằng Đặt bit OUT NAK toàn cầu trong thanh ghiOTG_FS_DCTL (bit SGONAK trongOTG_FS_DCTL), do
ứng dụng đặt, đã có hiệu lực trong lõi. Bit này có thể được xóa bằng cách ghi bit Clear Global OUT NAK
vào thanh ghiOTG_FS_DCTL (bit CGONAK trongOTG_FS_DCTL).

Lưu ý: Chỉ có thể truy cập ở chế độ thiết bị.

Bit 6 GINAKEFF: NAK toàn cầu không định kỳ có hiệu lực

Cho biết rằng Đặt bit IN NAK không định kỳ toàn cục trong thanh ghiOTG_FS_DCTL (bit SGINAK
trongOTG_FS_DCTL), do ứng dụng đặt, đã có hiệu lực trong lõi. Tức là lõi đã lấy mẫu bit Global IN NAK do
ứng dụng đặt. Bit này có thể được xóa bằng cách xóa bit IN NAK không định kỳ toàn cục trong thanh
ghiOTG_FS_DCTL (bit CGINAK trongOTG_FS_DCTL).

Sự gián đoạn này không nhất thiết có nghĩa là việc bắt tay NAK được gửi đi trên USB. Bit STALL được ưu
tiên hơn bit NAK.

Lưu ý: Chỉ có thể truy cập ở chế độ thiết bị.

Bit 5 NPTXFE: TxFIFO không định kỳ trống

Ngắt này được xác nhận khi TxFIFO không định kỳ trống một nửa hoặc hoàn toàn trống và có khoảng trống
cho ít nhất một mục được ghi vào hàng đợi yêu cầu truyền không định kỳ. Trạng thái trống một nửa hoặc
hoàn toàn được xác định bởi bit mức trống TxFIFO không định kỳ trong thanh ghiOT_FS_GAHBCFG (bit TXFELVL
trongOTG_FS_GAHBCFG).

Lưu ý: Chỉ có thể truy cập được ở chế độ máy chủ.

Bit 4 RXFLVL: RxFIFO không trống

Cho biết có ít nhất một gói đang chờ đọc từ RxFIFO.


Lưu ý: Có thể truy cập được ở cả chế độ máy chủ và thiết bị.

868/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Bit 3 SOF: Bắt đầu khung

Ở chế độ máy chủ, lõi đặt bit này để chỉ ra rằng SOF (FS) hoặc Keep-Alive (LS) được truyền trên USB. Ứng

dụng phải ghi số 1 vào bit này để xóa ngắt.

Ở chế độ thiết bị, trong lõi đặt bit này để cho biết rằng mã thông báo SOF đã được nhận trên USB. Ứng dụng có

thể đọc thanh ghi Trạng thái thiết bị để lấy số khung hiện tại. Ngắt này chỉ được nhìn thấy khi lõi hoạt

động ở FS.

Lưu ý: Có thể truy cập được ở cả chế độ máy chủ và thiết bị.

Bit 2 OOTINT: ngắt otg

Lõi thiết lập bit này để biểu thị một sự kiện giao thứcOTG. Ứng dụng phải đọc thanh ghi Trạng thái ngắt quãng của

hệ thống (OTG_FS_GOTGINT) để xác định chính xác sự kiện gây ra gián đoạn này. Ứng dụng phải xóa bit trạng thái

thích hợp trong thanh ghiOTG_FS_GOTGINT để xóa bit này.

Lưu ý: Có thể truy cập được ở cả chế độ máy chủ và thiết bị.

Bit 1 MMIS: Ngắt không khớp chế độ

Lõi thiết lập bit này khi ứng dụng đang cố truy cập:

– Thanh ghi chế độ máy chủ, khi lõi hoạt động ở chế độ thiết bị

– Thanh ghi chế độ thiết bị, khi lõi hoạt động ở chế độ máy chủ

Việc truy cập đăng ký được hoàn thành trên AHB với phản hồi OK, nhưng bị lõi bên trong bỏ qua và không ảnh

hưởng đến hoạt động của lõi.

Lưu ý: Có thể truy cập được ở cả chế độ máy chủ và thiết bị.

Bit 0 CMOD: Chế độ hoạt động hiện tại

Cho biết chế độ hiện tại.

0: Chế độ thiết bị

1: Chế độ máy chủ

Lưu ý: Có thể truy cập được ở cả chế độ máy chủ và thiết bị.

RM0008 Phiên bản 21 869/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Thanh ghi mặt nạ ngắt Otto_FS (OTG_FS_GINTMSK)

Độ lệch địa chỉ: 0x018

Giá trị đặt lại: 0x0000 0000

Thanh ghi này hoạt động với thanh ghi ngắt Core để làm gián đoạn ứng dụng. Khi một bit ngắt
bị che đi, ngắt liên quan đến bit đó sẽ không được tạo ra. Tuy nhiên, bit đăng ký Ngắt lõi
(OTG_FS_GINTSTS) tương ứng với ngắt đó vẫn được đặt.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MIUW

MFOS
MITRP

TNIPEI
MIQRS

MSIMM
MFPOE
TNIPEO

TNITO
HBK

TSRBSU
MEFXTP
ÁI

MPSUSE
CỆ
T

MLVLFXR
MEFXTPN
MRFXIOSII

MPRDOOSI
MGHCSDIC

MPSUSBSU
MENDMUNE

MFFEKANIG
íđ
K

íđ
K

íđ
K

íđ
K

íđ
K


MFFEKANOG
o

o
/X
MRF RO
MO XI
FS PI

rw rw rw rw ồ ồ ồ rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31 WUIM: Mặt nạ ngắt được phát hiện tiếp tục/đánh thức từ xa

0: Ngắt ẩn
1: Ngắt không được che giấu

Lưu ý: Có thể truy cập được ở cả chế độ máy chủ và thiết bị.

Bit 30 SRQIM: Yêu cầu phiên/mặt nạ ngắt được phát hiện phiên mới

0: Ngắt ẩn
1: Ngắt không được che giấu

Lưu ý: Có thể truy cập được ở cả chế độ máy chủ và thiết bị.

Bit 29 DISCINT: Ngắt kết nối mặt nạ ngắt được phát hiện

0: Ngắt ẩn
1: Ngắt không được che giấu

Lưu ý: Chỉ có thể truy cập ở chế độ thiết bị.

Bit 28 CIDSCHGM: Mặt nạ thay đổi trạng thái ID trình kết nối

0: Ngắt ẩn
1: Ngắt không được che giấu

Lưu ý: Có thể truy cập được ở cả chế độ máy chủ và thiết bị.

Bit 27 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 26 PTXFEM: Mặt nạ trống TxFIFO định kỳ

0: Ngắt ẩn
1: Ngắt không được che giấu

Lưu ý: Chỉ có thể truy cập ở chế độ máy chủ.

Bit 25 HCIM: Mặt nạ ngắt kênh máy chủ

0: Ngắt ẩn
1: Ngắt không được che giấu

Lưu ý: Chỉ có thể truy cập ở chế độ máy chủ.

Bit 24 PRTIM: Mặt nạ ngắt cổng máy chủ

0: Ngắt ẩn
1: Ngắt không được che giấu

Lưu ý: Chỉ có thể truy cập ở chế độ máy chủ.

870/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Bit 23:22 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 21 IPXFRM: Mặt nạ truyền định kỳ không đầy đủ

0: Ngắt ẩn 1: Ngắt

không ẩn Lưu ý: Chỉ có

thể truy cập ở chế độ máy chủ.

IISOOXFRM: Mặt nạ chuyển OUT đẳng thời không hoàn chỉnh

0: Ngắt ẩn 1: Ngắt

không ẩn Lưu ý: Chỉ có

thể truy cập ở chế độ thiết bị.

Bit 20 IISOIXFRM: Mặt nạ truyền IN đẳng thời không hoàn chỉnh 0: Ngắt bị

che 1: Ngắt không được

che mặt Lưu ý: Chỉ có thể

truy cập được ở chế độ thiết bị.

Bit 19 OEPINT: Mặt nạ ngắt điểm cuối OUT 0: Ngắt bị che

1: Ngắt không được che

mặt Lưu ý: Chỉ có thể

truy cập ở chế độ thiết bị.

Bit 18 IEPINT: Mặt nạ ngắt điểm cuối IN

0: Ngắt ẩn 1: Ngắt

không ẩn Lưu ý: Chỉ có

thể truy cập ở chế độ thiết bị.

Bit 17:16 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 15 EOPFM: Kết thúc mặt nạ ngắt khung định kỳ 0: Ngắt bị che

1: Ngắt không được che

mặt Lưu ý: Chỉ có thể

truy cập ở chế độ thiết bị.

Bit 14 ISOODRPM: Mặt nạ ngắt gói OUT bị loại bỏ đồng bộ

0: Ngắt ẩn 1: Ngắt

không ẩn Lưu ý: Chỉ có

thể truy cập ở chế độ thiết bị.

Bit 13 ENUMDNEM: Mặt nạ đếm được thực hiện

0: Ngắt ẩn 1: Ngắt

không ẩn Lưu ý: Chỉ có

thể truy cập ở chế độ thiết bị.

Bit 12 USBRST: Mặt nạ đặt lại USB

0: Ngắt ẩn 1: Ngắt

không ẩn Lưu ý: Chỉ có

thể truy cập ở chế độ thiết bị.

Bit 11 USBSUSPM: Mặt nạ treo USB

0: Ngắt ẩn 1: Ngắt

không ẩn Lưu ý: Chỉ có

thể truy cập ở chế độ thiết bị.

RM0008 Phiên bản 21 871/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Bit 10 ESUSPM: Mặt nạ treo sớm 0: Ngắt bị che

giấu 1: Ngắt không được

che giấu Lưu ý: Chỉ có thể

truy cập được ở chế độ thiết bị.

Bit 9:8 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 7 GONAKEFFM: Mặt nạ hiệu quả Global OUT NAK

0: Ngắt ẩn 1: Ngắt không

ẩn Lưu ý: Chỉ có thể truy

cập ở chế độ thiết bị.

Bit 6 GINAKEFFM: Mặt nạ hiệu quả IN NAK không định kỳ toàn cầu

0: Ngắt ẩn 1: Ngắt không

ẩn Lưu ý: Chỉ có thể truy

cập ở chế độ thiết bị.

Bit 5 NPTXFEM: Mặt nạ trống TxFIFO không định kỳ 0: Ngắt được

che giấu 1: Ngắt được

che giấu Lưu ý: Chỉ có thể

truy cập được ở chế độ Máy chủ.

Bit 4 RXFLVLM: Nhận mặt nạ không trống FIFO 0: Ngắt bị che

1: Ngắt không được che

mặt Lưu ý: Có thể truy cập

được ở cả chế độ thiết bị và máy chủ.

Bit 3 SOFM: Bắt đầu mặt nạ khung

0: Ngắt ẩn

1: Ngắt không được che giấu

Lưu ý: Có thể truy cập được ở cả chế độ thiết bị và máy chủ.

Bit 2 OOTINT: Mặt nạ ngắt OOT

0: Ngắt ẩn

1: Ngắt không được che giấu

Lưu ý: Có thể truy cập được ở cả chế độ thiết bị và máy chủ.

Bit 1 MMISM: Mặt nạ ngắt không khớp chế độ 0: Ngắt bị che

1: Ngắt không được che

mặt Lưu ý: Có thể truy cập

được ở cả chế độ thiết bị và máy chủ.

Bit 0 Dành riêng, phải được giữ ở giá trị đặt lại.

872/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

OTG_FS Nhận đọc trạng thái gỡ lỗi/đọc trạng tháiOTG và đăng ký pop

(OTG_FS_GRXSTSR/OTG_FS_GRXSTSP)

Bù địa chỉ cho Đọc: 0x01C

Độ lệch địa chỉ cho Pop: 0x020

Giá trị đặt lại: 0x0000 0000

Việc đọc vào thanh ghi đọc gỡ lỗi trạng thái nhận sẽ trả về nội dung ở phần trên cùng của FIFO
nhận. Việc đọc vào thanh ghi trạng thái Nhận và đọc và bật cũng sẽ bật mục nhập dữ liệu hàng đầu ra
khỏi RxFIFO.

Nội dung trạng thái nhận phải được diễn giải khác nhau ở chế độ máy chủ và thiết bị. Lõi bỏ qua trạng
thái nhận bật/đọc khi FIFO nhận trống và trả về giá trị 0x0000 0000. Ứng dụng chỉ phải bật FIFO
trạng thái nhận khi bit nhận FIFO không trống của thanh ghi ngắt lõi (bit RXFLVL trongOTG_FS_GINTSTS )
được khẳng định.

Chế độ máy chủ

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

PKTSTS dpid BCNT CHNUM


Kín đáo
rr r r

Bit 31:21 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 20:17 PKTSTS: Trạng thái gói

Cho biết trạng thái của gói nhận được

0010: Đã nhận gói dữ liệu IN


0011: Quá trình truyền IN đã hoàn tất (kích hoạt ngắt)
0101: Lỗi chuyển đổi dữ liệu (gây ra ngắt)
0111: Kênh bị tạm dừng (kích hoạt ngắt)
Khác: Đặt trước

Bit 16:15 PIDD: Dữ liệu PID

Cho biết Data PID của gói đã nhận


00: DỮ LIỆU0

10: DỮ LIỆU1

01: DỮ LIỆU2

11: MDATA

Bit 14:4 BCNT: Số byte

Cho biết số byte của gói dữ liệu IN đã nhận.

Bit 3:0 CHNUM: Số kênh

Cho biết số kênh mà gói nhận được hiện tại thuộc về.

RM0008 Phiên bản 21 873/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Chế độ thiết bị

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

FRMNUM PKTSTS dpid BCNT EPNUM


Kín đáo
r rr r r

Bit 31:25 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 24:21 FRMNUM: Số khung

Đây là 4 bit có ý nghĩa nhỏ nhất của số khung mà gói được nhận trên USB. Trường này chỉ được hỗ trợ
khi các điểm cuối OUT đẳng thời được hỗ trợ.

Bit 20:17 PKTSTS: Trạng thái gói

Cho biết trạng thái của gói nhận được

0001: Global OUT NAK (kích hoạt ngắt)

0010: Đã nhận gói dữ liệu OUT

0011: Quá trình truyền OUT hoàn tất (kích hoạt ngắt)

0100: Giao dịch SETUP đã hoàn tất (kích hoạt ngắt)

0110: Đã nhận gói dữ liệu SETUP


Khác: Đặt trước

Bit 16:15 PIDD: Dữ liệu PID

Cho biết Data PID của gói dữ liệu OUT đã nhận


00: DỮ LIỆU0

10: DỮ LIỆU1

01: DỮ LIỆU2

11: MDATA

Bit 14:4 BCNT: Số byte

Cho biết số byte của gói dữ liệu đã nhận.

Bit 3:0 EPNUM: Số điểm cuối

Cho biết số điểm cuối mà gói nhận được hiện tại thuộc về.

OTG_FS Nhận thanh ghi kích thước FIFO (OTG_FS_GRXFSIZ)

Độ lệch địa chỉ: 0x024

Giá trị đặt lại: 0x0000 0200

Ứng dụng có thể lập trình kích thước RAM phải được phân bổ cho RxFIFO.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
RXFD
Kín đáo
rw

Bit 31:16 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 15:0 RXFD: Độ sâu RxFIFO


Giá trị này tính theo từ 32 bit.

Giá trị tối thiểu là 16

Giá trị tối đa là 256

Giá trị đặt lại khi bật nguồn của thanh ghi này được chỉ định là độ sâu FIFO của dữ liệu Rx lớn nhất.

874/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Thanh ghi kích thước FIFO truyền không định kỳ của máy chủ OG_FS
(OTG_FS_HNPTXFSIZ)/Điểm cuối 0 Kích thước FIFO truyền (OTG_FS_DIEPTXF0)

Độ lệch địa chỉ: 0x028

Giá trị đặt lại: 0x0000 0200

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

NPTXFD/TX0FD NPTXFSA/TX0FSA

rw rw

Chế độ máy chủ

Bit 31:16 NPTXFD: Độ sâu TxFIFO không định kỳ

Giá trị này tính theo từ 32 bit.

Giá trị tối thiểu là 16

Giá trị tối đa là 256

Bit 15:0 NPTXFSA: Địa chỉ bắt đầu RAM truyền không định kỳ

Trường này chứa địa chỉ bắt đầu bộ nhớ cho RAM FIFO truyền không định kỳ.

Chế độ thiết bị

Bit 31:16 TX0FD: Điểm cuối 0 Độ sâu TxFIFO

Giá trị này tính theo từ 32 bit.

Giá trị tối thiểu là 16

Giá trị tối đa là 256

Bit 15:0 TX0FSA: Địa chỉ bắt đầu truyền RAM của điểm cuối 0

Trường này chứa địa chỉ bắt đầu bộ nhớ cho điểm cuối 0 truyền RAM FIFO.

Thanh ghi trạng thái hàng đợi/truyền FIFO không định kỳ của OG_FS
(OTG_FS_HNPTXSTS)

Độ lệch địa chỉ: 0x02C

Giá trị đặt lại: 0x0008 0200

Ghi chú: Ở chế độ Thiết bị, thanh ghi này không hợp lệ.

Thanh ghi chỉ đọc này chứa thông tin không gian trống cho TxFIFO không định kỳ và hàng đợi yêu cầu truyền
không định kỳ.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
NPTXQTOP NPTQXSAV NPTXFSAV
náíđ
K

rr r
o

RM0008 Phiên bản 21 875/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Bit 31 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 30:24 NPTXQTOP: Đầu hàng đợi yêu cầu truyền không định kỳ Nhập vào hàng đợi

yêu cầu Tx không định kỳ hiện đang được MAC xử lý.

Bit 30:27: Số kênh/điểm cuối Bit 26:25:

– 00: Mã thông báo VÀO/OUT

– 01: Gói truyền có độ dài bằng 0 (thiết bị IN/máy chủ OUT)


– 11: Lệnh dừng kênh

Bit 24: Chấm dứt (mục nhập cuối cùng cho kênh/điểm cuối đã chọn)

Bit 23:16 NPTQXSAV: Không gian hàng đợi yêu cầu truyền không định kỳ khả dụng Cho biết

lượng không gian trống có sẵn trong hàng đợi yêu cầu truyền không định kỳ.
Hàng đợi này chứa cả yêu cầu IN và OUT ở chế độ máy chủ. Chế độ thiết bị chỉ có yêu cầu IN.

00: Hàng đợi yêu cầu truyền không định kỳ đã đầy


01: 1 vị trí khả dụng 10:

2 vị trí khả dụng bxn: n

vị trí khả dụng (0 n 8)


Khác: Đặt trước

Bit 15:0 NPTXFSAV: Dung lượng TxFIFO không định kỳ khả dụng Cho

biết lượng không gian trống khả dụng trong TxFIFO không định kỳ.
Các giá trị tính theo từ 32 bit.

00: TxFIFO không định kỳ đã đầy


01: Còn 1 từ 10: Còn

2 từ 0xn: Có sẵn n từ

(trong đó 0 ≤ n 256)
Khác: Đặt trước

Thanh ghi cấu hình lõi chung OG_FS (OTG_FS_GCCFG)

Độ lệch địa chỉ: 0x038

Giá trị đặt lại: 0x0000 XXXX

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
NWDRWP.
NESBSUBV

NESASUV
NETUOFOS

íđ
K

Kín đáo Kín đáo



o

ồ ồ ồ rw

Bit 31:21 Dành riêng

Bit 20 SOFOUTEN: Cho phép đầu ra SOF

0: Xung SOF không khả dụng trên PAD (OTG_FS_SOF)

1: Xung SOF có sẵn trên PAD (OTG_FS_SOF)

Bit 19 VBUSBSEN: Kích hoạt thiết bị cảm biến VBUS “B”

0: Cảm biến VBUS “B” bị vô hiệu hóa

1: Đã bật cảm biến VBUS “B”

876/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Bit 18 VBUSASEN: Kích hoạt thiết bị cảm biến VBUS “A”

0: VBUS cảm biến “A” bị vô hiệu hóa

1: Đã bật cảm biến VBUS “A”

Bit 17 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 16 PWRDWN: Tắt nguồn

Được sử dụng để kích hoạt bộ thu phát trong quá trình truyền/nhận
0: Tắt nguồn đang hoạt động

1: Tắt nguồn (“Bộ thu phát đang hoạt động”)

Bit 15:0 Dự trữ, phải được giữ ở giá trị đặt lại.

Thanh ghi ID lõi của hệ thống OG_FS (OTG_FS_CID)

Độ lệch địa chỉ: 0x03C

Đặt lại giá trị: 0x0000 1200

Đây là sổ đăng ký chứa ID sản phẩm làm giá trị đặt lại.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

ID SẢN PHẨM

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:0 product_ID: Trường ID sản phẩm Trường

ID có thể lập trình được cho ứng dụng.

Thanh ghi kích thước FIFO truyền định kỳ của máy chủ OG_FS (OTG_FS_HPTXFSIZ)

Độ lệch địa chỉ: 0x100

Giá trị đặt lại: 0x0200 0400

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

PTXFSIZ PTXSA

rrrrrrrrrrrrrrrrrrrrrrrrrrrrrr

Bit 31:16 PTXFD: Độ sâu TxFIFO định kỳ của máy chủ


Giá trị này tính theo từ 32 bit.
Giá trị tối thiểu là 16

Bit 15:0 PTXSA: Địa chỉ bắt đầu TxFIFO định kỳ của máy chủ

Giá trị đặt lại khi bật nguồn của thanh ghi này là tổng của độ sâu FIFO của dữ liệu Rx lớn nhất và
độ sâu FIFO của dữ liệu Tx không định kỳ lớn nhất.

Thiết bịOTG_FS IN điểm cuối truyền thanh ghi kích thước FIFO (OTG_FS_DIEPTXFx) (x = 1..3, trong đó x là

số FIFO)

Độ lệch địa chỉ: 0x104 + 0x04 * (x -1)

Giá trị đặt lại: 0x0200 0200

RM0008 Phiên bản 21 877/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
INEPTXFD INEPTXSA
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrr

Bit 31:16 INEPTXFD: Độ sâu TxFIFO của điểm cuối IN

Giá trị này tính theo từ 32 bit.

Giá trị tối thiểu là 16

Giá trị đặt lại khi bật nguồn của thanh ghi này được chỉ định là độ sâu số FIFO của điểm cuối IN
lớn nhất.

Bit 15:0 INEPTXSA: IN điểm cuối FIFOx địa chỉ bắt đầu truyền RAM

Trường này chứa địa chỉ bắt đầu bộ nhớ cho điểm cuối IN truyền FIFOx. Địa chỉ phải được căn chỉnh với vị
trí bộ nhớ 32 bit.

28.16.3 Thanh ghi chế độ máy chủ

Các giá trị bit trong mô tả thanh ghi được biểu thị dưới dạng nhị phân trừ khi có quy định khác.

Các thanh ghi chế độ máy chủ ảnh hưởng đến hoạt động của lõi ở chế độ máy chủ. Không được truy cập các
thanh ghi chế độ máy chủ ở chế độ thiết bị vì kết quả không được xác định. Các thanh ghi chế độ máy
chủ có thể được phân loại như sau:

Thanh ghi cấu hình máy chủOTG_FS (OTG_FS_HCFG)

Độ lệch địa chỉ: 0x400

Giá trị đặt lại: 0x0000 0000

Thanh ghi này cấu hình lõi sau khi bật nguồn. Không thực hiện thay đổi đối với sổ đăng ký này sau khi khởi
tạo máy chủ.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

SSLSF

SCPSLSF
Kín đáo

rw rw

Bit 31:3 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 2 FSLSS: chỉ hỗ trợ FS và LS

Ứng dụng sử dụng bit này để kiểm soát tốc độ liệt kê của lõi. Bằng cách sử dụng bit này, ứng dụng có
thể liệt kê lõi làm máy chủ FS, ngay cả khi thiết bị được kết nối hỗ trợ lưu lượng HS. Không thực
hiện thay đổi đối với trường này sau khi lập trình ban đầu.

1: Chỉ FS/LS, ngay cả khi thiết bị được kết nối có thể hỗ trợ HS (chỉ đọc)

878/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Bits 1:0 FSLSPCS: Chọn đồng hồ FS/LS PHY

Khi lõi ở chế độ máy chủ FS

01: Đồng hồ PHY đang chạy ở tần số 48 MHz


Khác: Đặt trước

Khi lõi ở chế độ máy chủ LS

00: Dự trữ

01: Chọn tần số xung nhịp PHY 48 MHz

10: Chọn tần số xung nhịp PHY 6 MHz


11: Dự trữ

Lưu ý: FSLSPCS phải được đặt trong sự kiện kết nối theo tốc độ của thiết bị được kết nối (sau khi
thay đổi bit này, phải thực hiện thiết lập lại phần mềm).

Thanh ghi khoảng thời gian khung máy chủ OG_FS (OTG_FS_HFIR)

Độ lệch địa chỉ: 0x404

Giá trị đặt lại: 0x0000 EA60

Thanh ghi này lưu trữ thông tin khoảng thời gian khung cho tốc độ hiện tại mà bộ điều khiểnOTG_FS
đã liệt kê.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
TUYỆT VỜI
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:16 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 15:0 FRIVL: Khoảng thời gian khung

Giá trị mà ứng dụng lập trình cho trường này chỉ định khoảng thời gian giữa hai SOF (FS) hoặc mã
thông báo Keep-Alive (LS) liên tiếp. Trường này chứa số lượng đồng hồ PHY tạo thành khoảng thời gian
khung được yêu cầu. Ứng dụng chỉ có thể ghi một giá trị vào thanh ghi này sau khi bit kích hoạt Cổng
của thanh ghi trạng thái và điều khiển cổng máy chủ (bit PENA trongOTG_FS_HPRT) đã được đặt. Nếu không
có giá trị nào được lập trình, lõi sẽ tính toán giá trị dựa trên đồng hồ PHY được chỉ định trong
trường Chọn đồng hồ PHY FS/LS của thanh ghi cấu hình máy chủ (FSLSPCS trongOTG_FS_HCFG).
Không thay đổi giá trị của trường này sau cấu hình ban đầu.

– Khoảng thời gian khung = 1 ms × (FRIVL - 1)

Thanh ghi số khung máy chủ/thời gian khung hình còn lại (OTG_FS_HFNUM)

Độ lệch địa chỉ: 0x408

Giá trị đặt lại: 0x0000 3FFF

Thanh ghi này cho biết số khung hiện tại. Nó cũng cho biết thời gian còn lại (về số lượng đồng hồ
PHY) trong khung hiện tại.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
FTREM FRNUM
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrr

RM0008 Phiên bản 21 879/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Bit 31:16 FTREM: Thời gian khung hình còn lại

Cho biết lượng thời gian còn lại trong khung hiện tại, tính theo đồng hồ PHY. Trường này giảm trên mỗi
đồng hồ PHY. Khi nó đạt đến 0, trường này sẽ được tải lại với giá trị trong thanh ghi Khoảng thời gian

khung và một SOF mới được truyền trên USB.

Bit 15:0 FRNUM: Số khung

Trường này tăng lên khi một SOF mới được truyền trên USB và bị xóa về 0 khi đạt 0x3FFF.

OTG_FS_Host đăng ký trạng thái hàng đợi/truyền định kỳ FIFO


(OTG_FS_HPTXSTS)

Độ lệch địa chỉ: 0x410

Giá trị đặt lại: 0x0008 0100

Thanh ghi chỉ đọc này chứa thông tin không gian trống cho TxFIFO định kỳ và hàng đợi yêu cầu
truyền định kỳ.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PTXQTOP PTXQSAV PTXFSAVL
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrr

Bit 31:24 PTXQTOP: Đầu hàng đợi yêu cầu truyền định kỳ

Điều này cho biết mục nhập trong hàng đợi yêu cầu Tx định kỳ hiện đang được MAC xử lý.

Thanh ghi này được sử dụng để gỡ lỗi.


Bit 31: Khung chẵn/lẻ

– 0: gửi ở khung chẵn

– 1: gửi ở khung lẻ

Bit 30:27: Số kênh/điểm cuối

Bit 26:25: Loại

– 00: VÀO/OUT

– 01: Gói có độ dài bằng 0

– 11: Tắt lệnh kênh

Bit 24: Chấm dứt (mục nhập cuối cùng cho kênh/điểm cuối đã chọn)

Bit 23:16 PTXQSAV: Có sẵn không gian hàng đợi yêu cầu truyền định kỳ

Cho biết số lượng vị trí trống có sẵn để ghi vào hàng đợi yêu cầu truyền định kỳ. Hàng đợi này chứa cả yêu
cầu IN và OUT.

00: Hàng đợi yêu cầu truyền định kỳ đã đầy


01: Có sẵn 1 địa điểm

10: Có 2 địa điểm

bxn: có sẵn n vị trí (0 ≤ n 8)


Khác: Đặt trước

880/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Bit 15:0 PTXFSAVL: Có sẵn không gian FIFO truyền dữ liệu định kỳ

Cho biết số lượng vị trí trống có sẵn để ghi vào TxFIFO định kỳ.
Các giá trị tính theo từ 32 bit
0000: TxFIFO định kỳ đã đầy

0001: có sẵn 1 từ
0010: có sẵn 2 từ

bxn: có sẵn n từ (trong đó 0 ≤ n ≤ PTXFD)


Khác: Đặt trước

OTG_FS Lưu trữ tất cả các thanh ghi ngắt kênh (OTG_FS_HAINT)

Độ lệch địa chỉ: 0x414

Giá trị đặt lại: 0x0000 000

Khi một sự kiện quan trọng xảy ra trên một kênh, thanh ghi ngắt tất cả các kênh của máy chủ sẽ ngắt
ứng dụng bằng cách sử dụng bit ngắt kênh máy chủ của thanh ghi ngắt lõi (bit HCINT trongOT_FS_GINTSTS).
Điều này được thể hiện trong Hình 311. Có một bit ngắt trên mỗi kênh, tối đa là 16 bit. Các bit trong
thanh ghi này được thiết lập và xóa khi ứng dụng thiết lập và xóa các bit trong thanh ghi ngắt kênh-x
máy chủ tương ứng.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
HAINT
Kín đáo
rrrrrrrrrrrrrrr

Bit 31:16 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 15:0 HAINT: Ngắt kênh

Một bit cho mỗi kênh: Bit 0 cho Kênh 0, bit 15 cho Kênh 15

RM0008 Phiên bản 21 881/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

OTG_FS Lưu trữ tất cả các thanh ghi mặt nạ ngắt kênh (OTG_FS_HAINTMSK)

Độ lệch địa chỉ: 0x418

Giá trị đặt lại: 0x0000 0000

Thanh ghi mặt nạ ngắt tất cả các kênh của máy chủ hoạt động với thanh ghi ngắt tất cả các kênh của máy chủ
để làm gián đoạn ứng dụng khi có sự kiện xảy ra trên một kênh. Có một bit mặt nạ ngắt trên mỗi kênh, tối
đa là 16 bit.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

HAINTM
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:16 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 15:0 HAINTM: Mặt nạ ngắt kênh

0: Ngắt ẩn
1: Ngắt không được che giấu

Một bit cho mỗi kênh: Bit 0 cho kênh 0, bit 15 cho kênh 15

Thanh ghi trạng thái và điều khiển cổng máy chủ OTG_FS (OTG_FS_HPRT)

Độ lệch địa chỉ: 0x440

Giá trị đặt lại: 0x0000 0000

Thanh ghi này chỉ có sẵn ở chế độ máy chủ. Hiện tại, máy chủ OOT chỉ hỗ trợ một cổng.

Một thanh ghi duy nhất chứa thông tin liên quan đến cổng USB như đặt lại USB, bật, tạm dừng, tiếp tục,
trạng thái kết nối và chế độ kiểm tra cho mỗi cổng. Nó được hiển thị trong Hình 311. Các bit rc_w1
trong thanh ghi này có thể kích hoạt một ngắt đối với ứng dụng thông qua bit ngắt cổng máy chủ của thanh
ghi ngắt lõi (bit HPRTINT trongOTG_FS_GINTSTS). Khi ngắt cổng, ứng dụng phải đọc thanh ghi này và xóa
bit gây ra ngắt. Đối với các bit RC_w1, ứng dụng phải ghi 1 vào bit để xóa ngắt.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

PSPD PTCTL
TSRP

SERP

ANEP
ACOP
RWPP

IÒIL
U X
V

IÁC
PSUSP

TEDCP
GN

GNHCEP
GNHCCOP

Kín đáo

o íđ
K

r rw rw rw rw rw r rc_ rc_ rc_ rc_


r r rw rs rw r r
w1 w1 w0 w1

Bit 31:19 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 18:17 PSPD: Tốc độ cổng

Cho biết tốc độ của thiết bị được gắn vào cổng này.
01: Tốc độ tối đa

10: Tốc độ thấp


11: Dự trữ

882/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Bit 16:13 PTCTL: Kiểm soát kiểm tra cổng

Ứng dụng ghi một giá trị khác 0 vào trường này để đưa cổng vào chế độ Kiểm tra và mẫu tương ứng sẽ được báo

hiệu trên cổng.


0000: Chế độ kiểm tra bị tắt

0001: Chế độ Test_J

0010: Chế độ Test_K

0011: Chế độ Test_SE0_NAK

0100: Chế độ Test_Packet

0101: Test_Force_Enable
Khác: Đặt trước

Bit 12 PPWR: Nguồn cổng

Ứng dụng sử dụng trường này để điều khiển nguồn điện cho cổng này và lõi sẽ xóa bit này trong tình trạng quá dòng.

0: Tắt nguồn

1: Bật nguồn

Bit 11:10 PLSTS: Trạng thái dòng cổng

Cho biết các dòng dữ liệu USB ở mức logic hiện tại

Bit 10: Mức logic củaOTG_FS_DP

Bit 11: Mức logic củaOTG_FS_DM

Bit 9 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 8 PRST: Thiết lập lại cổng

Khi ứng dụng đặt bit này, trình tự đặt lại sẽ được bắt đầu trên cổng này. Ứng dụng phải tính thời gian cho khoảng

thời gian đặt lại và xóa bit này sau khi trình tự đặt lại hoàn tất.
0: Cổng chưa được đặt lại

1: Cổng được đặt lại

Ứng dụng phải đặt bit này trong khoảng thời gian tối thiểu ít nhất là 10 ms để bắt đầu thiết lập lại trên cổng.

Ứng dụng có thể để nó được đặt thêm 10 ms nữa ngoài khoảng thời gian tối thiểu được yêu cầu, trước khi

xóa bit, mặc dù không có giới hạn tối đa nào được đặt theo tiêu chuẩn USB.

Bit 7 PSUSP: Cổng tạm dừng

Ứng dụng đặt bit này để đặt cổng này ở chế độ Tạm dừng. Lõi chỉ dừng gửi SOF khi điều này được đặt. Để dừng đồng

hồ PHY, ứng dụng phải đặt bit dừng đồng hồ cổng, bit này xác nhận chân đầu vào tạm dừng của PHY.

Giá trị đọc của bit này phản ánh trạng thái tạm dừng hiện tại của cổng. Bit này bị xóa bởi lõi sau khi phát hiện

thấy tín hiệu đánh thức từ xa hoặc ứng dụng đặt bit Đặt lại cổng hoặc Bit tiếp tục cổng trong thanh ghi này hoặc

bit ngắt phát hiện Tiếp tục/đánh thức từ xa hoặc Bit ngắt được phát hiện ngắt kết nối trong thanh ghi ngắt lõi

(WKUINT hoặc DISCINT tương ứng trongOTG_FS_GINTSTS).

0: Cổng không ở chế độ Tạm dừng

1: Cổng ở chế độ Tạm dừng

Bit 6 PRES: Tiếp tục cổng

Ứng dụng đặt bit này để điều khiển tín hiệu tiếp tục trên cổng. Lõi tiếp tục điều khiển tín hiệu tiếp tục cho

đến khi ứng dụng xóa bit này.

Nếu lõi phát hiện trình tự đánh thức từ xa USB, như được biểu thị bằng bit ngắt được phát hiện

tiếp tục lại cổng/đánh thức từ xa của thanh ghi ngắt lõi (bit WKUINT trongOTG_FS_GINTSTS), lõi sẽ bắt đầu truyền

tín hiệu tiếp tục mà không cần sự can thiệp của ứng dụng và xóa bit này khi phát hiện một tình trạng
ngắt kết nối. Giá trị đọc của bit này cho biết lõi hiện có đang điều khiển tín hiệu tiếp tục hay không.

0: Không có sơ yếu lý lịch điều khiển

1: Tiếp tục điều khiển

RM0008 Phiên bản 21 883/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Bit 5 POCCHNG: Thay đổi quá dòng cổng

Lõi đặt bit này khi trạng thái của bit hoạt động quá dòng của Cổng (bit 4) trong thanh ghi này thay đổi.

Bit 4 POCA: Cổng hoạt động quá dòng

Cho biết tình trạng quá dòng của cổng.

0: Không có tình trạng quá dòng

1: Tình trạng quá dòng

Bit 3 PENCHNG: Thay đổi bật/tắt cổng

Lõi đặt bit này khi trạng thái của cổng kích hoạt bit 2 trong thanh ghi này thay đổi.

Bit 2 PENA: Kích hoạt cổng

Một cổng chỉ được kích hoạt bởi lõi sau trình tự đặt lại và bị vô hiệu hóa do tình trạng quá dòng, tình trạng ngắt kết

nối hoặc do ứng dụng xóa bit này. Ứng dụng không thể thiết lập bit này bằng cách ghi vào sổ đăng ký. Nó chỉ có

thể xóa nó để vô hiệu hóa cổng. Bit này không kích hoạt bất kỳ sự gián đoạn nào đối với ứng dụng.

0: Cổng bị vô hiệu hóa

1: Đã bật cổng

Bit 1 PCDET: Đã phát hiện cổng kết nối

Lõi đặt bit này khi phát hiện kết nối thiết bị để kích hoạt ngắt đối với ứng dụng bằng cách sử dụng bit ngắt cổng

máy chủ trong thanh ghi ngắt lõi (bit HPRTINT trongOTG_FS_GINTSTS). Ứng dụng phải ghi số 1 vào bit này để xóa ngắt.

Bit 0 PCSTS: Trạng thái kết nối cổng

0: Không có thiết bị nào được gắn vào cổng

1: Một thiết bị được gắn vào cổng

884/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Thanh ghi đặc tính kênh-x của máy chủ OG_FS (OTG_FS_HCCHARx) (x
= 0..7, trong đó x = Channel_number)
*
Độ lệch địa chỉ: 0x500 + 0x20 x

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

MCNT EPNUM MPSIZ

RIDPE
BỐ
SIDHC

PYTPE

VEDSL
ANEHC

MRFDDO


o íđ
K
rs rs rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31 CHENA: Kích hoạt kênh

Trường này được ứng dụng thiết lập và được máy chủ OOT xóa.
0: Kênh bị vô hiệu hóa

1: Đã bật kênh

Bit 30 CHDIS: Vô hiệu hóa kênh

Ứng dụng đặt bit này để dừng truyền/nhận dữ liệu trên một kênh, ngay cả trước khi quá trình truyền cho kênh

đó hoàn tất. Ứng dụng phải đợi ngắt Kênh bị vô hiệu hóa trước khi coi kênh đó là bị vô hiệu hóa.

Bit 29 ODDFRM: Khung lẻ

Trường này được ứng dụng thiết lập (đặt lại) để chỉ ra rằng máy chủOTG phải thực hiện truyền trong khung

lẻ. Trường này chỉ áp dụng cho các giao dịch định kỳ (đẳng thời gian và ngắt).

0: Khung chẵn

1: Khung lẻ

Bit 28:22 DAD: Địa chỉ thiết bị

Trường này chọn thiết bị cụ thể đóng vai trò là nguồn dữ liệu hoặc phần chìm.

Bit 21:20 MCNT: Đếm nhiều lần

Trường này cho máy chủ biết số lượng giao dịch phải được thực hiện trên mỗi khung cho điểm cuối định kỳ này.

Đối với chuyển khoản không định kỳ, trường này không được sử dụng

00: Dự trữ. Trường này mang lại kết quả không xác định
01: 1 giao dịch

10: 2 giao dịch trên mỗi khung được phát hành cho điểm cuối này

11: 3 giao dịch trên mỗi khung được phát hành cho điểm cuối này

Lưu ý: Trường này phải được đặt ít nhất là 01.

Bit 19:18 EPTYP: Loại điểm cuối

Cho biết loại truyền đã chọn.


00: Kiểm soát

01: đẳng thời

10: Số lượng lớn

11: Ngắt

Bit 17 LSDEV: Thiết bị tốc độ thấp

Trường này được ứng dụng đặt để cho biết kênh này đang liên lạc với thiết bị tốc độ thấp.

Bit 16 Dành riêng, phải được giữ ở giá trị đặt lại.

RM0008 Phiên bản 21 885/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Bit 15 EPDIR: Hướng điểm cuối Cho


biết giao dịch là VÀO hay NGOÀI.

0: NGOÀI

1: VÀO

Bit 14:11 EPNUM: Số điểm cuối

Cho biết số điểm cuối trên thiết bị đóng vai trò là nguồn dữ liệu hoặc phần đích.

Bit 10:0 MPSIZ: Kích thước gói tối đa

Cho biết kích thước gói tối đa của điểm cuối được liên kết.

Thanh ghi ngắt kênh x-x của máy chủ OG_FS (OTG_FS_HCINTx) (x = 0..7, trong đó
x = Channel_number)

*
Độ lệch địa chỉ: 0x508 + 0x20 x

Giá trị đặt lại: 0x0000 0000

Thanh ghi này cho biết trạng thái của kênh liên quan đến các sự kiện liên quan đến USB và AHB.
Nó được hiển thị trong Hình 311. Ứng dụng phải đọc thanh ghi này khi bit ngắt kênh máy chủ
trong thanh ghi ngắt lõi (bit HCINT trongOTG_FS_GINTSTS) được đặt. Trước khi ứng dụng có thể
đọc thanh ghi này, trước tiên nó phải đọc thanh ghi ngắt tất cả các kênh của máy chủ
(OTG_FS_HAINT) để lấy số kênh chính xác cho thanh ghi ngắt kênh-x của máy chủ. Ứng dụng phải xóa
bit thích hợp trong thanh ghi này để xóa các bit tương ứng trong thanh ghiOT_FS_HAINT
vàOTG_FS_GINTSTS.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

KAN
KCA

HHC

CRFX
YN UH
ẦÀ Q
RRETD

RREBB

RREXT

G
ỪT

Kín đáo
íđ
K

íđ
K


o

o
rc_ rc_ rc_ rc_ rc_ rc_ rc_ rc_ rc_
w1 w1 w1 w1 w1 w1 w1 w1 w1

Bit 31:11 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 10 DTERR: Lỗi chuyển đổi dữ liệu

Bit 9 FRMOR: Tràn khung

Bit 8 BBERR: Lỗi lảm nhảm

Bit 7 TXERR: Lỗi giao dịch

Cho biết một trong các lỗi sau đã xảy ra trên USB.
Lỗi kiểm tra CRC Hết

thời gian

chờ Lỗi nội dung

bit EOP sai

Bit 6 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 5 ACK: Ngắt nhận/truyền phản hồi ACK

Bit 4 NAK: Phản hồi NAK nhận được ngắt

Bit 3 STALL: Phản hồi STALL nhận được ngắt

886/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Bit 2 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 1 CHH: Kênh bị tạm dừng

Cho biết quá trình truyền đã hoàn tất một cách bất thường do bất kỳ lỗi giao dịch USB nào hoặc do phản hồi yêu

cầu vô hiệu hóa của ứng dụng.

Bit 0 XFRC: Quá trình truyền đã hoàn tất

Quá trình truyền hoàn tất bình thường không có bất kỳ lỗi nào.

Thanh ghi mặt nạ ngắt kênh x-x của máy chủ (OTG_FS_HCINTMSKx) (x = 0..7,
trong đó x = Channel_number)
*
Độ lệch địa chỉ: 0x50C + 0x20 x

Giá trị đặt lại: 0x0000 0000

Thanh ghi này phản ánh mặt nạ cho từng trạng thái kênh được mô tả trong phần trước.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

MKAN
MKCA

MHHC

MCRFX
HẠ ÌT
NR
MRRETD
Kín đáo

MRREBB

MRREXT

GN
ỪK
AÓH T

íđ
K

íđ
K


o

o
rw rw rw rw ồ ồ ồ ồ ồ

Bit 31:11 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 10 DTERRM: Mặt nạ lỗi chuyển đổi dữ liệu

0: Ngắt ẩn

1: Ngắt không được che giấu

Bit 9 FRMORM: Mặt nạ tràn khung

0: Ngắt ẩn

1: Ngắt không được che giấu

Bit 8 BBERRM: Mặt nạ lỗi lảm nhảm

0: Ngắt ẩn

1: Ngắt không được che giấu

Bit 7 TXERRM: Mặt nạ lỗi giao dịch

0: Ngắt ẩn

1: Ngắt không được che giấu

Bit 6 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 5 ACKM: Mặt nạ ngắt nhận/truyền phản hồi ACK

0: Ngắt ẩn

1: Ngắt không được che giấu

Bit 4 NAKM: Mặt nạ ngắt nhận được phản hồi NAK

0: Ngắt ẩn

1: Ngắt không được che giấu

Bit 3 STALLM: Mặt nạ ngắt nhận được phản hồi STALL

0: Ngắt ẩn

1: Ngắt không được che giấu

RM0008 Phiên bản 21 887/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Bit 2 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 1 CHHM: Mặt nạ tạm dừng kênh

0: Ngắt ẩn

1: Ngắt không được che giấu

Bit 0 XFRCM: Chuyển mặt nạ đã hoàn thành

0: Ngắt ẩn

1: Ngắt không được che giấu

Thanh ghi kích thước truyền kênh x-x của máy chủ OG_FS (OTG_FS_HCTSIZx) (x =
0..7, trong đó x = Channel_number)
*
Độ lệch địa chỉ: 0x510 + 0x20 x

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

dpid PKTCNT XFRSIZ


íđ

o K

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 30:29 PIDD: Dữ liệu PID

Ứng dụng lập trình trường này với loại PID để sử dụng cho giao dịch ban đầu. Máy chủ duy trì trường này cho phần
còn lại của quá trình truyền.

00: DỮ LIỆU0

01: DỮ LIỆU2

10: DỮ LIỆU1

11: MDATA (không điều khiển)/SETUP (điều khiển)

Bit 28:19 PKTCNT: Số lượng gói

Trường này được ứng dụng lập trình với số lượng gói dự kiến sẽ được truyền (OUT) hoặc nhận (IN).

Máy chủ giảm số lượng này trên mỗi lần truyền hoặc nhận thành công gói OUT/IN. Khi số lượng này đạt đến 0, ứng

dụng sẽ bị gián đoạn để cho biết mức độ hoàn thành bình thường.

Bit 18:0 XFRSIZ: Kích thước truyền

Đối với OUT, trường này là số byte dữ liệu mà máy chủ gửi trong quá trình truyền.

Đối với IN, trường này là kích thước bộ đệm mà ứng dụng đã dành riêng cho quá trình truyền. Ứng dụng dự kiến

sẽ lập trình trường này dưới dạng bội số nguyên của kích thước gói tối đa cho các giao dịch IN (định kỳ và

không định kỳ).

888/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

28.16.4 Thanh ghi chế độ thiết bị

Thanh ghi cấu hình thiết bịOTG_FS (OTG_FS_DCFG)

Độ lệch địa chỉ: 0x800

Giá trị đặt lại: 0x0220 0000

Thanh ghi này cấu hình lõi ở chế độ thiết bị sau khi bật nguồn hoặc sau một số lệnh điều khiển hoặc
liệt kê nhất định. Không thực hiện thay đổi đối với thanh ghi này sau khi lập trình lần đầu.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

ỐB
LVIFP

DPSD
KSHOSLZN
Kín đáo


o íđ
K
rw rw rw rw rw rw rw rw ồ ồ ồ

Bit 31:13 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 12:11 PFIVL: Khoảng thời gian khung định kỳ

Cho biết thời gian trong một khung mà ứng dụng phải được thông báo khi kết thúc ngắt khung định kỳ. Điều
này có thể được sử dụng để xác định xem tất cả lưu lượng truy cập đẳng thời cho khung đó đã hoàn tất hay
chưa.
00: 80% khoảng thời gian khung hình

01: 85% khoảng thời gian khung hình

10: 90% khoảng thời gian khung hình

11: 95% khoảng thời gian khung hình

Bit 10:4 DAD: Địa chỉ thiết bị

Ứng dụng phải lập trình trường này sau mỗi lệnh điều khiển SetAddress.

Bit 3 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 2 NZLSOHSK: Bắt tay OUT trạng thái có độ dài khác 0

Ứng dụng có thể sử dụng trường này để chọn bắt tay mà lõi gửi khi nhận gói dữ liệu có độ dài khác 0
trong giao dịch OUT của giai đoạn Trạng thái chuyển điều khiển.

1: Gửi bắt tay STALL trên giao dịch OUT có trạng thái độ dài khác 0 và không gửi gói OUT đã nhận đến ứng
dụng.

0: Gửi gói OUT đã nhận đến ứng dụng (có độ dài bằng 0 hoặc có độ dài khác 0) và gửi bắt tay dựa trên các
bit NAK và STALL cho điểm cuối trong thanh ghi điều khiển điểm cuối của Thiết bị.

Bit 1:0 DSPD: Tốc độ thiết bị

Cho biết tốc độ mà ứng dụng yêu cầu lõi liệt kê hoặc tốc độ tối đa mà ứng dụng có thể hỗ trợ. Tuy
nhiên, tốc độ bus thực tế chỉ được xác định sau khi chuỗi chirp hoàn tất và dựa trên tốc độ của máy chủ USB

mà lõi được kết nối.

00: Dự trữ

01: Dự trữ

10: Dự trữ

11: Tốc độ tối đa (đồng hồ thu phát USB 1.1 là 48 MHz)

RM0008 Phiên bản 21 889/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Thanh ghi điều khiển thiết bịOTG_FS (OTG_FS_DCTL)

Độ lệch địa chỉ: 0x804

Giá trị đặt lại: 0x0000 0000

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

SIDS
LTCT

UỢ ƯR
KANIGS
KANIGC

GISUWR
STSNOG
KANOGS
KANOGC
Kín đáo

ENDGRPOP
rw wwww rw rw rw r rw rw

Bit 31:12 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 11 POPRGDNE: Lập trình bật nguồn hoàn tất

Ứng dụng sử dụng bit này để cho biết rằng việc lập trình đăng ký đã hoàn tất sau khi thức dậy từ chế
độ tắt nguồn.

Bit 10 CGONAK: Xóa OUT NAK toàn cầu Viết 1 vào

trường này sẽ xóa NAK toàn cầu.

Bit 9 SGONAK: Đặt OUT NAK toàn cục Viết 1

vào trường này đặt Global OUT NAK.


Ứng dụng sử dụng bit này để gửi bắt tay NAK trên tất cả các điểm cuối OUT.
Ứng dụng chỉ phải thiết lập bit này sau khi đảm bảo rằng bit hiệu dụng Global OUT NAK trong thanh
ghi ngắt lõi (bit GONAKEFF trongOTG_FS_GINTSTS) bị xóa.

Bit 8 CGINAK: Xóa IN NAK toàn cục Việc ghi

1 vào trường này sẽ xóa IN NAK toàn cầu.

Bit 7 SGINAK: Đặt IN NAK toàn cục Viết 1

vào trường này đặt IN NAK không định kỳ toàn cầu. Ứng dụng sử dụng bit này để gửi bắt tay NAK trên tất
cả các điểm cuối IN không định kỳ.

Ứng dụng chỉ phải thiết lập bit này sau khi đảm bảo rằng bit hiệu dụng Global IN NAK trong thanh ghi ngắt
lõi (bit GINAKEFF trongOTG_FS_GINTSTS) bị xóa.

Bit 6:4 TCTL: Kiểm soát kiểm tra

000: Chế độ kiểm tra bị tắt

001: Chế độ Test_J

010: Chế độ Test_K

011: Chế độ Test_SE0_NAK

100: Chế độ Test_Packet

101: Test_Force_Enable
Khác: Đặt trước

Bit 3 GONSTS: Trạng thái OUT NAK toàn cầu

0: Một cái bắt tay được gửi dựa trên Trạng thái FIFO và cài đặt bit NAK và STALL.
1: Không có dữ liệu nào được ghi vào RxFIFO, bất kể dung lượng còn trống. Gửi bắt tay NAK trên
tất cả các gói, ngoại trừ các giao dịch SETUP. Tất cả các gói OUT đẳng thời đều bị loại bỏ.

890/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Bit 2 GINSTS: Trạng thái IN NAK toàn cầu

0: Một cái bắt tay được gửi đi dựa trên tính khả dụng của dữ liệu trong FIFO truyền.
1: Bắt tay NAK được gửi đi trên tất cả các điểm cuối IN không định kỳ, bất kể tính khả dụng của
dữ liệu trong FIFO truyền.

Bit 1 SDIS: Ngắt kết nối mềm

Ứng dụng sử dụng bit này để báo hiệu cho lõi USBOTG thực hiện ngắt kết nối mềm. Chỉ cần bit này
được đặt, máy chủ sẽ không thấy thiết bị được kết nối và thiết bị không nhận được tín hiệu
trên USB. Lõi vẫn ở trạng thái ngắt kết nối cho đến khi ứng dụng xóa bit này.

0: Hoạt động bình thường. Khi bit này bị xóa sau khi ngắt kết nối mềm, lõi sẽ tạo ra sự kiện kết
nối thiết bị với máy chủ USB. Khi thiết bị được kết nối lại, máy chủ USB sẽ khởi động lại
việc liệt kê thiết bị.

1: Lõi tạo ra sự kiện ngắt kết nối thiết bị với máy chủ USB.

Bit 0 RWUSIG: Báo hiệu đánh thức từ xa

Khi ứng dụng đặt bit này, lõi sẽ bắt đầu truyền tín hiệu từ xa để đánh thức máy chủ USB. Ứng
dụng phải đặt bit này để hướng dẫn lõi thoát khỏi trạng thái Tạm dừng. Như được chỉ định
trong thông số kỹ thuật USB 2.0, ứng dụng phải xóa bit này từ 1 ms đến 15 ms sau khi thiết lập.

Bảng 207 chứa khoảng thời gian tối thiểu (theo trạng thái thiết bị) mà bit Ngắt kết nối mềm (SDIS)
phải được đặt cho máy chủ USB để phát hiện ngắt kết nối thiết bị. Để điều chỉnh độ trễ của đồng
hồ, ứng dụng nên thêm một số độ trễ bổ sung vào khoảng thời gian tối thiểu được chỉ định.

Bảng 207. Thời lượng tối thiểu để ngắt kết nối mềm

Tốc độ vận hành Trạng thái thiết bị Thời lượng tối thiểu

Hết tốc độ Cấm 1 mili giây + 2,5 µs

Hết tốc độ Nhàn rỗi


2,5 µs

Hết tốc độ Không nhàn rỗi hoặc bị đình chỉ (Thực hiện giao dịch) 2,5 µs

Thanh ghi trạng thái thiết bịOTG_FS (OTG_FS_DSTS)

Độ lệch địa chỉ: 0x808

Giá trị đặt lại: 0x0000 0010

Thanh ghi này cho biết trạng thái của lõi đối với các sự kiện liên quan đến USB. Nó phải được đọc trên
các ngắt từ thanh ghi tất cả các ngắt (OTG_FS_DAINT) của thiết bị.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

FNSOF
RREE

Kín đáo Kín đáo


GNỪGN
DPSMUNE

rrrrrrrrrrrrr rrrr

Bit 31:22 Dự trữ, phải được giữ ở giá trị đặt lại.

Bits 21:8 FNSOF: Số khung của SOF nhận được

Bit 7:4 Dự trữ, phải được giữ ở giá trị đặt lại.

RM0008 Phiên bản 21 891/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Bit 3 EERR: Lỗi thất thường

Lõi thiết lập bit này để báo cáo bất kỳ lỗi thất thường nào.

Do xảy ra lỗi thất thường, bộ điều khiểnOTG_FS chuyển sang trạng thái Bị treo và tạo ra một ngắt
cho ứng dụng có bit Tạm dừng sớm của thanh ghiOTG_FS_GINTSTS (bit ESUSP trongOTG_FS_GINTSTS).
Nếu việc tạm dừng sớm được xác nhận do lỗi thất thường, ứng dụng chỉ có thể thực hiện khôi phục
ngắt kết nối mềm.

Bit 2:1 ENUMSPD: Tốc độ được liệt kê

Cho biết tốc độ mà bộ điều khiểnOTG_FS đã đạt được sau khi phát hiện tốc độ thông qua chuỗi
chirp.
01: Dự trữ
10: Dự trữ

11: Tốc độ tối đa (đồng hồ PHY đang chạy ở 48 MHz)


Khác: dành riêng

Bit 0 SUSPSTS: Trạng thái tạm dừng

Ở chế độ thiết bị, bit này được đặt miễn là phát hiện thấy tình trạng Tạm dừng trên USB. Lõi
chuyển sang trạng thái Tạm dừng khi không có hoạt động nào trên các đường dữ liệu USB trong khoảng
thời gian 3 ms. Cốt lõi thoát ra khỏi hệ thống treo:

– Khi có hoạt động trên đường truyền dữ liệu USB

– Khi ứng dụng ghi vào bit báo hiệu đánh thức từ xa trong thanh ghiOTG_FS_DCTL (bit RWUSIG
trongOTG_FS_DCTL).

Thiết bịOTG_FS IN thanh ghi mặt nạ ngắt chung điểm cuối


(OTG_FS_DIEPMSK)

Độ lệch địa chỉ: 0x810

Giá trị đặt lại: 0x0000 0000

Thanh ghi này hoạt động với từng thanh ghiOT_FS_DIEPINTx cho tất cả các điểm cuối để tạo ra một
ngắt cho mỗi điểm cuối IN. Ngắt điểm cuối IN cho một trạng thái cụ thể trong thanh ghiOTG_FS_DIEPINTx có
thể được che dấu bằng cách ghi vào bit tương ứng trong thanh ghi này. Các bit trạng thái được che
dấu theo mặc định.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
mot

MDPE
MKAN

MCRFX

Kín đáo Kín đáo


MENPENI

MMNPENI

KSMEFXTTI


o íđ
K

rw rw rw rw rw ồ ồ

Bit 31:14 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 13 NAKM: Mặt nạ ngắt NAK

0: Ngắt ẩn
1: Ngắt không được che giấu

Bit 12:7 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 6 INEPNEM: Mặt nạ hiệu quả NAK ở điểm cuối

0: Ngắt ẩn
1: Ngắt không được che giấu

892/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Bit 5 INEPNMM: Mã thông báo IN được nhận với mặt nạ không khớp EP

0: Ngắt ẩn
1: Ngắt không được che giấu

Bit 4 ITTXFEMSK: IN token nhận được khi mặt nạ trống TxFIFO

0: Ngắt ẩn
1: Ngắt không được che giấu

Bit 3 TOM: Mặt nạ điều kiện hết thời gian (Điểm cuối không đẳng thời)

0: Ngắt ẩn
1: Ngắt không được che giấu

Bit 2 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 1 EPDM: Mặt nạ ngắt bị vô hiệu hóa điểm cuối

0: Ngắt ẩn
1: Ngắt không được che giấu

Bit 0 XFRCM: Truyền mặt nạ ngắt hoàn thành

0: Ngắt ẩn
1: Ngắt không được che giấu

Thanh ghi mặt nạ ngắt chung điểm cuối thiết bị OOT_FS OUT
(OTG_FS_DOEPMSK)

Độ lệch địa chỉ: 0x814

Giá trị đặt lại: 0x0000 0000

Thanh ghi này hoạt động với từng thanh ghiOT_FS_DOEPINTx cho tất cả các điểm cuối để tạo ra một ngắt
cho mỗi điểm cuối OUT. Ngắt điểm cuối OUT cho một trạng thái cụ thể trong thanh ghiOTG_FS_DOEPINTx có thể
được che dấu bằng cách ghi vào bit tương ứng trong thanh ghi này. Các bit trạng thái được che dấu theo
mặc định.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
KAN

MDPE
MPUTS
MRREB

MCRFX
MDPETO

Kín đáo Kín đáo


íđ
K

íđ
K
MXRSHPSTS


o

o
MRRETKPTUO

ồ ồ rw ồ ồ ồ ồ ồ

Bit 31:14 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 13 NAKMSK: Mặt nạ ngắt NAK

0: Ngắt ẩn
1: Ngắt không được che giấu

Bit 12 BERRM: Mặt nạ ngắt lỗi bập bẹ

0: Ngắt ẩn
1: Ngắt không được che giấu

Bit 11:9 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 8 OUTPKTERRM: Mặt nạ lỗi gói tin đầu ra

0: Ngắt ẩn
1: Ngắt không được che giấu

RM0008 Phiên bản 21 893/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Bit 7:6 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 5 STSPHSRXM: Đã nhận được pha trạng thái cho mặt nạ ghi điều khiển

0: Ngắt ẩn
1: Ngắt không được che giấu

Bit 4 OTEPDM: Đã nhận được mã thông báo OUT khi mặt nạ vô hiệu hóa điểm cuối

Chỉ áp dụng cho các điểm cuối kiểm soát OUT.

0: Ngắt ẩn
1: Ngắt không được che giấu

Bit 3 STUPM: Mặt nạ hoàn thành giai đoạn SETUP

Chỉ áp dụng cho các điểm cuối kiểm soát.

0: Ngắt ẩn
1: Ngắt không được che giấu

Bit 2 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 1 EPDM: Mặt nạ ngắt bị vô hiệu hóa điểm cuối

0: Ngắt ẩn
1: Ngắt không được che giấu

Bit 0 XFRCM: Truyền mặt nạ ngắt hoàn thành

0: Ngắt ẩn
1: Ngắt không được che giấu

Thanh ghi ngắt tất cả các điểm cuối của thiết bịOTG_FS (OTG_FS_DAINT)

Độ lệch địa chỉ: 0x818

Giá trị đặt lại: 0x0000 0000

Khi một sự kiện quan trọng xảy ra trên điểm cuối, thanh ghiOTG_FS_DAINT sẽ ngắt ứng dụng bằng cách sử
dụng bit ngắt điểm cuối Device OUT hoặc bit ngắt điểm cuối Device IN của thanh ghiOTG_FS_GINTSTS (OEPINT
hoặc IEPINT trongOTG_FS_GINTSTS, tương ứng). Có một bit ngắt cho mỗi điểm cuối, tối đa là
16 bit cho điểm cuối OUT và 16 bit cho điểm cuối IN. Đối với điểm cuối hai chiều, các bit ngắt IN và
OUT tương ứng được sử dụng. Các bit trong thanh ghi này được thiết lập và xóa khi ứng dụng thiết lập
và xóa các bit trong thanh ghi ngắt Device Endpoint-x tương ứng (OTG_FS_DIEPINTx/
OTG_FS_DOEPINTx).

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OEPINT IEPINT

rrrrrrrrrrrrrrrrrrrrrrrrrrrrrr

Bit 31:16 OEPINT: Bit ngắt điểm cuối OUT

Một bit cho mỗi điểm cuối


OUT: Bit 16 cho điểm cuối OUT 0, bit 19 cho điểm cuối OUT 3.

Bit 15:0 IEPINT: IN bit ngắt điểm cuối

Một bit cho mỗi điểm cuối

IN: Bit 0 cho điểm cuối IN 0, bit 3 cho điểm cuối IN 3.

894/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Thanh ghi mặt nạ ngắt tất cả điểm cuối OG_FS (OTG_FS_DAINTMSK)

Độ lệch địa chỉ: 0x81C

Giá trị đặt lại: 0x0000 0000

Thanh ghiOTG_FS_DAINTMSK hoạt động với thanh ghi ngắt điểm cuối của thiết bị để làm gián đoạn ứng
dụng khi có sự kiện xảy ra trên điểm cuối của thiết bị. Tuy nhiên, bit thanh ghiOTG_FS_DAINT
tương ứng với ngắt đó vẫn được đặt.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

OEMM IEPM

rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:16 OEPM: Các bit mặt nạ ngắt OUT EP

Một cho mỗi điểm cuối OUT:


Bit 16 cho OUT EP 0, bit 19 cho OUT EP 3

0: Ngắt ẩn
1: Ngắt không được che giấu

Bit 15:0 IEPM: Các bit mặt nạ ngắt IN EP

Một bit cho mỗi điểm cuối IN:

Bit 0 cho IN EP 0, bit 3 cho IN EP 3

0: Ngắt ẩn
1: Ngắt không được che giấu

Thanh ghi thời gian xả VBUS của thiết bịOTG_FS (OTG_FS_DVBUSDIS)

Độ lệch địa chỉ: 0x0828

Giá trị đặt lại: 0x0000 17D7

Thanh ghi này chỉ định thời gian xả VBUS sau khi tạo xung VBUS trong SRP.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

VBUSDT
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:16 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 15:0 VBUSDT: Thời gian xả VBUS của thiết bị Chỉ

định thời gian xả VBUS sau khi tạo xung VBUS trong SRP. Giá trị này bằng: Thời gian xả VBUS
trong đồng hồ PHY / 1 024 Tùy thuộc vào tải
VBUS của bạn, giá trị này có thể cần điều chỉnh.

Thanh ghi thời gian xung VBUS của thiết bịOTG_FS (OTG_FS_DVBUSPULSE)

Độ lệch địa chỉ: 0x082C

Giá trị đặt lại: 0x0000 05B8

Thanh ghi này chỉ định thời gian xung VBUS trong SRP.

RM0008 Phiên bản 21 895/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

DVBUSP
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw

Bit 31:12 Dự trữ, phải được giữ ở giá trị đặt lại.

Bits 11:0 DVBUSP: Thời gian xung VBUS của thiết bị

Chỉ định thời gian xung VBUS trong SRP. Giá trị này bằng:

Thời gian xung VBUS trong đồng hồ PHY / 1 024

Thiết bịOTG_FS Ở điểm cuối FIFO thanh ghi mặt nạ ngắt trống:
(OTG_FS_DIEPEPMPSK)

Độ lệch địa chỉ: 0x834

Giá trị đặt lại: 0x0000 0000

Thanh ghi này được sử dụng để điều khiển việc tạo ngắt trống FIFO điểm cuối IN
(TXFE_OTG_FS_DIEPINTx).

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

INEPTXFEM
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:16 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 15:0 INEPTXFEM: IN EP Tx FIFO bit mặt nạ ngắt trống

Các bit này hoạt động như các bit mặt nạ choOTG_FS_DIEPINTx.

TXFE ngắt một bit cho mỗi điểm cuối IN:

Bit 0 cho điểm cuối IN 0, bit 3 cho điểm cuối IN 3

0: Ngắt ẩn

1: Ngắt không được che giấu

Điều khiển thiết bịOTG_FS IN thanh ghi điều khiển điểm cuối 0 (OTG_FS_DIEPCTL0)

Độ lệch địa chỉ: 0x900

Giá trị đặt lại: 0x0000 0000

Phần này mô tả thanh ghiOT_FS_DIEPCTL0. Điểm cuối điều khiển khác 0 sử dụng các thanh ghi cho điểm
cuối 1–3.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SIDPE

ẦÀ
YN UH
Q
ANEPE

TXFNUM EPTYP
ỏht
k

MPSIZ
PEABSU

n

Kín đáo
íđ
K

íđ
K

íđ
K


o

r r ww rw rw rw rw rs r r r r ồ ồ

896/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Bit 31 EPENA: Kích hoạt điểm cuối

Ứng dụng đặt bit này để bắt đầu truyền dữ liệu ở điểm cuối 0.

Lõi xóa bit này trước khi thiết lập bất kỳ ngắt nào sau đây trên điểm cuối này:

– Điểm cuối bị vô hiệu hóa

– Chuyển khoản hoàn tất

Bit 30 EPDIS: Vô hiệu hóa điểm cuối

Ứng dụng đặt bit này để dừng truyền dữ liệu trên điểm cuối, ngay cả trước khi quá trình truyền cho

điểm cuối đó hoàn tất. Ứng dụng phải chờ ngắt bị vô hiệu hóa Điểm cuối trước khi coi điểm cuối là bị vô hiệu

hóa. Lõi xóa bit này trước khi thiết lập ngắt bị vô hiệu hóa Điểm cuối. Ứng dụng chỉ được đặt bit này nếu bật

Điểm cuối đã được đặt cho điểm cuối này.

Bit 29:28 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 27 SNAK: Đặt NAK

Việc ghi vào bit này sẽ đặt bit NAK cho điểm cuối.

Sử dụng bit này, ứng dụng có thể điều khiển việc truyền bắt tay NAK trên điểm cuối. Lõi cũng có thể

đặt bit này cho điểm cuối sau khi nhận được gói SETUP trên điểm cuối đó.

Bit 26 CNAK: Xóa NAK

Việc ghi vào bit này sẽ xóa bit NAK cho điểm cuối.

Bit 25:22 TXFNUM: Số TxFIFO

Giá trị này được đặt thành số FIFO được gán cho điểm cuối IN 0.

Bit 21 STALL: bắt tay STALL

Ứng dụng chỉ có thể đặt bit này và lõi sẽ xóa nó khi nhận được mã thông báo SETUP cho điểm cuối này. Nếu một

bit NAK, Global IN NAK hoặc Global OUT NAK được đặt cùng với bit này thì bit STALL sẽ được ưu tiên.

Bit 20 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 19:18 EPTYP: Loại điểm cuối

Mã hóa cứng thành '00' để kiểm soát.

Bit 17 NAKSTS: trạng thái NAK

Chỉ ra những điều sau đây:

0: Lõi đang truyền các bắt tay không NAK dựa trên trạng thái FIFO

1: Lõi đang truyền bắt tay NAK trên điểm cuối này.

Khi bit này được thiết lập bởi ứng dụng hoặc lõi, lõi sẽ dừng truyền dữ liệu, ngay cả khi có sẵn dữ liệu trong

TxFIFO. Bất kể cài đặt của bit này, lõi luôn phản hồi các gói dữ liệu SETUP bằng bắt tay ACK.

Bit 16 Dành riêng, phải được giữ ở giá trị đặt lại.

RM0008 Phiên bản 21 897/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Bit 15 USBAEP: Điểm cuối hoạt động USB

Bit này luôn được đặt thành 1, cho biết điểm cuối điều khiển 0 luôn hoạt động trong tất cả các
cấu hình và giao diện.

Bit 14:2 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 1:0 MPSIZ: Kích thước gói tối đa

Ứng dụng phải lập trình trường này với kích thước gói tối đa cho điểm cuối logic hiện tại.

00: 64 byte

01: 32 byte

10: 16 byte

11: 8 byte

Điểm cuối x thanh ghi điều khiển của thiết bịOTG (OTG_FS_DIEPCTLx) (x = 1..3, trong
đó x = Endpoint_number)
*
Độ lệch địa chỉ: 0x900 + 0x20 x

Giá trị đặt lại: 0x0000 0000

Ứng dụng sử dụng thanh ghi này để kiểm soát hành vi của từng điểm cuối logic ngoài điểm cuối 0.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

TXFNUM MPSIZ
GNẮL

KANC
SIDPE

UH
ẦÀ Q

PYTPE
ANEPE

YN
G

ỏht
k

PEABSU

Kín đáo

n
MRFDDOS

náíđ
K

ODE
o

UI
/MD NP
/R
M IN
DF 0E
PV DS

rs rs wwww rw rw rw rw ồ ồ r r rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31 EPENA: Kích hoạt điểm cuối

Ứng dụng đặt bit này để bắt đầu truyền dữ liệu trên điểm cuối.

Lõi xóa bit này trước khi thiết lập bất kỳ ngắt nào sau đây trên điểm cuối này:

– Giai đoạn SETUP đã xong

– Điểm cuối bị vô hiệu hóa

– Chuyển khoản hoàn tất

Bit 30 EPDIS: Vô hiệu hóa điểm cuối

Ứng dụng đặt bit này để dừng truyền/nhận dữ liệu trên điểm cuối, ngay cả trước khi quá trình truyền cho
điểm cuối đó hoàn tất. Ứng dụng phải chờ ngắt bị vô hiệu hóa Điểm cuối trước khi coi điểm cuối là
bị vô hiệu hóa. Lõi xóa bit này trước khi thiết lập ngắt bị vô hiệu hóa Điểm cuối. Ứng dụng chỉ được
đặt bit này nếu bật Điểm cuối đã được đặt cho điểm cuối này.

Bit 29 SODDFRM: Đặt khung lẻ

Chỉ áp dụng cho các điểm cuối IN và OUT đẳng thời.

Việc ghi vào trường này sẽ đặt trường Khung chẵn/Lẻ (EONUM) thành khung lẻ.

898/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Bit 28 SD0PID: Đặt DATA0 PID

Chỉ áp dụng cho các điểm cuối IN ngắt/số lượng lớn.

Việc ghi vào trường này sẽ đặt trường PID (DPID) dữ liệu điểm cuối trong thanh ghi này thành DATA0.

SEVNFRM: Đặt khung chẵn

Chỉ áp dụng cho các điểm cuối IN đẳng thời.

Việc ghi vào trường này sẽ đặt trường Khung chẵn/Lẻ (EONUM) thành khung chẵn.

Bit 27 SNAK: Đặt NAK

Việc ghi vào bit này sẽ đặt bit NAK cho điểm cuối.

Sử dụng bit này, ứng dụng có thể điều khiển việc truyền bắt tay NAK trên điểm cuối. Lõi cũng có thể

đặt bit này cho các điểm cuối OUT khi ngắt hoàn thành Truyền hoặc sau khi nhận được THIẾT LẬP trên điểm cuối.

Bit 26 CNAK: Xóa NAK

Việc ghi vào bit này sẽ xóa bit NAK cho điểm cuối.

Bit 25:22 TXFNUM: Số TxFIFO

Các bit này chỉ định số FIFO được liên kết với điểm cuối này. Mỗi điểm cuối IN hoạt động phải được lập trình

thành một số FIFO riêng.

Trường này chỉ hợp lệ cho điểm cuối IN.

Bit 21 STALL: bắt tay STALL

Chỉ áp dụng cho các điểm cuối IN không điều khiển, không đẳng thời (loại truy cập là rw).

Ứng dụng đặt bit này để tạm dừng tất cả mã thông báo từ máy chủ USB đến điểm cuối này. Nếu một bit NAK,

Global IN NAK hoặc Global OUT NAK được đặt cùng với bit này thì bit STALL sẽ được ưu tiên.

Chỉ ứng dụng mới có thể xóa bit này, không bao giờ xóa được phần lõi.

Bit 20 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 19:18 EPTYP: Loại điểm cuối

Đây là kiểu truyền được hỗ trợ bởi điểm cuối logic này.

00: Kiểm soát

01: đẳng thời

10: Số lượng lớn

11: Ngắt

Bit 17 NAKSTS: trạng thái NAK

Nó chỉ ra những điều sau đây:

0: Lõi đang truyền các bắt tay không NAK dựa trên trạng thái FIFO.

1: Lõi đang truyền bắt tay NAK trên điểm cuối này.

Khi ứng dụng hoặc lõi đặt bit này:

Đối với điểm cuối IN không đẳng thời: Lõi dừng truyền bất kỳ dữ liệu nào trên điểm cuối IN, ngay cả khi có sẵn
dữ liệu trong TxFIFO.

Đối với điểm cuối IN đẳng thời: Lõi gửi gói dữ liệu có độ dài bằng 0, ngay cả khi có sẵn dữ liệu trong TxFIFO.

Bất kể cài đặt của bit này, lõi luôn phản hồi các gói dữ liệu SETUP bằng bắt tay ACK.

RM0008 Phiên bản 21 899/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Bit 16 EONUM: Khung chẵn/lẻ

Chỉ áp dụng cho các điểm cuối IN đẳng thời.


Cho biết số khung trong đó lõi truyền/nhận dữ liệu đẳng thời cho điểm cuối này. Ứng dụng phải lập trình số

khung chẵn/lẻ mà nó dự định truyền/nhận dữ liệu đẳng thời cho điểm cuối này bằng cách sử dụng các trường

SEVNFRM và SODDFRM trong thanh ghi này.

0: Khung chẵn

1: Khung lẻ

PIDD: Dữ liệu điểm cuối PID

Chỉ áp dụng cho các điểm cuối IN ngắt/số lượng lớn.

Chứa PID của gói được nhận hoặc truyền trên điểm cuối này. Ứng dụng phải lập trình PID của gói đầu

tiên được nhận hoặc truyền trên điểm cuối này, sau khi điểm cuối được kích hoạt. Ứng dụng sử dụng trường

thanh ghi SD0PID để lập trình PID DATA0 hoặc DATA1.

0: DỮ LIỆU0

1: DỮ LIỆU1

Bit 15 USBAEP: Điểm cuối hoạt động USB

Cho biết liệu điểm cuối này có hoạt động trong cấu hình và giao diện hiện tại hay không. Lõi xóa bit này cho

tất cả các điểm cuối (trừ EP 0) sau khi phát hiện thiết lập lại USB. Sau khi nhận được lệnh SetConfiguration

và SetInterface, ứng dụng phải lập trình các thanh ghi điểm cuối tương ứng và đặt bit này.

Bit 14:11 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 10:0 MPSIZ: Kích thước gói tối đa

Ứng dụng phải lập trình trường này với kích thước gói tối đa cho điểm cuối logic hiện tại. Giá trị này được

tính bằng byte.

900/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Thanh ghi điều khiển điểm cuối 0 điều khiển thiết bị OOT_FS OUT
(OTG_FS_DOEPCTL0)
Độ lệch địa chỉ: 0xB00

Giá trị đặt lại: 0x0000 8000

Phần này mô tả thanh ghiOTG_FS_DOEPCTL0. Điểm cuối điều khiển khác 0 sử dụng các thanh ghi cho điểm cuối
1–
3.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

EPTYP MPSIZ
GNẮL

KANC

MPNS
SIDPE

YN UH
ẦÀ Q
ANEPE

Kín đáo Kín đáo

ỏht
k

PEABSU

n
íđ
K

íđ
K


o

o
wr ôi rs rw r r r r r r

Bit 31 EPENA: Kích hoạt điểm cuối

Ứng dụng đặt bit này để bắt đầu truyền dữ liệu trên điểm cuối 0.

Lõi xóa bit này trước khi thiết lập bất kỳ ngắt nào sau đây trên điểm cuối này:

– Giai đoạn SETUP đã xong

– Điểm cuối bị vô hiệu hóa

– Chuyển khoản hoàn tất

Bit 30 EPDIS: Vô hiệu hóa điểm cuối

Ứng dụng không thể tắt điều khiển OUT điểm cuối 0.

Bit 29:28 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 27 SNAK: Đặt NAK

Việc ghi vào bit này sẽ đặt bit NAK cho điểm cuối.

Sử dụng bit này, ứng dụng có thể điều khiển việc truyền bắt tay NAK trên điểm cuối. Lõi cũng có thể
đặt bit này khi ngắt hoàn tất Truyền hoặc sau khi nhận được THIẾT LẬP ở điểm cuối.

Bit 26 CNAK: Xóa NAK

Việc ghi vào bit này sẽ xóa bit NAK cho điểm cuối.

Bit 25:22 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 21 STALL: bắt tay STALL

Ứng dụng chỉ có thể đặt bit này và lõi sẽ xóa nó khi nhận được mã thông báo SETUP cho điểm cuối này. Nếu
bit NAK hoặc Global OUT NAK được đặt cùng với bit này thì bit STALL sẽ được ưu tiên. Bất kể cài đặt của
bit này, lõi luôn phản hồi các gói dữ liệu SETUP bằng bắt tay ACK.

Bit 20 SNPM: Chế độ rình mò

Bit này cấu hình điểm cuối sang chế độ Snoop. Trong chế độ Snoop, lõi không kiểm tra tính chính xác của
các gói OUT trước khi chuyển chúng sang bộ nhớ ứng dụng.

Bit 19:18 EPTYP: Loại điểm cuối

Mã hóa cứng thành 2'b00 để kiểm soát.

RM0008 Phiên bản 21 901/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Bit 17 NAKSTS: Trạng thái NAK

Chỉ ra những điều sau đây:

0: Lõi đang truyền các bắt tay không NAK dựa trên trạng thái FIFO.

1: Lõi đang truyền bắt tay NAK trên điểm cuối này.

Khi ứng dụng hoặc lõi đặt bit này, lõi sẽ ngừng nhận dữ liệu, ngay cả khi có khoảng trống trong RxFIFO để
chứa gói đến. Bất kể cài đặt của bit này, lõi luôn phản hồi các gói dữ liệu SETUP bằng bắt tay ACK.

Bit 16 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 15 USBAEP: Điểm cuối hoạt động USB

Bit này luôn được đặt thành 1, cho biết điểm cuối điều khiển 0 luôn hoạt động trong tất cả các
cấu hình và giao diện.

Bit 14:2 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 1:0 MPSIZ: Kích thước gói tối đa

Kích thước gói tối đa cho điểm cuối OUT điều khiển 0 giống như kích thước được lập trình trong điểm cuối
điều khiển IN 0.

00: 64 byte

01: 32 byte

10: 16 byte

11: 8 byte

Thanh ghi điều khiển điểm cuối-x của thiết bịOTG_FS (OTG_FS_DOEPCTLx) (x = 1..3,
trong đó x = Endpoint_number)
*
Độ lệch địa chỉ cho điểm cuối OUT: 0xB00 + 0x20 x

Giá trị đặt lại: 0x0000 0000

Ứng dụng sử dụng thanh ghi này để kiểm soát hành vi của từng điểm cuối logic ngoài điểm cuối 0.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

MPSIZ
GNẮL

KANC

MPNS
SIDPE

UH
ẦÀQ

PYTPE
YN
ANEPE

ỏht
k

PEABSU

Kín đáo Kín đáo



n

UI
/MD OD
NP E
DS
OS

0E
DD

PV
D1

IN
FP

DF
RI

/R
/MD

rs rs wwww rw rw rw rw r r rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31 EPENA: Kích hoạt điểm cuối

Áp dụng cho điểm cuối IN và OUT.

Ứng dụng đặt bit này để bắt đầu truyền dữ liệu trên điểm cuối.

Lõi xóa bit này trước khi thiết lập bất kỳ ngắt nào sau đây trên điểm cuối này:

– Giai đoạn SETUP đã xong

– Điểm cuối bị vô hiệu hóa

– Chuyển khoản hoàn tất

902/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Bit 30 EPDIS: Vô hiệu hóa điểm cuối

Ứng dụng đặt bit này để dừng truyền/nhận dữ liệu trên điểm cuối, ngay cả trước khi quá trình truyền cho điểm

cuối đó hoàn tất. Ứng dụng phải chờ ngắt bị vô hiệu hóa Điểm cuối trước khi coi điểm cuối là bị vô

hiệu hóa. Lõi xóa bit này trước khi thiết lập ngắt bị vô hiệu hóa Điểm cuối. Ứng dụng chỉ được đặt bit này

nếu bật Điểm cuối đã được đặt cho điểm cuối này.

Bit 29 SD1PID: Đặt PID DATA1

Chỉ áp dụng cho các điểm cuối IN và OUT ngắt/số lượng lớn. Việc ghi vào trường này sẽ đặt trường PID (DPID)

dữ liệu điểm cuối trong thanh ghi này thành DATA1.


SODDFRM: Đặt khung lẻ

Chỉ áp dụng cho các điểm cuối IN và OUT đẳng thời. Việc ghi vào trường này sẽ đặt trường Khung chẵn/Lẻ (EONUM)

thành khung lẻ.

Bit 28 SD0PID: Đặt DATA0 PID

Chỉ áp dụng cho các điểm cuối OUT ngắt/số lượng lớn.

Việc ghi vào trường này sẽ đặt trường PID (DPID) dữ liệu điểm cuối trong thanh ghi này thành DATA0.

SEVNFRM: Đặt khung chẵn

Chỉ áp dụng cho các điểm cuối OUT đẳng thời.

Việc ghi vào trường này sẽ đặt trường Khung chẵn/Lẻ (EONUM) thành khung chẵn.

Bit 27 SNAK: Đặt NAK

Việc ghi vào bit này sẽ đặt bit NAK cho điểm cuối.

Sử dụng bit này, ứng dụng có thể điều khiển việc truyền bắt tay NAK trên điểm cuối. Lõi cũng có thể

đặt bit này cho các điểm cuối OUT khi ngắt Hoàn tất Truyền hoặc sau khi nhận được THIẾT LẬP trên điểm

cuối.

Bit 26 CNAK: Xóa NAK

Việc ghi vào bit này sẽ xóa bit NAK cho điểm cuối.

Bit 25:22 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 21 STALL: bắt tay STALL

Chỉ áp dụng cho các điểm cuối OUT không điều khiển, không đẳng thời (loại truy cập là rw).

Ứng dụng đặt bit này để tạm dừng tất cả mã thông báo từ máy chủ USB đến điểm cuối này. Nếu một bit NAK,

Global IN NAK hoặc Global OUT NAK được đặt cùng với bit này thì bit STALL sẽ được ưu tiên. Chỉ ứng

dụng mới có thể xóa bit này, không bao giờ xóa được phần lõi.

Bit 20 SNPM: Chế độ rình mò

Bit này cấu hình điểm cuối sang chế độ Snoop. Trong chế độ Snoop, lõi không kiểm tra tính chính xác của các

gói OUT trước khi chuyển chúng sang bộ nhớ ứng dụng.

Bit 19:18 EPTYP: Loại điểm cuối

Đây là kiểu truyền được hỗ trợ bởi điểm cuối logic này.
00: Kiểm soát

01: đẳng thời

10: Số lượng lớn

11: Ngắt

RM0008 Phiên bản 21 903/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Bit 17 NAKSTS: trạng thái NAK

Chỉ ra những điều sau đây:

0: Lõi đang truyền các bắt tay không NAK dựa trên trạng thái FIFO.

1: Lõi đang truyền bắt tay NAK trên điểm cuối này.

Khi ứng dụng hoặc lõi đặt bit này:

Lõi ngừng nhận bất kỳ dữ liệu nào trên điểm cuối OUT, ngay cả khi có khoảng trống trong RxFIFO để
chứa gói đến.

Bất kể cài đặt của bit này, lõi luôn phản hồi các gói dữ liệu SETUP bằng bắt tay ACK.

Bit 16 EONUM: Khung chẵn/lẻ

Chỉ áp dụng cho các điểm cuối IN và OUT đẳng thời.


Cho biết số khung trong đó lõi truyền/nhận dữ liệu đẳng thời cho điểm cuối này. Ứng dụng phải lập trình

số khung chẵn/lẻ mà nó dự định truyền/nhận dữ liệu đẳng thời cho điểm cuối này bằng cách sử dụng các
trường SEVNFRM và SODDFRM trong thanh ghi này.

0: Khung chẵn

1: Khung lẻ

PIDD: Dữ liệu điểm cuối PID

Chỉ áp dụng cho các điểm cuối OUT ngắt/số lượng lớn.

Chứa PID của gói được nhận hoặc truyền trên điểm cuối này. Ứng dụng phải lập trình PID của gói

đầu tiên được nhận hoặc truyền trên điểm cuối này, sau khi điểm cuối được kích hoạt. Ứng dụng sử dụng
trường thanh ghi SD0PID để lập trình PID DATA0 hoặc DATA1.

0: DỮ LIỆU0

1: DỮ LIỆU1

Bit 15 USBAEP: Điểm cuối hoạt động USB

Cho biết liệu điểm cuối này có hoạt động trong cấu hình và giao diện hiện tại hay không. Lõi xóa bit này
cho tất cả các điểm cuối (trừ EP 0) sau khi phát hiện thiết lập lại USB. Sau khi nhận được lệnh
SetConfiguration và SetInterface, ứng dụng phải lập trình các thanh ghi điểm cuối tương ứng và đặt bit này.

Bit 14:11 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 10:0 MPSIZ: Kích thước gói tối đa

Ứng dụng phải lập trình trường này với kích thước gói tối đa cho điểm cuối logic hiện tại. Giá trị này được
tính bằng byte.

904/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Thanh ghi ngắt điểm cuối-x của thiết bịOTG_FS (OTG_FS_DIEPINTx) (x = 0..3, trong
đó x = Endpoint_number)
*
Độ lệch địa chỉ: 0x908 + 0x20 x

Giá trị đặt lại: 0x0000 0080

Thanh ghi này cho biết trạng thái của điểm cuối đối với các sự kiện liên quan đến USB và
AHB. Nó được hiển thị trong Hình 311. Ứng dụng phải đọc thanh ghi này khi bit ngắt điểm
cuối IN của thanh ghi ngắt lõi (IEPINT trongOTG_FS_GINTSTS) được đặt.
Trước khi ứng dụng có thể đọc thanh ghi này, trước tiên, ứng dụng phải đọc tất cả các thanh
ghi ngắt điểm cuối (OTG_FS_DAINT) của thiết bị để lấy số điểm cuối chính xác cho thanh
ghi ngắt Device endpoint-x. Ứng dụng phải xóa bit thích hợp trong thanh ghi này để xóa các bit
tương ứng trong thanh ghiOT_FS_DAINT vàOTG_FS_GINTSTS.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

EFXT

CRFX
EFXTTI
ENPENI

DSIDPE
MNPENI
Kín đáo Kín đáo

STSPRDTKP
íđ
K

íđ
K


o

o
rc_ rc_ r
rc_ rc_ rc_ rc_ rc_ rc_
w1 w1 w1 w1 w1 w1 w1 w1

Bit 31:14 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 13 NAK: Đầu vào NAK

Lõi tạo ra ngắt này khi NAK được thiết bị truyền hoặc nhận. Trong trường hợp điểm cuối IN đẳng
thời, ngắt sẽ được tạo khi gói có độ dài bằng 0 được truyền do không có dữ liệu trong Tx FIFO.

Bit 12 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 11 PKTDRPSTS: Trạng thái rớt gói

Bit này cho ứng dụng biết rằng gói ISOC OUT đã bị loại bỏ. Bit này không có bit mặt nạ liên quan
và không tạo ra ngắt.

Bit 10:8 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 7 TXFE: Truyền FIFO trống

Ngắt này được xác nhận khi TxFIFO cho điểm cuối này trống một nửa hoặc hoàn toàn trống. Trạng
thái trống một nửa hoặc hoàn toàn được xác định bởi bit Mức trống TxFIFO trong thanh ghiOT_FS_GAHBCFG
(bit TXFELVL trongOTG_FS_GAHBCFG).

Bit 6 INEPNE: IN điểm cuối NAK có hiệu lực

Bit này có thể bị xóa khi ứng dụng xóa điểm cuối IN NAK bằng cách ghi vào bit CNAK
trongOTG_FS_DIEPCTLx.

Ngắt này chỉ ra rằng lõi đã lấy mẫu bộ bit NAK (bởi ứng dụng hoặc lõi). Ngắt chỉ ra rằng bit NAK
điểm cuối IN do ứng dụng đặt đã có hiệu lực trong lõi.

Sự gián đoạn này không đảm bảo rằng bắt tay NAK được gửi trên USB. Bit STALL được ưu tiên hơn bit
NAK.

Bit 5 INEPNM: Mã thông báo IN được nhận có EP không khớp.

Cho biết rằng dữ liệu ở đầu TxFIFO không định kỳ thuộc về một điểm cuối khác với điểm cuối mà mã
thông báo IN đã được nhận. Ngắt này được xác nhận trên điểm cuối mà mã thông báo IN đã được nhận.

RM0008 Phiên bản 21 905/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Bit 4 ITTXFE: Nhận được mã thông báo IN khi TxFIFO trống

Chỉ áp dụng cho các điểm cuối IN không định kỳ.

Cho biết rằng mã thông báo IN đã được nhận khi TxFIFO liên quan (định kỳ/không định kỳ) trống. Ngắt này
được xác nhận trên điểm cuối mà mã thông báo IN đã được nhận.

Bit 3 TOC: Điều kiện hết thời gian chờ

Chỉ áp dụng cho các điểm cuối Control IN.


Cho biết lõi đã phát hiện tình trạng hết thời gian chờ trên USB đối với mã thông báo IN cuối cùng trên điểm

cuối này.

Bit 2 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 1 EPDISD: Ngắt bị vô hiệu hóa ở điểm cuối

Bit này chỉ ra rằng điểm cuối bị vô hiệu hóa theo yêu cầu của ứng dụng.

Bit 0 XFRC: Truyền xong ngắt

Trường này cho biết quá trình truyền được lập trình đã hoàn tất trên AHB cũng như trên USB đối với điểm
cuối này.

Thanh ghi ngắt điểm cuối-x của thiết bịOTG_FS (OTG_FS_DOEPINTx) (x = 0..3, trong đó
x = Endpoint_number)
*
Độ lệch địa chỉ: 0xB08 + 0x20 x

Giá trị đặt lại: 0x0000 0080

Thanh ghi này cho biết trạng thái của điểm cuối đối với các sự kiện liên quan đến USB và
AHB. Nó được hiển thị trong Hình 311. Ứng dụng phải đọc thanh ghi này khi bit Ngắt điểm cuối
OUT của thanh ghiOTG_FS_GINTSTS (bit OEPINT trongOTG_FS_GINTSTS) được thiết
lập. Trước khi ứng dụng có thể đọc thanh ghi này, trước tiên nó phải đọc thanh ghiOT_FS_DAINT
để có được số điểm cuối chính xác choOTG_FS_DOEPINTx
đăng ký. Ứng dụng phải xóa bit thích hợp trong thanh ghi này để xóa các bit tương ứng
trong thanh ghiOT_FS_DAINT vàOTG_FS_GINTSTS.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 IÚT 0
RREB

CRFX
DSIDPE
SIDPETO
XRSHPSTS

Kín đáo Kín đáo


RRETKPTUO

íđ
K

íđ
K


o

o
1w_cr

1w_cr

1w_cr

1w_cr

1w_cr

1w_cr

1w_cr

1w_cr

Bit 31:14 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 13 NAK: Đầu vào NAK

Lõi tạo ra ngắt này khi NAK được thiết bị truyền hoặc nhận. Trong trường hợp điểm cuối IN đẳng thời, ngắt
sẽ được tạo khi gói có độ dài bằng 0 được truyền do không có dữ liệu trong Tx FIFO.

Bit 12 BERR: Ngắt lỗi lảm nhảm

Lõi tạo ra ngắt này khi nhận được tiếng bập bẹ cho điểm cuối.

Bit 11:9 Dự trữ, phải được giữ ở giá trị đặt lại.

906/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Bit 8 OUTPKTERR: Lỗi gói OUT

Ngắt này được xác nhận khi lõi phát hiện lỗi tràn hoặc lỗi CRC đối với gói OUT. Ngắt này chỉ hợp lệ khi
ngưỡng được kích hoạt.

Bit 7:6 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 5 STSPHSRX: Đã nhận được pha trạng thái để ghi điều khiển

Ngắt này chỉ được tạo sau khi lõi đã chuyển tất cả dữ liệu mà máy chủ đã gửi trong giai đoạn dữ liệu của
quá trình truyền ghi điều khiển tới bộ nhớ đệm hệ thống. Ngắt cho ứng dụng biết rằng máy chủ đã chuyển
từ giai đoạn dữ liệu sang giai đoạn trạng thái của quá trình truyền ghi điều khiển. Ứng dụng có thể sử dụng
ngắt này để ACK hoặc STALL giai đoạn trạng thái, sau khi nó đã giải mã giai đoạn dữ liệu.

Bit 4 OTEPDIS: Đã nhận được mã thông báo OUT khi điểm cuối bị vô hiệu hóa

Chỉ áp dụng để kiểm soát điểm cuối OUT.

Cho biết rằng mã thông báo OUT đã được nhận khi điểm cuối chưa được bật. Ngắt này được xác nhận ở điểm
cuối mà mã thông báo OUT đã được nhận.

Bit 3 STUP: Giai đoạn SETUP đã hoàn tất

Chỉ áp dụng cho điểm cuối điều khiển OUT.

Cho biết rằng giai đoạn THIẾT LẬP cho điểm cuối điều khiển đã hoàn tất và không nhận được gói SETUP giáp
lưng nào nữa cho quá trình truyền điều khiển hiện tại. Khi ngắt này, ứng dụng có thể giải mã gói dữ liệu
SETUP đã nhận.

Bit 2 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 1 EPDISD: Ngắt bị vô hiệu hóa ở điểm cuối

Bit này chỉ ra rằng điểm cuối bị vô hiệu hóa theo yêu cầu của ứng dụng.

Bit 0 XFRC: Truyền xong ngắt

Trường này cho biết quá trình truyền được lập trình đã hoàn tất trên AHB cũng như trên USB đối với điểm
cuối này.

Thanh ghi kích thước truyền thiết bị OG_FS IN điểm cuối 0 (OTG_FS_DIEPTSIZ0)

Độ lệch địa chỉ: 0x910

Giá trị đặt lại: 0x0000 0000

Ứng dụng phải sửa đổi thanh ghi này trước khi bật điểm cuối 0. Khi điểm cuối 0 được bật bằng cách sử
dụng bit kích hoạt điểm cuối trong thanh ghi điều khiển điểm cuối 0 điều khiển thiết bị (EPENA
trongOTG_FS_DIEPCTL0), lõi sẽ sửa đổi thanh ghi này. Ứng dụng chỉ có thể đọc thanh ghi này khi lõi đã
xóa bit kích hoạt Điểm cuối.

Điểm cuối khác 0 sử dụng thanh ghi cho điểm cuối 1–3.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

PKTCNT XFRSIZ
Kín đáo Kín đáo
ồ ồ rw rw rw rw rw rw rw

RM0008 Phiên bản 21 907/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Bit 31:21 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 20:19 PKTCNT: Số lượng gói

Cho biết tổng số gói USB cấu thành lượng dữ liệu Kích thước truyền cho điểm cuối 0.

Trường này bị giảm đi mỗi khi một gói (kích thước tối đa hoặc gói ngắn) được đọc từ TxFIFO.

Bit 18:7 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 6:0 XFRSIZ: Kích thước truyền

Cho biết kích thước truyền theo byte cho điểm cuối 0. Lõi chỉ ngắt ứng dụng sau khi đã sử dụng
hết lượng dữ liệu có kích thước truyền. Kích thước truyền có thể được đặt thành kích thước gói

tối đa của điểm cuối, bị gián đoạn ở cuối mỗi gói.


Lõi giảm trường này mỗi khi một gói từ bộ nhớ ngoài được ghi vào TxFIFO.

908/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Thanh ghi kích thước truyền thiết bị OUT điểm cuối 0 của thiết bịOTG_FS (OTG_FS_DOEPTSIZ0)

Độ lệch địa chỉ: 0xB10

Giá trị đặt lại: 0x0000 0000

Ứng dụng phải sửa đổi thanh ghi này trước khi bật điểm cuối 0. Khi điểm cuối 0 được bật bằng cách sử
dụng bit kích hoạt Điểm cuối trong các thanh ghi Otto_FS_DOEPCTL0 (bit EPENA trongOTG_FS_DOEPCTL0), lõi
sẽ sửa đổi thanh ghi này. Ứng dụng chỉ có thể đọc thanh ghi này khi lõi đã xóa bit kích hoạt Điểm cuối.

Điểm cuối khác 0 sử dụng thanh ghi cho điểm cuối 1–3.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

TUYỆT VỜI
TNCTKP
XFRSIZ
Kín đáo Kín đáo
íđ

o K

ồ ồ rw rw rw rw rw rw rw rw

Bit 31 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 30:29 STUPCNT: CÀI ĐẶT số gói

Trường này chỉ định số lượng gói dữ liệu SETUP giáp lưng mà điểm cuối có thể nhận được.

01: 1 gói
10: 2 gói
11: 3 gói

Bit 28:20 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 19 PKTCNT: Số gói

Trường này giảm xuống 0 sau khi gói được ghi vào RxFIFO.

Bit 18:7 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 6:0 XFRSIZ: Kích thước truyền

Cho biết kích thước truyền theo byte cho điểm cuối 0. Lõi chỉ ngắt ứng dụng sau khi đã sử
dụng hết lượng dữ liệu có kích thước truyền. Kích thước truyền có thể được đặt thành kích

thước gói tối đa của điểm cuối, bị gián đoạn ở cuối mỗi gói.
Lõi giảm trường này mỗi khi gói được đọc từ RxFIFO và ghi vào bộ nhớ ngoài.

RM0008 Phiên bản 21 909/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Thanh ghi kích thước truyền điểm cuối-x của thiết bịOTG_FS (OTG_FS_DIEPTSIZx)
(x = 1..3, trong đó x = Endpoint_number)
*
Độ lệch địa chỉ: 0x910 + 0x20 x

Giá trị đặt lại: 0x0000 0000

Ứng dụng phải sửa đổi thanh ghi này trước khi kích hoạt điểm cuối. Khi điểm cuối được bật bằng
cách sử dụng bit kích hoạt điểm cuối trong thanh ghiOT_FS_DIEPCTLx (bit EPENA
trongOTG_FS_DIEPCTLx), lõi sẽ sửa đổi thanh ghi này. Ứng dụng chỉ có thể đọc thanh ghi này
khi lõi đã xóa bit kích hoạt Điểm cuối.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

PKTCNT XFRSIZ
Kín đáo
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31:29 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 28:19 PKTCNT: Số lượng gói tin

Cho biết tổng số gói USB cấu thành lượng dữ liệu Kích thước truyền cho điểm cuối này.

Trường này bị giảm đi mỗi khi một gói (kích thước tối đa hoặc gói ngắn) được đọc từ TxFIFO.

Bit 18:0 XFRSIZ: Kích thước truyền

Trường này chứa kích thước truyền tính bằng byte cho điểm cuối hiện tại. Lõi chỉ làm gián đoạn
ứng dụng sau khi nó đã sử dụng hết lượng dữ liệu có kích thước truyền. Kích thước truyền có
thể được đặt thành kích thước gói tối đa của điểm cuối, bị gián đoạn ở cuối mỗi gói.

Lõi giảm trường này mỗi khi một gói từ bộ nhớ ngoài được ghi vào TxFIFO.

910/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Thiết bịOTG_FS IN điểm cuối truyền thanh ghi trạng thái FIFO
(OTG_FS_DTXFSTSx) (x = 0..3, trong đó x = Endpoint_number)
*
Độ lệch địa chỉ cho điểm cuối IN: 0x918 + 0x20 x

Thanh ghi chỉ đọc này chứa thông tin không gian trống cho điểm cuối TxFIFO của thiết bị IN.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
INEPTFSAV
Kín đáo
rrrrrrrrrrrrrrr

31:16 Dự trữ, phải được giữ ở giá trị đặt lại.

15:0 INEPTFSAV: Có sẵn không gian TxFIFO ở điểm cuối

Cho biết lượng không gian trống có sẵn trong Endpoint TxFIFO.
Các giá trị tính theo từ 32 bit:

0x0: Điểm cuối TxFIFO đã đầy


0x1: có sẵn 1 từ

0x2: có sẵn 2 từ

0xn: có sẵn n từ

Khác: Đặt trước

Thanh ghi kích thước truyền điểm cuối-x của thiết bịOTG_FS OUT endpoint-x (OTG_FS_DOEPTSIZx)
(x = 1..3, trong đó x = Endpoint_number)
*
Độ lệch địa chỉ: 0xB10 + 0x20 x

Giá trị đặt lại: 0x0000 0000

Ứng dụng phải sửa đổi thanh ghi này trước khi kích hoạt điểm cuối. Khi điểm cuối được bật bằng
cách sử dụng bit Kích hoạt điểm cuối của các thanh ghiOTG_FS_DOEPCTLx (bit EPENA
trongOTG_FS_DOEPCTLx), lõi sẽ sửa đổi thanh ghi này. Ứng dụng chỉ có thể đọc thanh ghi này khi
lõi đã xóa bit kích hoạt Điểm cuối.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
RXDPID/S
PKTCNT XFRSIZ
TUPCNT

o íđ
K

r/rw r/rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Bit 31 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 30:29 RXDPID: Dữ liệu đã nhận PID

Chỉ áp dụng cho các điểm cuối OUT đẳng thời.

Đây là dữ liệu PID nhận được trong gói cuối cùng cho điểm cuối này.
00: DỮ LIỆU0

01: DỮ LIỆU2

10: DỮ LIỆU1

11: MDATA

RM0008 Phiên bản 21 911/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

STUPCNT: CÀI ĐẶT số lượng gói tin

Chỉ áp dụng để kiểm soát Điểm cuối OUT.


Trường này chỉ định số lượng gói dữ liệu SETUP giáp lưng mà điểm cuối có thể nhận được.

01: 1 gói
10: 2 gói
11: 3 gói

Bit 28:19 PKTCNT: Số lượng gói tin

Cho biết tổng số gói USB cấu thành lượng dữ liệu Kích thước truyền cho điểm cuối này.

Trường này bị giảm đi mỗi khi một gói (kích thước tối đa hoặc gói ngắn) được ghi vào RxFIFO.

Bit 18:0 XFRSIZ: Kích thước truyền

Trường này chứa kích thước truyền tính bằng byte cho điểm cuối hiện tại. Lõi chỉ làm gián đoạn ứng
dụng sau khi nó đã sử dụng hết lượng dữ liệu có kích thước truyền. Kích thước truyền có thể được
đặt thành kích thước gói tối đa của điểm cuối, bị gián đoạn ở cuối mỗi gói.

Lõi giảm trường này mỗi khi gói được đọc từ RxFIFO và ghi vào bộ nhớ ngoài.

28.16.5 Thanh ghi điều khiển cổng nguồn và đồng hồ OG_FS


(OTG_FS_PCGCCTL)
Độ lệch địa chỉ: 0xE00

Giá trị đặt lại: 0x0000 0000

Thanh ghi này có sẵn trong chế độ máy chủ và thiết bị.

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

KLCPPTS
ẬL
TÝ V

Kín đáo

KLCHETAG

o íđ
K

rw ồ ồ

Bit 31:5 Dự trữ, phải được giữ ở giá trị đặt lại.

Bit 4 PHYSUSP: PHY bị đình chỉ

Cho biết rằng PHY đã bị đình chỉ. Bit này được cập nhật sau khi PHY bị treo sau khi ứng dụng đã
đặt bit STPPCLK (bit 0).

Bit 3:2 Dành riêng, phải được giữ ở giá trị đặt lại.

Bit 1 GATEHCLK: Cổng HCLK

Ứng dụng đặt bit này để chuyển HCLK sang các mô-đun không phải là AHB Slave và Master và logic đánh
thức khi USB bị treo hoặc phiên không hợp lệ. Ứng dụng sẽ xóa bit này khi USB được nối lại hoặc
phiên mới bắt đầu.

Bit 0 STPPCLK: Dừng đồng hồ PHY

Ứng dụng đặt bit này để dừng đồng hồ PHY khi USB bị treo, phiên không hợp lệ hoặc thiết bị bị ngắt
kết nối. Ứng dụng sẽ xóa bit này khi USB được nối lại hoặc phiên mới bắt đầu.

912/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

28.16.6 Bản đồ đăng kýOTG_FS

Bảng bên dưới cung cấp bản đồ đăng ký USBOTG và các giá trị đặt lại.

Bảng 208. Bản đồ đăng kýOTG_FS và giá trị đặt lại

1
7
2
3
4
5
6

0
09
1
8
11
921

71
61

31
21
13
03

92

82
72
62
52
42
32
22
12
Đăng ký bù đắp

5
4
8
0
OTG_FS_GOTG

QRS
TCD
CTL

DLVSB

DLVSA

QRPNH
STDIC
0x000 Kín đáo Kín đáo Kín đáo

NEPNHD

SCSGNH

SCSQRS
NEPNHSH
Đặt lại giá trị 0 0 0 1 0 0 0 0 0 0

OTG_FS_GOTG
INT

TEDES
0x004 Kín đáo Kín đáo Kín đáo Res.

TEDGNH
ENDCBD

GHCSSNH

GHCSSS
GHCOTDA
Đặt lại giá trị 0 0 0 0 0 0

OOT_FS_GAHB
CFG
0x008 Kín đáo Kín đáo

LVLEFXT

KSMTNIG
LVLEFXTP
Đặt lại giá trị 00 0

OOT_FS_GUSB TRDT TOCAL


CFG

ACPNH
DOMDF

DOMHF

ẬLV
TKPXTC

0x00C Kín đáo

PACPRS


íđ
K

íđ
K


o

o
Đặt lại giá trị 0 0 0 0 1 0 1 0 0 1 0 0 0

OTG_FS_GRST TXFNUM
CTL

TSRCF

TSRSH

TSRSC
LDIBHA

0x010 Kín đáo

HSLFFXR
HSLFFXT


o íđ
K
Đặt lại giá trị 1 0000000 000

OOT_FS_GINTS

FOS

SIMM
FPOE
TNICH

TS

DOMC
TNIPEI
EFXTP

PSUSE

LVLFXR
TNIPEO

TNITO
TNIQRS

EFXTPN
HBK

TSRBSU
TNIUKW

0x014
ÁI

RFXIOSII
TNITRPH
CỆ
T

PRDOOSI
GHCSDIC

PSUSBSU
ENDMUNE

FFEKANIG
FFEKANOG
íđ
K

íđ
K

íđ
K

íđ
K


o

o

FNÁ
RHN
/G Ô PT
H
O I
K

Đặt lại giá trị 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0

OOT_FS_GINT
MCH
MIUW

MFOS

MSK
MITRP

TNIPEI
MIQRS

MSIMM
MFPOE
TNIPEO

TNITO
HB
K

TSRBSU
MEFXTP

0x018
ÁI

MPSUSE
CỆ
T

MLVLFXR
MEFXTPN
MRFXIOSII

MPRDOOSI
MGHCSDIC

MPSUSBSU
MENDMUNE

MFFEKANIG
MFFEKANOG
íđ
K

íđ
K

íđ
K

íđ
K

íđ
K


o

o
/X
MRF RO
MO XI
FS PI

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

OOT_FS_GRXS
TSR (chế độ PKTSTS DID BCNT CHNUM
máy chủ) Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


0x01C
OOT_FS_GRXS
TSR (Chế độ FRMNUM PKTSTS DID BCNT EPNUM
thiết bị) Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

RM0008 Phiên bản 21 913/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Bảng 208. Sơ đồ đăng kýOTG_FS và giá trị đặt lại (tiếp theo)

1
5
ố8
s

7
6

0
3
9

2
4
11
13

12
Đăng ký bù đắp

OOT_FS_GRXS
TSR (chế độ PKTSTS DID BCNT CHNUM
máy chủ) Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


0x020
OOT_FS_GRXS
TSPR (Chế độ FRMNUM PKTSTS DID BCNT EPNUM
thiết bị) Kín đáo

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

OOT_FS_GRXF RXFD
0x024 Kín đáo
KÍCH THƯỚC

Đặt lại giá trị 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0

OOT_FS_HNPT
XFSIZ/
NPTXFD/TX0FD NPTXFSA/TX0FSA
0x028 OTG_FS_DIEPT
XF0

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0

OOT_FS_HNPT NPTXFSAV
NPTXQTOP NPTQXSAV
XSTS
0x02C
.seR

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0

OG_FS_
GCCFG
0x038 Kín đáo Kín đáo
NWDRWP.
NESBSUBV
NESASUV
NETUOFOS


o íđ
K

Đặt lại giá trị 0 0 0 0

OOT_FS_CID ID SẢN PHẨM


0x03C
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0

OOT_FS_HPTX PTXFSIZ PTXSA


FIZ
0x100
Đặt lại giá trị 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0

OTG_FS_DIEPT INEPTXFD INEPTXSA


XF1
0x104
Đặt lại giá trị 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0

OTG_FS_DIEPT INEPTXFD INEPTXSA


XF2
0x108
Đặt lại giá trị 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0

OTG_FS_DIEPT INEPTXFD INEPTXSA


XF3
0x10C
Đặt lại giá trị 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0

OOT_FS_HCFG
SSLSF

0x400 Kín đáo


SCPSLSF

Đặt lại giá trị 000

OTG_FS_HFIR TUYỆT VỜI

0x404 Kín đáo


Đặt lại giá trị 1 1 1 0 1 0 1 0 0 1 1 0 0 0 0 0

OOT_FS_HFNU FTREM FRNUM


M
0x408
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1

914/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Bảng 208. Sơ đồ đăng kýOTG_FS và giá trị đặt lại (tiếp theo)

1
7
2
3
4
5
6

0
09
1
8
11
921

71
61

31
21
13
03

92

82
72
62
52
42
32
22
12
Đăng ký bù đắp

5
4
8
0
OOT_FS_HPTX PTXQTOP PTXQSAV PTXFSAVL
STS
0x410
Đặt lại giá trị 0 0 0 0 0 0 0 0 YYYYYYYYYYYYYYYYYYYYYYY

OOT_FS_HAINT HAINT
0x414 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

OOT_FS_HAINT HAINTM
MSK
0x418 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

OOT_FS_HPRT PSPD PTCTL

TSRP

SERP

ANEP
ACOP
RWPP

ILX
V

IÁC
PSUSP

TEDCP
IÒU
0x440 Kín đáo

GN

GNHCEP
GNHCCOP

o íđ
K
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

OOT_FS_HCCH BỐ MCNT EPNUM MPSIZ


AR0

RIDPE
SIDHC

PYTPE

VEDSL
ANEHC

0x500
MRFDDO


o íđ
K
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

OOT_FS_HCCH BỐ MCNT EPNUM MPSIZ


AR1
RIDPE
SIDHC

PYTPE

VEDSL
ANEHC

0x520
MRFDDO


o íđ
K

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

OOT_FS_HCCH BỐ MCNT EPNUM MPSIZ


AR2
RIDPE
SIDHC

PYTPE

VEDSL
ANEHC

0x540
MRFDDO


o íđ
K

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

OOT_FS_HCCH BỐ MCNT EPNUM MPSIZ


AR3
RIDPE
SIDHC

PYTPE

VEDSL
ANEHC

0x560
MRFDDO


o íđ
K

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

OOT_FS_HCCH BỐ MCNT EPNUM MPSIZ


AR4
RIDPE
SIDHC

PYTPE

VEDSL
ANEHC

0x580
MRFDDO

íđ

o K

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

OOT_FS_HCCH BỐ MCNT EPNUM MPSIZ


AR5
RIDPE
SIDHC

PYTPE

VEDSL
ANEHC

0x5A0
MRFDDO

íđ

o K

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

OOT_FS_HCCH BỐ MCNT EPNUM MPSIZ


AR6
RIDPE
SIDHC

PYTPE

VEDSL
ANEHC

0x5C0
MRFDDO


o íđ
K

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

OOT_FS_HCCH BỐ MCNT EPNUM MPSIZ


AR7
RIDPE
SIDHC

PYTPE

VEDSL
ANEHC

0x5E0
MRFDDO


o íđ
K

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

OOT_FS_HCINT 0
KAN
KCA

HHC

CRFX
YN UH
ẦÀ Q
RRETD

RREBB

RREXT

G
ỪT

0x508 Kín đáo


íđ
K

íđ
K


o

Đặt lại giá trị 0000 000 00

RM0008 Phiên bản 21 915/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Bảng 208. Sơ đồ đăng kýOTG_FS và giá trị đặt lại (tiếp theo)

1
7
2
3
4
5
6

0
09
1
8
11
921

71
61

31
21
13
03

92

82
72
62
52
42
32
22
12

5
4
8
0
Đăng ký bù đắp

OOT_FS_HCINT

KCA

HHC

CRFX
UH
ẦÀQ
1

YN
RRETD

RREBB

RREXT

G
ỪT
0x528 Kín đáo

íđ
K

íđ
K


o

o
Đặt lại giá trị 0000 000 00

OOT_FS_HCINT

KCA

HHC

CRFX
UH
ẦÀQ
2

YN
RRETD

RREBB

RREXT

G
ỪT
0x548 Kín đáo

íđ
K

íđ
K


o

o
Đặt lại giá trị 0000 000 00

OOT_FS_HCINT

KCA

HHC

CRFX
UH
ẦÀQ
3

YN
RRETD

RREBB

RREXT

G
ỪT
0x568 Kín đáo

íđ
K

íđ
K


o

o
Đặt lại giá trị 0000 000 00

OOT_FS_HCINT

KCA

HHC

CRFX
UH
ẦÀQ
4

YN
RRETD

RREBB

RREXT

G
ỪT
0x588 Kín đáo

íđ
K

íđ
K


o

o
Đặt lại giá trị 0000 000 00

OOT_FS_HCINT

KCA

HHC

CRFX
UH
ẦÀQ
5

YN
RRETD

RREBB

RREXT

G
ỪT
0x5A8 Kín đáo

íđ
K

íđ
K


o

o
Đặt lại giá trị 0000 000 00

OOT_FS_HCINT

KCA

HHC

CRFX
UH
ẦÀ Q
6

YN
RRETD

RREBB

RREXT

G
ỪT
0x5C8 Kín đáo

íđ
K

íđ
K


o

o
Đặt lại giá trị 0000 000 00

OOT_FS_HCINT

KCA

HHC

CRFX
UH
ẦÀ Q
7

YN
RRETD

RREBB

RREXT

G
ỪT
0x5E8 Kín đáo

íđ
K

íđ
K


o

o
Đặt lại giá trị 0000 000 00

OOT_FS_HCINT

MKAN
MKCA

MHHC
MSK0

MCRFX
ÌT
MRRETD

MRREBB

MRREXT

NR
0x50C Kín đáo
ỪKT

HẠ
AÓH

GN
íđ
K

íđ
K


o

o
Đặt lại giá trị 0000 000 00

OOT_FS_HCINT
MKAN
MKCA

MHHC
MSK1

MCRFX
ÌT
MRRETD

MRREBB

MRREXT

NR

0x52C Kín đáo


ỪKT

HẠ
AÓH

GN
íđK

íđK


o

Đặt lại giá trị 0000 000 00

OOT_FS_HCINT
MKAN
MKCA

MHHC

MSK2
MCRFX
ÌT
MRRETD

MRREBB

MRREXT

NR

0x54C Kín đáo


ỪKT

HẠ
AÓH

GN
íđ
K

íđ
K


o

Đặt lại giá trị 0000 000 00

OOT_FS_HCINT
MKAN
MKCA

MHHC

MSK3
MCRFX
ÌT
MRRETD

MRREBB

MRREXT

NR

0x56C Kín đáo


ỪKT

HẠ
AÓH

GN
íđ
K

íđ
K


o

Đặt lại giá trị 0000 000 00

OOT_FS_HCINT
MKAN
MKCA

MHHC

MSK4
MCRFX
ÌT
MRRETD

MRREBB

MRREXT

NR

0x58C Kín đáo


ỪKT

HẠ
AÓH

GN
íđ
K

íđ
K


o

Đặt lại giá trị 0000 000 00

916/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Bảng 208. Sơ đồ đăng kýOTG_FS và giá trị đặt lại (tiếp theo)

1
7
2
3
4
5
6

0
09
1
8
11
921

71
61

31
21
13
03

12
Đăng ký bù đắp

5
4
8
0
OOT_FS_HCINT
MSK5

MKAN
MKCA

MHHC
0x5AC Kín đáo

MCRFX
ÌT
MRRETD

MRREBB

MRREXT

NR
ỪKT

HẠ
AÓH

GN
íđ
K

íđ
K


o

o
Đặt lại giá trị 0000 000 00

OOT_FS_HCINT
MSK6

MKAN
MKCA

MHHC
0x5CC Kín đáo

MCRFX
ÌT
MRRETD

MRREBB

MRREXT

NR
ỪKT

HẠ
AÓH

GN
íđ
K

íđ
K


o

o
Đặt lại giá trị 0000 000 00

OOT_FS_HCINT
MSK7

MKAN
MKCA

MHHC
0x5EC Kín đáo

MCRFX
ÌT
MRRETD

MRREBB

MRREXT

NR
ỪKT

HẠ
AÓH

GN
íđ
K

íđ
K


o

o
Đặt lại giá trị 0000 000 00

OOT_FS_HCTSI dpid PKTCNT XFRSIZ


Z0
0x510
íđ
K

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

o

Đặt lại giá trị

OOT_FS_HCTSI dpid PKTCNT XFRSIZ


Z1
0x530
íđ
K

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

o

Đặt lại giá trị

OOT_FS_HCTSI dpid PKTCNT XFRSIZ


Z2
0x550
íđ
K

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

o

Đặt lại giá trị

OOT_FS_HCTSI dpid PKTCNT XFRSIZ


Z3
0x570
íđ
K

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

o

Đặt lại giá trị

OOT_FS_HCTSI dpid PKTCNT XFRSIZ


Z4
0x590
íđ
K

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

o

Đặt lại giá trị

OOT_FS_HCTSI dpid PKTCNT XFRSIZ


Z5
0x5B0
íđ
K

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

o

Đặt lại giá trị

OOT_FS_HCTSI dpid PKTCNT XFRSIZ


Z6
0x5D0
íđ
K

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

o

Đặt lại giá trị

OOT_FS_HCTSI dpid PKTCNT XFRSIZ


Z7
0x5F0
íđ
K

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

o

Đặt lại giá trị

OOT_FS_DCFG
LVIFP

DPSD

0x800 Kín đáo


KSHOSLZN

o íđ
K

Đặt lại giá trị 000000000 000

OOT_FS_DCTL
SIDS
LTCT

0x804 Kín đáo


UỢƯR
KANIGS
KANIGC

GISUWR
STSNOG
KANOGS
KANOGC
ENDGRPOP

Đặt lại giá trị 000000000000

RM0008 Phiên bản 21 917/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Bảng 208. Sơ đồ đăng kýOTG_FS và giá trị đặt lại (tiếp theo)

1
5
ố8
s

7
6

0
3
9

2
4
11
91
81
71
61
51
41
31
21

01
13
03
Đăng ký bù đắp

92

82
72

22
12
02
OOT_FS_DSTS FNSOF

RREE
0x808 Kín đáo Kín đáo

GNỪGN
DPSMUNE
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

OTG_FS_DIEPM

mot
SK

MDPE
MKAN
0x810 Kín đáo Kín đáo

MCRFX
MENPENI

MMNPENI

KSMEFXTTI


o íđ
K
Đặt lại giá trị 0 0000 00

OTG_FS_DOEP
MSK

MDPE
MPUTS
MRREB
0x814 Kín đáo

MCRFX
MDPETO
KSMKAN

MXRSHPSTS
íđ
K

íđ
K

íđ
K
MRRETKPTUO


o

o
Đặt lại giá trị 00 0 000 00

OOT_FS_DAINT OEPINT IEPINT


0x818
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

OOT_FS_DAINT OEMM IEPM


MSK
0x81C
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

OOT_FS_DVBU VBUSDT
SDIS
0x828 Kín đáo
Đặt lại giá trị 0 0 0 1 0 1 1 1 1 1 0 1 0 1 1 1

OOT_FS_DVBU DVBUSP
TUYỆT VỜI
0x82C Kín đáo
Đặt lại giá trị 010110111000

OTG_FS_DIEPE INEPTXFEM
MPMSK
0x834 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

OTG_FS_DIEPC EPTY MPSI


TXFNUM
TL0 P Z
GNẮL

KANC
SIDPE

YN UH
ẦÀ Q
ANEPE

0x900 Kín đáo


ỏht
k

PEABSU

n
íđ
K

íđ
K

íđ
K


o

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0

TG_FS_DTXFST INEPTFSAV
S0
0x918 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0

OTG_FS_DIEPC TXFNUM MPSIZ


TL1
GNẮL

KANC
SIDPE

UH
ẦÀ Q

PYTPE
YN
ANEPE

0x920 Kín đáo


ỏht
k

PEABSU

n

ODE
íđ
K

NP

UI
o

/MD
DS
OS

0E
DD

PV
D1

IN
FP

DF
RI

/R
/MD

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
M

Đặt lại giá trị

TG_FS_DTXFST INEPTFSAV
S1
0x938 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0

918/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Bảng 208. Sơ đồ đăng kýOTG_FS và giá trị đặt lại (tiếp theo)

1
7
2
3
4
5
6

0
09
1
8
11
921

71
61

31
21
13
03

92

82
72
62
52
42
32
22
12

5
4
8
0
Đăng ký bù đắp

GNẮL

KANC

PYTPE
ANEPE
OTG_FS_DIEPC

ỏht
k

PEABSU
TXFNUM MPSIZ


MRFDDOS

n
TL2

OD
E
íđ
K
0x940 Kín đáo

NP

UI
o

/MD
/R
M IN
DF DS
0E
PV
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

TG_FS_DTXFST INEPTFSAV
S2
0x958 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
GNẮL

KANC

PYTPE
ANEPE

OTG_FS_DIEPC

ỏht
k

PEABSU
TXFNUM MPSIZ


MRFDDOS

n
TL3

ODE
íđ
K
0x960 Kín đáo

NP

UI
o

/MD
/R
M IN
DF 0E
PV DS

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

TG_FS_DTXFST INEPTFSAV
S3
0x978 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
GNẮL

KANC

MPNS

EPTY MPSI
ANEPE

OTG_FS_DOEP
ỏht
k

PEABSU

n

CTL0 P Z
íđ
K

íđ
K

0xB00 Kín đáo Kín đáo



o

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 1 0 0


GNẮL

KANC

MPNS

PYTPE
ANEPE

OTG_FS_DOEP
ỏht
k

PEABSU

MPSIZ

MRFDDOS

CTL1
ODE

0xB20 Kín đáo Kín đáo


UI
/MD NP
/R
M IN
DF 0E
PV DS

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


GNẮL

KANC

MPNS

PYTPE
ANEPE

OTG_FS_DOEP
ỏht
k

PEABSU

MPSIZ

MRFDDOS

CTL2
ODE

0xB40 Kín đáo Kín đáo


UI
/MD NP
/R
M IN
DF 0E
PV DS

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


GNẮL

KANC

MPNS

PYTPE
ANEPE

OTG_FS_DOEP
ỏht
k

PEABSU

MPSIZ

MRFDDOS

CTL3
ODE

0xB60 Kín đáo Kín đáo


UI
/MD NP
/R
M IN
DF 0E
PV DS

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


KAN

COT
EFXT

CRFX
EFXTTI
ENPENI

OTG_FS_DIEPI
DSIDPE
MNPENI

NT0
STSPRDTKP
íđ
K

íđ
K

íđ
K

0x908 Kín đáo



o

Đặt lại giá trị 0 0 10000 00

RM0008 Phiên bản 21 919/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Bảng 208. Sơ đồ đăng kýOTG_FS và giá trị đặt lại (tiếp theo)

1
7
2
3
4
5
6

0
09
1
8
11
921

71
61

31
21
13
03

92

82
72
62
52
42
32
22
12
Đăng ký bù đắp

5
4
8
0
OTG_FS_DIEPI

KAN

COT
EFXT

CRFX
NT1

EFXTTI
ENPENI

DSIDPE
MNPENI
0x928 Kín đáo

STSPRDTKP
íđ
K

íđ
K

íđ
K


o

o
Đặt lại giá trị 0 0 10000 00

OTG_FS_DIEPI

KAN

COT
EFXT

CRFX
NT2

EFXTTI
ENPENI

DSIDPE
MNPENI
0x948 Kín đáo

STSPRDTKP
íđ
K

íđ
K

íđ
K


o

o
Đặt lại giá trị 0 0 10000 00

OTG_FS_DIEPI

KAN

COT
EFXT

CRFX
NT3

EFXTTI
ENPENI

DSIDPE
MNPENI
0x968 Kín đáo

STSPRDTKP
íđ
K

íđ
K

íđ
K


o

o
Đặt lại giá trị 0 0 10000 00

OTG_FS_DOEPI

KAN

IÚT
RREB

CRFX
NT0

DSIDPE
0xB08 Kín đáo

SIDPETO
XRSHPSTS
RRETKPTUO
íđ
K

íđ
K

íđ
K


o

o
Đặt lại giá trị 00 0 000 00

OTG_FS_DOEPI
KAN

IÚT
RREB

CRFX
NT1

DSIDPE
0xB28 Kín đáo

SIDPETO
XRSHPSTS
RRETKPTUO
íđ
K

íđ
K

íđ
K


o

o
Đặt lại giá trị 00 0 000 00

OTG_FS_DOEPI
KAN

IÚT
RREB

CRFX
NT2

DSIDPE
0xB48 Kín đáo

SIDPETO
XRSHPSTS
RRETKPTUO
íđ
K

íđ
K

íđ
K


o

o
Đặt lại giá trị 00 0 000 00

OTG_FS_DOEPI
KAN

IÚT
RREB

CRFX
NT3
DSIDPE

0xB68 Kín đáo


SIDPETO
XRSHPSTS
RRETKPTUO
íđ
K

íđ
K

íđ
K


o

Đặt lại giá trị 00 0 000 00

OTG_FS_DIEPT PKTC
XFRSIZ
SIZ0 NT
0x910 Kín đáo Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0

OTG_FS_DIEPT PKTCNT XFRSIZ


SIZ1
0x930 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

OTG_FS_DIEPT PKTCNT XFRSIZ


SIZ2
0x950 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

OTG_FS_DIEPT PKTCNT XFRSIZ


SIZ3
0x970 Kín đáo
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

920/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Bảng 208. Sơ đồ đăng kýOTG_FS và giá trị đặt lại (tiếp theo)

1
7
2
3
4
5
6

0
09
1
8
11
921

71
61

31
21
13
03

92

82
72
62
52

32
22
12
Đăng ký bù đắp

5
4
8
0
OTG_FS_DOEP TÚI
XFRSIZ
TSIZ0 CNT

TNCTKP
0xB10 Kín đáo Kín đáo

o íđ
K
Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0

OTG_FS_DOEP
PKTCNT XFRSIZ
TSIZ1
0xB30
/DIPDXR
YỜ
TỆI UV
T

o íđ
K

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

OTG_FS_DOEP
PKTCNT XFRSIZ
TSIZ2
0xB50
/DIPDXR
YỜ
TỆI UV
T

o íđ
K

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

OTG_FS_DOEP
PKTCNT XFRSIZ
TSIZ3
0xB70
/DIPDXR
YỜ
TỆI UV
T

o íđ
K

Đặt lại giá trị 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

OOT_FS_PCGC
CTL
0xE00 Kín đáo

KLCPPTS
ẬLV

KLCHETAG


o íđ
K
Đặt lại giá trị

Tham khảo Phần 3.3: Bản đồ bộ nhớ cho các địa chỉ biên của thanh ghi.

RM0008 Phiên bản 21 921/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

28.17 Mô hình lập trìnhOTG_FS

28.17.1 Khởi tạo lõi

Ứng dụng phải thực hiện trình tự khởi tạo cốt lõi. Nếu cáp được kết nối trong khi bật
nguồn, bit chế độ hoạt động hiện tại trongOT_FS_GINTSTS (bit CMOD trongOTG_FS_GINTSTS) phản
ánh chế độ đó. Bộ điều khiểnOTG_FS chuyển sang chế độ máy chủ khi phích cắm “A” được kết nối
hoặc chế độ thiết bị khi phích cắm “B” được kết nối.

Phần này giải thích việc khởi tạo bộ điều khiểnOTG_FS sau khi bật nguồn. Ứng dụng phải
tuân theo trình tự khởi tạo bất kể hoạt động ở chế độ máy chủ hay thiết bị. Tất cả các
thanh ghi toàn cầu lõi được khởi tạo theo cấu hình của lõi:

1. Lập trình các trường sau trong thanh ghiOT_FS_GAHBCFG:

– Bit mặt nạ ngắt toàn cục GINTMSK = 1

– RxFIFO không trống (bit RXFLVL trongOTG_FS_GINTSTS)

– Mức trống TxFIFO định kỳ

2. Lập trình các trường sau trong thanh ghiOT_FS_GUSBCFG:

– Bit có khả năng HNP

– Bit có khả năng SRP


– Trường hiệu chuẩn hết thời gian FS

– Trường thời gian quay vòng của USB

3. Phần mềm phải vạch mặt các bit sau trong thanh ghiOTG_FS_GINTMSK:

Mặt nạ ngắt OOT

Mặt nạ ngắt không khớp chế độ

4. Phần mềm có thể đọc bit CMOD trongOTG_FS_GINTSTS để xác định xem bộ điều khiểnOTG_FS đang
hoạt động ở chế độ máy chủ hay thiết bị.

922/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

28.17.2 Khởi tạo máy chủ

Để khởi tạo lõi làm máy chủ, ứng dụng phải thực hiện các bước sau:

1. Lập trình HPRTINT trong thanh ghiOTG_FS_GINTMSK để vạch mặt

2. Lập trình thanh ghiOTG_FS_HCFG để chọn máy chủ tốc độ tối đa

3. Lập trình bit PPWR trongOTG_FS_HPRT thành 1. Điều này điều khiển VBUS trên USB.

4. Đợi PCDET bị gián đoạn trongOTG_FS_HPRT0. Điều này cho biết rằng một thiết bị đang kết
nối với cổng.

5. Lập trình bit PRST trongOTG_FS_HPRT thành 1. Việc này sẽ bắt đầu quá trình đặt lại.

6. Đợi ít nhất 10 ms để quá trình thiết lập lại hoàn tất.

7. Lập trình bit PRST trongOTG_FS_HPRT thành 0.

8. Đợi ngắt PENCHNG trongOTG_FS_HPRT.

9. Đọc bit PSPD trongOTG_FS_HPRT để biết tốc độ được liệt kê.

10. Lập trình thanh ghi HFIR với giá trị tương ứng với đồng hồ PHY đã chọn 1

11. Lập trình trường FSLSPCS trong thanh ghiOTG_FS_HCFG theo tốc độ của thiết bị được phát hiện
ở bước 9. Nếu FSLSPCS đã bị thay đổi thì phải thực hiện thiết lập lại cổng.

12. Lập trình thanh ghiOTG_FS_GRXFSIZ để chọn kích thước của FIFO nhận.

13. Lập trình thanh ghiOTG_FS_HNPTXFSIZ để chọn kích thước và địa chỉ bắt đầu của
FIFO truyền không định kỳ cho các giao dịch không định kỳ.

14. Lập trình thanh ghiOTG_FS_HPTXFSIZ để chọn kích thước và địa chỉ bắt đầu của
truyền FIFO định kỳ cho các giao dịch định kỳ.

Để giao tiếp với các thiết bị, phần mềm hệ thống phải khởi tạo và kích hoạt ít nhất một kênh.

28.17.3 Khởi tạo thiết bị

Ứng dụng phải thực hiện các bước sau để khởi tạo lõi khi thiết bị bật nguồn hoặc sau khi thay
đổi chế độ từ máy chủ sang thiết bị.

1. Lập trình các trường sau trong thanh ghiOTG_FS_DCFG:

– Tốc độ thiết bị

– Bắt tay trạng thái OUT có độ dài khác 0

2. Lập trình thanh ghiOTG_FS_GINTMSK để vạch mặt các ngắt sau:


– Thiết lập lại USB

- Đếm xong

– Đình chỉ sớm

– Tạm dừng USB


– SOF

3. Lập trình bit VBUSBSEN trong thanh ghiOTG_FS_GCCFG để kích hoạt cảm biến VBUS ở chế độ thiết
bị “B” và cung cấp điện áp 5 volt qua điện trở kéo lên trên đường DP.

4. Đợi USBRST bị gián đoạn trongOTG_FS_GINTSTS. Nó cho biết rằng quá trình thiết lập lại đã được
phát hiện trên USB kéo dài trong khoảng 10 mili giây khi nhận được ngắt này.

Đợi ENUMDNE ngắt trongOTG_FS_GINTSTS. Ngắt này cho biết kết thúc thiết lập lại trên USB. Khi
nhận được tín hiệu ngắt này, ứng dụng phải đọc tập tin OG_FS_DSTS

RM0008 Phiên bản 21 923/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

đăng ký để xác định tốc độ liệt kê và thực hiện các bước được liệt kê trong Khởi tạo điểm
cuối khi hoàn thành liệt kê ở trang 940.

Tại thời điểm này, thiết bị đã sẵn sàng chấp nhận các gói SOF và thực hiện truyền điều khiển trên
điểm cuối điều khiển 0.

28.17.4 Mô hình lập trình máy chủ

Khởi tạo kênh

Ứng dụng phải khởi tạo một hoặc nhiều kênh trước khi có thể giao tiếp với các thiết bị
được kết nối. Để khởi tạo và kích hoạt một kênh, ứng dụng phải thực hiện các bước sau:

1. Lập trình thanh ghiOTG_FS_GINTMSK để vạch mặt các mục sau:

2. Ngắt kênh

– FIFO truyền không định kỳ trống đối với các giao dịch OUT (áp dụng khi
hoạt động ở cấp độ giao dịch theo đường ống với trường đếm gói được lập trình với
nhiều hơn một).

– FIFO truyền không định kỳ, nửa trống đối với các giao dịch OUT (áp dụng khi hoạt động
ở cấp độ giao dịch theo đường ống với trường đếm gói được lập trình với nhiều hơn
một).

3. Lập trình thanh ghiOTG_FS_HAINTMSK để vạch mặt các kênh đã chọn'


ngắt quãng.

4. Lập trình thanh ghiOT_FS_HCINTMSK để vạch mặt các ngắt quan tâm liên quan đến giao
dịch được đưa ra trong thanh ghi ngắt kênh máy chủ.

5. Lập trình thanh ghiOTG_FS_HCTSIZx của kênh đã chọn với tổng kích thước truyền, tính bằng byte
và số lượng gói dự kiến, bao gồm cả các gói ngắn. Ứng dụng phải lập trình trường PID với dữ
liệu ban đầu PID (sẽ được sử dụng trong giao dịch OUT đầu tiên hoặc được mong đợi từ
giao dịch IN đầu tiên).

6. Lập trình thanh ghiOTG_FS_HCCHARx của kênh đã chọn với thiết bị


các đặc điểm của điểm cuối, chẳng hạn như loại, tốc độ, hướng, v.v. (Kênh có thể được bật
bằng cách chỉ đặt bit kích hoạt kênh thành 1 khi ứng dụng sẵn sàng truyền hoặc nhận bất kỳ
gói nào).

Tạm dừng một kênh

Ứng dụng có thể vô hiệu hóa bất kỳ kênh nào bằng cách lập trình thanh ghiOTG_FS_HCCHARx với các
bit CHDIS và CHENA được đặt thành 1. Điều này cho phép máy chủOTG_FS xóa các yêu cầu đã đăng (nếu
có) và tạo ra ngắt kênh bị tạm dừng. Ứng dụng phải đợi ngắt CHH trongOTG_FS_HCINTx trước khi phân
bổ lại kênh cho các giao dịch khác.
Máy chủOTG_FS không làm gián đoạn giao dịch đã được bắt đầu trên USB.

Trước khi tắt kênh, ứng dụng phải đảm bảo rằng có ít nhất một vùng trống trong hàng đợi yêu cầu
không định kỳ (khi tắt kênh không định kỳ) hoặc hàng đợi yêu cầu định kỳ (khi tắt kênh định
kỳ). Ứng dụng có thể chỉ cần xóa các yêu cầu đã đăng khi hàng đợi Yêu cầu đầy (trước khi tắt
kênh), bằng cách lập trình thanh ghiOT_FS_HCCHARx với bit CHDIS được đặt thành 1 và bit CHENA bị
xóa thành 0.

Ứng dụng dự kiến sẽ vô hiệu hóa một kênh theo bất kỳ điều kiện nào sau đây:

924/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

1. Khi nhận được tín hiệu ngắt STALL, TXERR, BBERR hoặc DTERR trong bộ nhớ đệm
OOT_FS_HCINTx cho kênh IN hoặc OUT. Ứng dụng phải có khả năng nhận các ngắt khác
(DTERR, Nak, Data, TXERR) cho cùng một kênh trước khi nhận được lệnh tạm dừng.

2. Khi nhận được DISCINT (Ngắt kết nối thiết bị) trongOTG_FS_GINTSTS.
(Ứng dụng dự kiến sẽ vô hiệu hóa tất cả các kênh đã bật).

3. Khi ứng dụng hủy bỏ quá trình chuyển trước khi hoàn thành bình thường.

Mô hình hoạt động

Ứng dụng phải khởi tạo một kênh trước khi liên lạc với thiết bị được kết nối.
Phần này giải thích trình tự hoạt động được thực hiện cho các loại giao dịch USB khác
nhau.

• Viết FIFO truyền

Máy chủOTG_FS tự động ghi một mục nhập (yêu cầu OUT) vào hàng đợi yêu cầu định
kỳ/không định kỳ, cùng với từ ghi cuối cùng của gói. Ứng dụng phải đảm bảo rằng có
ít nhất một vùng trống trong hàng đợi yêu cầu định kỳ/không định kỳ trước khi
bắt đầu ghi vào FIFO truyền. Ứng dụng phải luôn ghi vào FIFO truyền bằng lời. Nếu
kích thước gói không được căn chỉnh theo từ, ứng dụng phải sử dụng phần đệm. Máy
chủOTG_FS xác định kích thước gói thực tế dựa trên kích thước gói và kích thước
truyền tối đa được lập trình.

Hình 313. Truyền tác vụ ghi FIFO

Bắt đầu

Đọc GNPTXSTS/HPTXFSIZ
đăng ký FIFO có sẵn
và không gian hàng đợi

Đợi NPTXFE/PTXFE
1 MPS hoặc
ngắt lời KHÔNG Không gian FIFO LPS Đúng
OTG_FS_GINTSTS có sẵn?

Đúng

Viết 1 gói
dữ liệu để

truyền FIFO

Nhiều gói hơn


đê gư i?

KHÔNG

MPS: Kích thước gói tối đa


Xong
LPS: Kích thước gói cuối cùng

ai15673b

• Đọc FIFO nhận

RM0008 Phiên bản 21 925/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Ứng dụng phải bỏ qua tất cả các trạng thái gói ngoài gói dữ liệu IN (bx0010).

Hình 314. Nhận tác vụ đọc FIFO

Bắt đầu

KHÔNG

RXFLVL
ngắt ?

Đúng

Vạch mặt RXFLVL Mặt nạ RXFLVL Vạch mặt RXFLVL


ngắt ngắt ngắt

Đọc nhận được


Đọc
gói từ
Nhận FIFO OOT_FS_GRXSTSP

PKTSTS
KHÔNG
0b0010?

KHÔNG

Đúng

Đúng

BCNT > 0?

ai15674

• Giao dịch OUT/SETUP hàng loạt và kiểm soát

Hoạt động cấp giao dịch theo đường dẫn OUT/SETUP số lượng lớn hoặc điều khiển điển hình được
hiển thị trong Hình 315. Xem kênh 1 (ch_1). Hai gói OUT số lượng lớn được truyền đi. Giao
dịch SETUP điều khiển hoạt động theo cách tương tự nhưng chỉ có một gói. Các giả
định là:

– Ứng dụng đang cố gửi hai gói có kích thước gói tối đa (kích thước truyền = 1.024 byte).

– FIFO truyền không định kỳ có thể chứa hai gói (128 byte cho FS).

– Độ sâu hàng đợi yêu cầu không định kỳ = 4.

• Hoạt động OUT/SETUP số lượng lớn và điều khiển thông thường

Trình tự các thao tác trong (kênh 1) như sau:

a) Khởi tạo kênh 1

b) Viết gói đầu tiên cho kênh 1

c) Cùng với việc ghi từ cuối cùng, lõi viết một mục vào yêu cầu không định kỳ
xếp hàng

d) Ngay khi hàng đợi không định kỳ trở nên không trống, lõi sẽ cố gắng
gửi mã thông báo OUT trong khung hiện tại

e) Viết gói thứ hai (cuối cùng) cho kênh 1

f) Lõi tạo ra ngắt XFRC ngay khi giao dịch cuối cùng được thực hiện
hoàn thành thành công

926/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

g) Để đáp lại ngắt XFRC, hãy hủy phân bổ kênh cho các lần truyền khác h) Xử lý các phản hồi

không ACK

Hình 315. Các giao dịch OUT/SETUP số lượng lớn/điều khiển và số lượng lớn/điều khiển IN thông thường

Ứng dụng AHB Chủ nhà USB Thiết bị

1
init_reg(ch_1)

init_reg(ch_2) Hàng đợi yêu cầu không


định
1
viết_tx_fifo 4 kỳ Giả sử rằng hàng đợi
1
(ch_1) 3 này có thể chứa 4 mục.
MPS
set_ch_en 2
(ch_2)
ch_1
2 viết_tx_fifo
1 ch_2
(ch_1)
MPS
set_ch_en 5 NGOÀI

(ch_2) ch_1

ch_2 DỮ LIỆU0
MPS

3
ACK
set_ch_en
(ch_2) TRONG

4
DỮ LIỆU0

5
Ngắt RXFLVL

1 ACK
read_rx_sts
ch_1
MPS
read_rx_fifo NGOÀI
ch_2

set_ch_en
ch_2 DỮ LIỆU1
(ch_2)
MPS
ch_2

7 ACK
Ngắt XFRC
6
TRONG
Hủy phân bổ

(ch_1)

DỮ LIỆU1

Ngắt RXFLVL

6
1 ACK
read_rx_stsre
MPS
ad_rx_fifo

Ngắt RXFLVL số 8
ch_2

read_rx_sts
7
Ngắt XFRC

Vô hiệu hóa

(ch_2) 9
Ngắt RXFLVL

read_rx_sts
11 10
CHH ngắt r

Hủy phân bổ 12
(ch_2)
13

ai15675

Quy trình dịch vụ ngắt dành riêng cho kênh cho các giao dịch OUT/SETUP hàng loạt và kiểm
soát được hiển thị trong các mẫu mã sau.

• Ngắt quy trình dịch vụ cho OUT/SETUP số lượng lớn/điều khiển và số lượng lớn/điều khiển IN
giao dịch

a) Hàng loạt/Điều khiển OUT/THIẾT LẬP

Lộ mặt nạ (NAK/TXERR/STALL/XFRC) nếu (XFRC)

RM0008 Phiên bản 21 927/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Đặt lại số lỗi

Mặt nạ ACK

Hủy phân bổ kênh } else if (STALL)

Chuyển xong = 1

Vạch mặt CHH

Tắt kênh }

ngược lại nếu (NAK hoặc TXERR )


{

Tua lại con trỏ bộ đệm

Vạch mặt CHH

Tắt kênh nếu (TXERR) {

Số lỗi tăng dần

Vạch mặt ACK }

khác
{
Đặt lại số lỗi

} }

ngược lại nếu (CHH) {

Che dấu CHH

nếu (Chuyển xong hoặc (Error_count == 3))

Hủy phân bổ kênh } else {

Khởi tạo lại kênh }

} khác nếu (ACK) {

Đặt lại số lỗi

Mặt nạ ACK }

Ứng dụng dự kiến sẽ ghi các gói dữ liệu vào FIFO truyền khi và khi còn trống trong FIFO truyền và hàng đợi Yêu

cầu. Ứng dụng có thể sử dụng ngắt NPTXFE trongOTG_FS_GINTSTS để tìm không gian FIFO truyền. b) Hàng loạt/

Điều khiển IN

Lộ mặt nạ (TXERR/XFRC/BBERR/STALL/DTERR) nếu (XFRC) {

Đặt lại số lỗi

928/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Vạch mặt CHH

Tắt kênh

Đặt lại số lỗi

Mặt nạ ACK }

khác nếu (TXERR hoặc BBERR hoặc STALL)

{
Vạch mặt CHH

Tắt kênh nếu (TXERR) {

Số lỗi tăng dần

Vạch mặt ACK }

} khác nếu (CHH) {

Che dấu CHH

nếu (Chuyển xong hoặc (Error_count == 3))


{
Hủy phân bổ kênh } else {

Khởi tạo lại kênh }

} khác nếu (ACK) {

Đặt lại số lỗi

Mặt nạ ACK }

else if (DTERR) {

Đặt lại số lỗi

Ứng dụng dự kiến sẽ ghi các yêu cầu khi không gian hàng đợi Yêu cầu có sẵn và cho đến khi nhận được ngắt XFRC.

• Giao dịch IN hàng loạt và kiểm soát

Hoạt động ở cấp độ giao dịch theo đường ống IN số lượng lớn hoặc kiểm soát điển hình được hiển thị trong Hình 316.

Xem kênh 2 (ch_2). Các giả định là: – Ứng dụng đang

cố gắng nhận hai gói có kích thước gói tối đa (kích thước truyền = 1 024 byte).

– FIFO nhận có thể chứa ít nhất một gói có kích thước gói tối đa và hai gói

từ trạng thái trên mỗi gói (72 byte cho FS).

– Độ sâu hàng đợi yêu cầu không định kỳ = 4.

RM0008 Phiên bản 21 929/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Hình 316. Giao dịch IN hàng loạt/kiểm soát

Ứng dụng AHB Chủ nhà USB Thiết bị

1
init_reg(ch_1)

init_reg(ch_2) Yêu cầu không định kỳ

1 Xếp hàng
viết_tx_fifo 4 Giả sử rằng hàng đợi này
(ch_1) 1
3 có thể chứa 4 mục.
MPS
set_ch_en 2
(ch_2)
ch_1
2 viết_tx_fifo
1 ch_2
(ch_1)
MPS
set_ch_en 5 NGOÀI

(ch_2) ch_1

ch_2 DỮ LIỆU0
MPS

3
ACK
set_ch_en
(ch_2) TRONG

4
DỮ LIỆU0

5
Ngắt RXFLVL

1 ACK
read_rx_sts
ch_1
MPS
read_rx_fifo NGOÀI
ch_2

set_ch_en
ch_2 DỮ LIỆU1
(ch_2)
MPS
ch_2

7 ACK
Ngắt XFRC
6
TRONG
Hủy phân bổ

(ch_1)

DỮ LIỆU1

Ngắt RXFLVL

6
1 ACK
read_rx_stsre
MPS
ad_rx_fifo

Ngắt RXFLVL số 8
ch_2

read_rx_sts
7
Ngắt XFRC

Tắt
(ch_2) 9
Ngắt RXFLVL

read_rx_sts
11 10
CHH ngắt r

Hủy phân bổ 12
(ch_2)
13

ai15675

Trình tự các thao tác như sau: a) Khởi tạo kênh

2. b) Đặt bit CHENA trong

HCCHAR2 để ghi yêu cầu IN vào yêu cầu không định kỳ


xếp hàng.

c) Lõi cố gắng gửi mã thông báo IN sau khi hoàn thành OUT hiện tại
giao dịch.

d) Lõi tạo ra ngắt RXFLVL ngay khi gói nhận được được ghi
đến FIFO nhận.

e) Để đáp lại ngắt RXFLVL, hãy che dấu ngắt RXFLVL và đọc
trạng thái gói đã nhận để xác định số byte nhận được, sau đó đọc FIFO nhận tương ứng. Sau đó,
vạch mặt ngắt RXFLVL.

930/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

f) Lõi tạo ra ngắt RXFLVL cho mục nhập trạng thái hoàn thành truyền
trong FIFO nhận.

g) Ứng dụng phải đọc và bỏ qua trạng thái gói nhận khi trạng thái gói nhận không phải là gói dữ
liệu IN (PKTSTS trong GRXSTSR 0b0010).

h) Lõi tạo ra ngắt XFRC ngay khi trạng thái gói nhận được
đọc.

Tôi) Để đáp lại ngắt XFRC, hãy vô hiệu hóa kênh và ngừng ghi vào thanh ghiOT_FS_HCCHAR2
để có thêm yêu cầu. Lõi ghi yêu cầu vô hiệu hóa kênh vào hàng đợi yêu cầu không định
kỳ ngay sau khi thanh ghiOT_FS_HCCHAR2 được ghi.

j) Lõi tạo ra ngắt RXFLVL ngay khi trạng thái dừng được ghi vào FIFO nhận.

k) Đọc và bỏ qua trạng thái gói nhận.

l) Lõi tạo ra ngắt CHH ngay khi trạng thái dừng được bật lên từ
nhận FIFO.

m) Để đáp lại ngắt CHH, hãy phân bổ lại kênh cho các lần truyền khác.

n) Xử lý các phản hồi không phải ACK

• Kiểm soát các giao dịch

Các giai đoạn Thiết lập, Dữ liệu và Trạng thái của quá trình truyền điều khiển phải được thực hiện

dưới dạng ba lần truyền riêng biệt. Các giao dịch OUT ở giai đoạn Thiết lập, Dữ liệu hoặc Trạng thái được

thực hiện tương tự như các giao dịch OUT hàng loạt đã được giải thích trước đó. Các giao dịch IN ở giai

đoạn dữ liệu hoặc trạng thái được thực hiện tương tự như các giao dịch IN số lượng lớn đã được giải thích trước đó.

Đối với cả ba giai đoạn, ứng dụng phải đặt trường EPTYP trongOTG_FS_HCCHAR1 thành
Kiểm soát. Trong giai đoạn Thiết lập, ứng dụng phải đặt trường PID trongOTG_FS_HCTSIZ1 thành
THIẾT LẬP.

• Ngắt giao dịch OUT

Hoạt động OUT ngắt điển hình được hiển thị trong Hình 317. Các giả định là:

– Ứng dụng đang cố gửi một gói trong mỗi khung (tối đa 1 kích thước gói tối đa), bắt đầu bằng
khung lẻ (kích thước truyền = 1 024 byte)

– FIFO truyền định kỳ có thể chứa một gói (1 KB)

– Độ sâu hàng đợi yêu cầu định kỳ = 4

Trình tự các thao tác như sau:

a) Khởi tạo và kích hoạt kênh 1. Ứng dụng phải đặt bit ODDFRM trongOTG_FS_HCCHAR1.

b) Viết gói đầu tiên cho kênh 1. c) Cùng với

từ ghi cuối cùng của mỗi gói, máy chủOTG_FS ghi một mục vào
hàng đợi yêu cầu định kỳ.

d) Máy chủOTG_FS cố gắng gửi mã thông báo OUT trong khung (lẻ) tiếp theo.

e) Máy chủOTG_FS tạo ra ngắt XFRC ngay sau khi gói cuối cùng được gửi đi.
được truyền đi thành công.

f) Để đáp lại ngắt XFRC, hãy khởi tạo lại kênh cho lần truyền tiếp theo.

RM0008 Phiên bản 21 931/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Hình 317. Giao dịch OUT/IN ngắt thông thường

Ứng dụng AHB Chủ nhà USB Thiết bị

1
init_reg(ch_1)

init_reg(ch_2) Hàng đợi yêu cầu định kỳ


1 Giả sử rằng hàng đợi này
viết_tx_fifo 3 có thể chứa 4 mục.
1
(ch_1)
MPS
set_ch_en
2
ch_1 4
(ch_2)

2 ch_2
3

NGOÀI
Khung
lẻ (vi mô)
DỮ LIỆU0
M PS

6 ACK
Ngắt XFRC

init_reg(ch_1) 4 TRONG

viết_tx_fifo
1 5
(ch_1)
MPS DỮ LIỆU0

Ngắt RXFLVL

ACK
read_rx_sts
1
read_rx_fifo 6 MPS

Ngắt RXFLVL

read_rx_sts ch_1
7 số 8

Ngắt XFRC
ch_2
init_reg(ch_2)
9

set_ch_en
(ch_2)

Khung
NGOÀI chẵn
Ngắt XFRC (vi mô)
DỮ LIỆU1
init_reg(ch_1)
MPS

1
viết_tx_fifo ACK
(ch_1)
MPS
TRONG

DỮ LIỆU1

ai15676

• Ngắt dịch vụ thường xuyên đối với các giao dịch OUT/IN bị gián đoạn

a) Ngắt RA

Lộ mặt nạ (NAK/TXERR/STALL/XFRC/FRMOR) nếu (XFRC)

Đặt lại số lỗi

Mặt nạ ACK

Hủy phân bổ kênh

khác

nếu (STALL hoặc FRMOR)

Mặt nạ ACK

Vạch mặt CHH

932/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Tắt kênh nếu (STALL) {

Chuyển xong = 1 }

} khác

nếu (NAK hoặc TXERR)

Tua lại con trỏ bộ đệm

Đặt lại số lỗi

Mặt nạ ACK

Vạch mặt CHH

Tắt Kênh } khác nếu (CHH) {

Che dấu CHH

nếu (Chuyển xong hoặc (Error_count == 3))

Hủy phân bổ kênh } else {

Khởi tạo lại Kênh (trong b_interval - 1 Frame tiếp theo) }

} khác
nếu (ACK) {

Đặt lại số lỗi

Mặt nạ ACK }

Ứng dụng sử dụng ngắt NPTXFE trongOTG_FS_GINTSTS để tìm không gian FIFO truyền. b) Ngắt VÀO

Lộ mặt nạ (NAK/TXERR/XFRC/BBERR/STALL/FRMOR/DTERR) nếu (XFRC) {

Đặt lại số lỗi

Mặt nạ ACK nếu

(OTG_FS_HCTSIZx.PKTCNT == 0)

Hủy phân bổ kênh } else {

Chuyển xong = 1

Vạch mặt CHH

Tắt kênh

RM0008 Phiên bản 21 933/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

} khác

nếu (STALL hoặc FRMOR hoặc NAK hoặc DTERR hoặc BBERR)

Mặt nạ ACK

Vạch mặt CHH

Tắt kênh nếu (STALL hoặc

BBERR)

Đặt lại số lỗi

Chuyển xong = 1 } else if (!

FRMOR)

Đặt lại số lỗi

khác

nếu (TXERR) {

Số lỗi tăng dần

Vạch mặt ACK

Vạch mặt CHH

Tắt kênh }

ngược

lại nếu (CHH)

{
Che dấu CHH

nếu (Chuyển xong hoặc (Error_count == 3))

Hủy phân bổ kênh } khác

Khởi tạo lại kênh (trong b_interval tiếp theo - 1 /Frame)

} khác
nếu (ACK) {

Đặt lại số lỗi

Mặt nạ ACK

934/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

• Gián đoạn giao dịch IN

Các giả định là:

– Ứng dụng đang cố gắng nhận một gói (tối đa 1 kích thước gói tối đa) trong mỗi khung,
bắt đầu bằng số lẻ (kích thước truyền = 1 024 byte).

– FIFO nhận có thể chứa ít nhất một gói có kích thước gói tối đa và hai gói
từ trạng thái trên mỗi gói (1 031 byte).

– Độ sâu hàng đợi yêu cầu định kỳ = 4.

• Hoạt động IN ngắt bình thường

Trình tự các thao tác như sau:

a) Khởi tạo kênh 2. Ứng dụng phải đặt bit ODDFRM trongOTG_FS_HCCHAR2.

b) Đặt bit CHENA trongOTG_FS_HCCHAR2 để ghi yêu cầu IN vào hàng đợi yêu cầu định kỳ. c)
Máy chủOTG_FS

ghi yêu cầu IN vào hàng đợi yêu cầu định kỳ cho mỗi lần ghi thanh ghiOTG_FS_HCCHAR2
với tập hợp bit CHENA.

d) Máy chủOTG_FS cố gắng gửi mã thông báo IN trong khung (lẻ) tiếp theo.

e) Ngay sau khi gói IN được nhận và ghi vào FIFO nhận, máy chủOTG_FS sẽ tạo ra ngắt RXFLVL.

f) Để đáp lại ngắt RXFLVL, hãy đọc trạng thái gói đã nhận để xác định số byte nhận
được, sau đó đọc FIFO nhận tương ứng. Ứng dụng phải che dấu ngắt RXFLVL trước
khi đọc FIFO nhận và vạch mặt sau khi đọc toàn bộ gói.

g) Lõi tạo ra ngắt RXFLVL cho mục nhập trạng thái hoàn thành truyền trong FIFO nhận. Ứng
dụng phải đọc và bỏ qua trạng thái gói nhận khi trạng thái gói nhận không phải
là gói dữ liệu IN (PKTSTS trong GRXSTSR 0b0010).

h) Lõi tạo ra ngắt XFRC ngay khi trạng thái gói nhận được
đọc.

Tôi) Để đáp lại ngắt XFRC, hãy đọc trường PKTCNT trongOTG_FS_HCTSIZ2.
Nếu bit PKTCNT trongOTG_FS_HCTSIZ2 không bằng 0, hãy tắt kênh trước khi khởi tạo
lại kênh cho lần truyền tiếp theo, nếu có). Nếu PKTCNT bit vào

RM0008 Phiên bản 21 935/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

OTG_FS_HCTSIZ2 = 0, khởi tạo lại kênh cho lần truyền tiếp theo. Lần này, ứng dụng
phải đặt lại bit ODDFRM trongOTG_FS_HCCHAR2.
• Giao dịch OUT đẳng thời

Hoạt động OUT đẳng thời điển hình được hiển thị trong Hình 318. Các giả định là:

– Ứng dụng đang cố gắng gửi một gói trong mỗi khung hình (tối đa 1 kích thước gói tối
đa), bắt đầu bằng khung lẻ. (kích thước truyền = 1 024 byte).

– FIFO truyền định kỳ có thể chứa một gói (1 KB).

– Độ sâu hàng đợi yêu cầu định kỳ = 4.

Trình tự các thao tác như sau:

a) Khởi tạo và kích hoạt kênh 1. Ứng dụng phải đặt bit ODDFRM trongOTG_FS_HCCHAR1.

b) Viết gói đầu tiên cho kênh 1.

c) Cùng với từ ghi cuối cùng của mỗi gói, máy chủ OG_FS ghi một mục vào
hàng đợi yêu cầu định kỳ.

d) Máy chủOTG_FS cố gắng gửi mã thông báo OUT trong khung tiếp theo (lẻ).

e) Máy chủOTG_FS tạo ra ngắt XFRC ngay sau khi gói cuối cùng được gửi đi.
được truyền đi thành công.

f) Để đáp lại ngắt XFRC, hãy khởi tạo lại kênh cho lần truyền tiếp theo.

g) Xử lý các phản hồi không phải ACK

936/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Hình 318. Giao dịch OUT/IN đẳng thời bình thường

Ứng dụng AHB Chủ nhà USB Thiết bị

1
init_reg(ch_1)

init_reg(ch_2) Hàng đợi yêu cầu định kỳ


1 Giả sử rằng hàng đợi này
viết_tx_fifo
1
3 có thể chứa 4 mục.
(ch_1)
MPS
set_ch_en 2
(ch_2) ch_1 4

2 ch_2

NGOÀI

Khung
DỮ LIỆU0
lẻ (vi mô)
M PS

6 Ngắt XFRC
ACK

init_reg(ch_1) 4 TRONG

viết_tx_fifo
1 5
(ch_1)
MPS DỮ LIỆU0

Ngắt RXFLVL

read_rx_sts
ACK
1
read_rx_fifo
6 MPS

Ngắt RXFLVL

read_rx_sts ch_1
7 số 8

Ngắt XFRC
ch_2
init_reg(ch_2)
9
set_ch_en
(ch_2)

Khung
NGOÀI
chẵn
Ngắt XFRC (vi mô)
DỮ LIỆU1
init_reg(ch_1)
MPS

1
viết_tx_fifo
MPS ACK
(ch_1)

TRONG

DỮ LIỆU1

ai15676

• Ngắt dịch vụ thường xuyên đối với các giao dịch OUT/IN đẳng thời gian

Mẫu mã: OUT đẳng thời

Lộ mặt nạ (FRMOR/XFRC) nếu


(XFRC)
{
Hủy phân bổ kênh

}
khác

nếu (FRMOR) {

Vạch mặt CHH


Tắt kênh

RM0008 Phiên bản 21 937/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

ngược

lại nếu (CHH)

{
Mặt nạ CHH

Hủy phân bổ kênh }

Mẫu mã: đẳng thời IN

Lộ mặt nạ (TXERR/XFRC/FRMOR/BBERR) nếu (XFRC hoặc FRMOR)

{ if (XFRC và (OTG_FS_HCTSIZx.PKTCNT == 0))

Đặt lại số lỗi

Hủy phân bổ kênh } else {

Vạch mặt CHH

Tắt kênh }

} khác

nếu (TXERR hoặc BBERR)

Số lỗi tăng dần

Vạch mặt CHH

Tắt Kênh } khác nếu (CHH) {

Che dấu CHH

nếu (Chuyển xong hoặc (Error_count == 3))

Hủy phân bổ kênh } else {

Khởi tạo lại kênh }

938/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

• Giao dịch IN đẳng thời

Các giả định là:

– Ứng dụng đang cố gắng nhận một gói (tối đa 1 kích thước gói tối đa) trong mỗi khung bắt
đầu bằng khung lẻ tiếp theo (kích thước truyền = 1 024 byte).

– FIFO nhận có thể chứa ít nhất một gói có kích thước gói tối đa và hai từ trạng thái
trên mỗi gói (1 031 byte).

– Độ sâu hàng đợi yêu cầu định kỳ = 4.

Trình tự các thao tác như sau:

a) Khởi tạo kênh 2. Ứng dụng phải đặt bit ODDFRM trongOTG_FS_HCCHAR2.

b) Đặt bit CHENA trongOTG_FS_HCCHAR2 để ghi yêu cầu IN vào hàng đợi yêu cầu định kỳ. c)
Máy chủOTG_FS

ghi yêu cầu IN vào hàng đợi yêu cầu định kỳ cho mỗi lần ghi thanh ghiOTG_FS_HCCHAR2 với
tập hợp bit CHENA.

d) Máy chủOTG_FS cố gắng gửi mã thông báo IN trong khung lẻ tiếp theo.

e) Ngay sau khi gói IN được nhận và ghi vào FIFO nhận, máy chủOTG_FS sẽ tạo ra ngắt RXFLVL.

f) Để đáp lại ngắt RXFLVL, hãy đọc trạng thái gói đã nhận để xác định số byte nhận được,
sau đó đọc FIFO nhận tương ứng. Ứng dụng phải che dấu ngắt RXFLVL trước khi đọc
FIFO nhận và vạch mặt nó sau khi đọc toàn bộ gói.

g) Lõi tạo ra ngắt RXFLVL cho mục nhập trạng thái hoàn thành truyền trong FIFO nhận. Lần
này, ứng dụng phải đọc và bỏ qua trạng thái gói nhận khi trạng thái gói nhận không
phải là gói dữ liệu IN (bit PKTSTS trongOTG_FS_GRXSTSR 0b0010).

h) Lõi tạo ra ngắt XFRC ngay khi trạng thái gói nhận được
đọc.

Tôi) Để đáp lại ngắt XFRC, hãy đọc trường PKTCNT trongOTG_FS_HCTSIZ2.
Nếu PKTCNT 0 trongOTG_FS_HCTSIZ2, hãy tắt kênh trước khi khởi tạo lại kênh cho lần
truyền tiếp theo, nếu có. Nếu PKTCNT = 0 trongOTG_FS_HCTSIZ2, hãy khởi tạo lại
kênh cho lần truyền tiếp theo. Lần này, ứng dụng phải đặt lại bit ODDFRM
trongOTG_FS_HCCHAR2.

• Chọn độ sâu hàng đợi

Chọn độ sâu hàng đợi yêu cầu định kỳ và không định kỳ một cách cẩn thận để phù hợp với
số lượng điểm cuối định kỳ/không định kỳ được truy cập.

Độ sâu hàng đợi yêu cầu không định kỳ ảnh hưởng đến hiệu suất truyền không định
kỳ. Hàng đợi càng sâu (cùng với kích thước FIFO đủ), lõi càng có khả năng thực hiện
chuyển khoản không định kỳ thường xuyên hơn. Nếu kích thước hàng đợi nhỏ, lõi chỉ có
thể đưa vào các yêu cầu mới khi không gian hàng đợi được giải phóng.

Độ sâu hàng đợi yêu cầu định kỳ của lõi là rất quan trọng để thực hiện chuyển giao
định kỳ theo lịch trình. Chọn độ sâu hàng đợi định kỳ, dựa trên số lần truyền định kỳ
được lên lịch trong một vi khung. Nếu độ sâu hàng đợi yêu cầu định kỳ nhỏ hơn các lần
truyền định kỳ được lên lịch trong microframe thì tình trạng tràn khung sẽ xảy ra.

• Xử lý tình trạng lảm nhảm

Bộ điều khiểnOTG_FS xử lý hai trường hợp bập bẹ: bập bẹ gói và bập bẹ cổng.
Hiện tượng lảm nhảm gói xảy ra nếu thiết bị gửi nhiều dữ liệu hơn kích thước gói tối đa cho

RM0008 Phiên bản 21 939/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

kênh. Hiện tượng bập bẹ cổng xảy ra nếu lõi tiếp tục nhận dữ liệu từ thiết bị tại EOF2
(cuối khung 2, rất gần với SOF).

Khi bộ điều khiểnOTG_FS phát hiện ra tiếng bập bẹ của gói, nó sẽ dừng ghi dữ liệu vào
bộ đệm Rx và đợi kết thúc gói (EOP). Khi phát hiện EOP, nó sẽ xóa dữ liệu đã được ghi
trong bộ đệm Rx và tạo ra ngắt Babble cho ứng dụng.

Khi bộ điều khiểnOTG_FS phát hiện ra lỗi cổng, nó sẽ xóa RxFIFO và vô hiệu hóa cổng. Sau
đó, lõi tạo ra một ngắt bị vô hiệu hóa Cổng (HPRTINT trongOTG_FS_GINTSTS,
PENCHNG trongOTG_FS_HPRT). Khi nhận được ngắt này, ứng dụng phải xác định rằng đây không
phải do tình trạng quá dòng (một nguyên nhân khác gây ra ngắt Cổng bị vô hiệu hóa)
bằng cách kiểm tra POCA trongOTG_FS_HPRT, sau đó thực hiện thiết lập lại mềm. Lõi
không gửi thêm bất kỳ mã thông báo nào sau khi nó phát hiện ra tình trạng lảm nhảm cổng.

28.17.5 Mô hình lập trình thiết bị

Khởi tạo điểm cuối khi đặt lại USB

1. Đặt bit NAK cho tất cả các điểm cuối OUT

– SNAK = 1 trongOTG_FS_DOEPCTLx (cho tất cả các điểm cuối OUT)

2. Vạch mặt các bit ngắt sau

– INEP0 = 1 trongOTG_FS_DAINTMSK (điểm cuối điều khiển 0 IN)

– OUTEP0 = 1 trongOTG_FS_DAINTMSK (điểm cuối điều khiển 0 OUT)


– STUP = 1 trong DOEPMSK

– XFRC = 1 trong DOEPMSK

– XFRC = 1 trong DIEPMSK

– TOC = 1 trong DIEPMSK

3. Thiết lập RAM FIFO dữ liệu cho từng FIFO

– Lập trình thanh ghiOTG_FS_GRXFSIZ, để có thể nhận dữ liệu điều khiển OUT và dữ liệu
cài đặt. Nếu không bật ngưỡng, thì mức tối thiểu này phải bằng 1 kích thước gói tối
đa của điểm cuối điều khiển 0 + 2 từ (đối với trạng thái của gói dữ liệu OUT điều
khiển) + 10 từ (đối với các gói thiết lập).

– Lập trình thanh ghiOT_FS_TX0FSIZ (tùy theo số FIFO được chọn) để có thể truyền dữ liệu
điều khiển IN. Tối thiểu, giá trị này phải bằng 1 kích thước gói tối đa của điểm
cuối kiểm soát 0.

4. Lập trình các trường sau trong các thanh ghi dành riêng cho điểm cuối cho điểm cuối OUT điều khiển
0 để nhận gói SETUP

– STUPCNT = 3 trongOTG_FS_DOEPTSIZ0 (để nhận tối đa 3 SETUP giáp lưng


gói)

Tại thời điểm này, tất cả việc khởi tạo cần thiết để nhận các gói SETUP đã được thực hiện.

Khởi tạo điểm cuối khi hoàn thành liệt kê

1. Trên ngắt liệt kê xong (ENUMDNE trongOTG_FS_GINTSTS), hãy đọc thanh ghiOTG_FS_DSTS để
xác định tốc độ liệt kê.

2. Lập trình trường MPSIZ trongOTG_FS_DIEPCTL0 để đặt kích thước gói tối đa. Bước này định cấu
hình điểm cuối điều khiển 0. Kích thước gói tối đa cho điểm cuối điều khiển phụ thuộc
vào tốc độ liệt kê.

940/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Tại thời điểm này, thiết bị đã sẵn sàng nhận các gói SOF và được cấu hình để thực hiện chuyển điều
khiển trên điểm cuối điều khiển 0.

Khởi tạo điểm cuối trên lệnh SetAddress

Phần này mô tả những gì ứng dụng phải làm khi nhận được lệnh SetAddress trong gói SETUP.

1. Lập trình thanh ghiOTG_FS_DCFG với địa chỉ thiết bị nhận được trong lệnh SetAddress

2. Lập trình lõi để gửi gói trạng thái IN

Khởi tạo điểm cuối trên lệnh SetConfiguration/SetInterface

Phần này mô tả những gì ứng dụng phải làm khi nhận được lệnh SetConfiguration hoặc SetInterface
trong gói SETUP.

1. Khi nhận được lệnh SetConfiguration, ứng dụng phải lập trình
đăng ký điểm cuối để định cấu hình chúng với các đặc điểm của điểm cuối hợp lệ trong cấu
hình mới.

2. Khi nhận được lệnh SetInterface, ứng dụng phải lập trình các thanh ghi điểm cuối của các điểm
cuối bị ảnh hưởng bởi lệnh này.

3. Một số điểm cuối đang hoạt động trong cấu hình trước hoặc cài đặt thay thế sẽ không hợp lệ
trong cấu hình hoặc cài đặt thay thế mới. Những điểm cuối không hợp lệ này phải được hủy
kích hoạt.

4. Vạch mặt ngắt đối với từng điểm cuối hoạt động và che giấu các ngắt đối với tất cả các điểm không hoạt động

điểm cuối trong thanh ghiOT_FS_DAINTMSK.

5. Thiết lập RAM FIFO dữ liệu cho mỗi FIFO.

6. Sau khi tất cả các điểm cuối bắt buộc được cấu hình; ứng dụng phải lập trình lõi để gửi gói
trạng thái IN.

Tại thời điểm này, lõi thiết bị được cấu hình để nhận và truyền bất kỳ loại gói dữ liệu nào.

Kích hoạt điểm cuối

Phần này mô tả các bước cần thiết để kích hoạt điểm cuối thiết bị hoặc định cấu hình điểm cuối
thiết bị hiện có sang loại mới.

1. Lập trình các đặc điểm của điểm cuối được yêu cầu vào các trường sau của thanh
ghiOTG_FS_DIEPCTLx (đối với điểm cuối IN hoặc hai chiều) hoặc thanh
ghiOTG_FS_DOEPCTLx (đối với điểm cuối OUT hoặc hai chiều).

– Kích thước gói tối đa

– Điểm cuối hoạt động USB = 1

– Chuyển đổi dữ liệu bắt đầu điểm cuối (đối với điểm cuối ngắt và điểm cuối hàng loạt)

– Loại điểm cuối


– Số TxFIFO

2. Sau khi điểm cuối được kích hoạt, lõi bắt đầu giải mã các mã thông báo được gửi đến điểm cuối
đó và gửi một cái bắt tay hợp lệ cho mỗi mã thông báo hợp lệ nhận được cho điểm cuối.

RM0008 Phiên bản 21 941/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Vô hiệu hóa điểm cuối

Phần này mô tả các bước cần thiết để hủy kích hoạt điểm cuối hiện có.

1. Ở điểm cuối cần hủy kích hoạt, hãy xóa bit điểm cuối hoạt động USB trong thanh
ghiOTG_FS_DIEPCTLx (đối với điểm cuối IN hoặc hai chiều) hoặc thanh
ghiOTG_FS_DOEPCTLx (đối với điểm cuối OUT hoặc hai chiều).

2. Sau khi điểm cuối bị vô hiệu hóa, lõi sẽ bỏ qua các mã thông báo được gửi đến điểm cuối đó, điều này
dẫn đến thời gian chờ trên USB.

Ghi chú: Ứng dụng phải đáp ứng các điều kiện sau để thiết lập lõi thiết bị nhằm xử lý lưu lượng:

NPTXFEM và RXFLVLM trong thanh ghiOT_FS_GINTMSK phải được xóa.

28.17.6 Mô hình hoạt động

Truyền dữ liệu SETUP và OUT

Phần này mô tả luồng dữ liệu nội bộ và các hoạt động ở cấp độ ứng dụng trong quá trình truyền dữ liệu
OUT và các giao dịch THIẾT LẬP.

• Đọc gói

Phần này mô tả cách đọc các gói (dữ liệu OUT và gói SETUP) từ FIFO nhận.

1. Khi bắt được ngắt RXFLVL (đăng kýOTG_FS_GINTSTS), ứng dụng phải
đọc thanh ghi trạng thái nhận (OTG_FS_GRXSTSP).

2. Ứng dụng có thể che giấu ngắt RXFLVL (trongOTG_FS_GINTSTS) bằng cách ghi vào RXFLVL = 0
(trongOTG_FS_GINTMSK), cho đến khi nó đọc gói từ FIFO nhận.

3. Nếu số byte của gói nhận được không bằng 0, lượng dữ liệu đếm byte sẽ được lấy ra từ FIFO dữ liệu
nhận và được lưu trong bộ nhớ. Nếu số byte gói nhận được là 0 thì không có dữ liệu nào được lấy ra
từ FIFO dữ liệu nhận.

4. Việc đọc trạng thái gói của FIFO nhận chỉ ra một trong những điều sau:

a) Mẫu OUT NAK toàn cầu:


PKTSTS = Global OUT NAK, BCNT = 0x000, EPNUM = Không quan tâm (0x0), PIDD = Không quan tâm
(0b00).
Những dữ liệu này chỉ ra rằng bit OUT NAK toàn cầu đã có hiệu lực.

b) THIẾT LẬP mẫu gói tin:


PKTSTS = THIẾT LẬP, BCNT = 0x008, EPNUM = Số EP kiểm soát, PIDD = D0.
Những dữ liệu này chỉ ra rằng gói SETUP cho điểm cuối được chỉ định hiện có sẵn để đọc
từ FIFO nhận.

c) Giai đoạn thiết lập mẫu hoàn thành:


PKTSTS = Giai đoạn thiết lập đã hoàn tất, BCNT = 0x0, EPNUM = Số EP kiểm soát, PIDD =
Không quan tâm (0b00).
Những dữ liệu này cho biết giai đoạn Thiết lập cho điểm cuối được chỉ định đã hoàn thành và
giai đoạn Dữ liệu đã bắt đầu. Sau khi mục này được bật ra từ FIFO nhận, lõi sẽ xác nhận ngắt
Thiết lập trên điểm cuối OUT điều khiển được chỉ định.

d) Mẫu gói dữ liệu OUT:


PKTSTS = DataOUT, BCNT = kích thước của gói OUT dữ liệu đã nhận (0 ≤ BCNT 1 024), EPNUM =
EPNUM mà gói đã được nhận, PIDD = PID dữ liệu thực tế.

942/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

e) Mẫu hoàn thành truyền dữ liệu:


PKTSTS = Quá trình truyền dữ liệu OUT đã hoàn tất, BCNT = 0x0, EPNUM = OUT EP
Num mà quá trình truyền dữ liệu hoàn tất, PIDD = Không quan tâm (0b00).
Những dữ liệu này chỉ ra rằng quá trình truyền dữ liệu OUT cho điểm cuối OUT được
chỉ định đã hoàn tất. Sau khi mục này được đưa ra khỏi FIFO nhận, lõi sẽ xác nhận
ngắt Đã hoàn tất truyền trên điểm cuối OUT được chỉ định.

5. Sau khi tải trọng dữ liệu được lấy ra từ FIFO nhận, ngắt RXFLVL
(OTG_FS_GINTSTS) phải được vạch mặt.

6. Các bước 1–
5 được lặp lại mỗi khi ứng dụng phát hiện xác nhận đường ngắt do RXFLVL
trongOTG_FS_GINTSTS. Việc đọc FIFO nhận trống có thể dẫn đến hành vi cốt lõi không xác
định.

Hình 319 cung cấp sơ đồ của quy trình trên.

Hình 319. Nhận đọc gói FIFO

đợi cho đến khi RXFLVL trongOTG_FS_GINTSTSG

rd_data = rd_reg (OTG_FS_GRXSTSP);

Y rd_data.BCNT = 0
RCv_out_pkt()

word_cnt =
lưu mem[0: word_cnt – 1] = C
BCNT[11:2] +
trữ gói rd_rxfifo(rd_data.EPNUM, (BCNT[1] | BCNT[1])
trong bộ nhớ word_cnt)

ai15677b

• THIẾT LẬP giao dịch

Phần này mô tả cách lõi xử lý các gói SETUP và trình tự của ứng dụng để xử lý các
giao dịch SETUP.

• Yêu cầu ứng dụng

1. Để nhận gói SETUP, trường STUPCNT (OTG_FS_DOEPTSIZx) trong điểm cuối OUT điều khiển phải
được lập trình thành giá trị khác 0. Khi ứng dụng lập trình trường STUPCNT thành
giá trị khác 0, lõi sẽ nhận các gói SETUP và ghi chúng vào FIFO nhận, bất kể trạng thái
NAK và cài đặt bit EPENA trongOTG_FS_DOEPCTLx. Trường STUPCNT bị giảm đi mỗi khi điểm
cuối điều khiển nhận được gói SETUP. Nếu trường STUPCNT không được lập trình thành giá
trị phù hợp trước khi nhận gói SETUP, lõi vẫn nhận gói SETUP và giảm trường STUPCNT,
nhưng ứng dụng có thể không thực hiện được

RM0008 Phiên bản 21 943/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

xác định số lượng gói SETUP chính xác nhận được trong giai đoạn Setup của quá trình
truyền điều khiển.

– STUPCNT = 3 trongOTG_FS_DOEPTSIZx

2. Ứng dụng phải luôn phân bổ một số dung lượng bổ sung trong FIFO nhận dữ liệu để có thể nhận
tối đa ba gói SETUP trên điểm cuối điều khiển.

– Chỗ trống cần dành là 10 từ. Ba từ được yêu cầu cho lần đầu tiên
Gói CÀI ĐẶT, cần 1 từ cho từ hoàn tất giai đoạn Thiết lập và cần 6 từ để lưu trữ hai
gói CÀI ĐẶT bổ sung trong số tất cả các điểm cuối điều khiển.

– Cần có 3 từ cho mỗi gói SETUP để lưu trữ 8 byte dữ liệu SETUP và 4 byte
byte trạng thái THIẾT LẬP (Mẫu gói thiết lập). Lõi dành không gian này trong FIFO nhận dữ
liệu để chỉ ghi dữ liệu CÀI ĐẶT và không bao giờ sử dụng không gian này cho các gói dữ
liệu.

3. Ứng dụng phải đọc 2 từ của gói SETUP từ FIFO nhận.

4. Ứng dụng phải đọc và loại bỏ từ đã hoàn tất giai đoạn Thiết lập từ phần nhận
FIFO.

• Luồng dữ liệu nội bộ

1. Khi nhận được gói SETUP, lõi sẽ ghi dữ liệu đã nhận vào bên nhận.
FIFO, mà không kiểm tra dung lượng trống trong FIFO nhận và không phân biệt cài đặt bit
NAK và STALL của điểm cuối.

– Lõi thiết lập bên trong các bit IN NAK và OUT NAK cho điều khiển IN/OUT
điểm cuối nơi nhận được gói SETUP.

2. Đối với mỗi gói SETUP nhận được trên USB, 3 từ dữ liệu được ghi vào FIFO nhận và
trường STUPCNT giảm đi 1.

– Từ đầu tiên chứa thông tin điều khiển được lõi sử dụng nội bộ

– Từ thứ hai chứa 4 byte đầu tiên của lệnh SETUP

– Từ thứ 3 chứa 4 byte cuối của lệnh SETUP

3. Khi giai đoạn Thiết lập thay đổi thành giai đoạn Dữ liệu VÀO/OUT, lõi sẽ ghi một mục nhập
(Từ hoàn tất giai đoạn thiết lập) vào FIFO nhận, cho biết đã hoàn thành giai đoạn Thiết
lập.

4. Về phía AHB, các gói SETUP sẽ bị ứng dụng làm trống.

5. Khi ứng dụng bật ra thông báo hoàn thành giai đoạn Thiết lập từ FIFO nhận, lõi sẽ ngắt ứng
dụng bằng ngắt STUP (OTG_FS_DOEPINTx), cho biết ứng dụng có thể xử lý gói SETUP đã nhận.

– Lõi xóa bit kích hoạt điểm cuối cho điểm cuối điều khiển OUT.

• Trình tự lập trình ứng dụng

1. Lập trình thanh ghiOT_FS_DOEPTSIZx.


– STUPCNT = 3

2. Đợi ngắt RXFLVL (OTG_FS_GINTSTS) và làm trống các gói dữ liệu khỏi FIFO nhận.

3. Xác nhận ngắt STUP (OTG_FS_DOEPINTx) đánh dấu sự hoàn thành thành công
của quá trình CÀI ĐẶT Truyền Dữ Liệu.

– Trong lần ngắt này, ứng dụng phải đọc thanh ghi Otto_FS_DOEPTSIZx để xác định số lượng
gói SETUP đã nhận và xử lý gói SETUP nhận được cuối cùng.

944/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Hình 320. Xử lý gói SETUP

Đợi STUP trongOTG_FS_DOEPINTx

rem_supcnt =
rd_reg(DOEPTSIZx)

*
setup_cmd[31:0] = mem[4 – 2 rem_supcnt]
*
setup_cmd[63:32] = mem[5 – 2 rem_supcnt]

Tìm loại cmd thiết lập

Đọc giai đoạn ctrl-rd/wr/2 Viết

2 giai đoạn

thiết lập_np_in_pkt thiết lập_np_in_pkt RCv_out_pkt


Giai đoạn dữ liệu IN Trạng thái TRONG pha Giai đoạn OUT dữ liệu

ai15678

• Xử lý nhiều hơn ba gói SETUP giáp lưng

Theo thông số kỹ thuật của USB 2.0, thông thường, khi xảy ra lỗi gói SETUP, máy chủ không gửi
nhiều hơn ba gói SETUP giáp lưng đến cùng một điểm cuối. Tuy nhiên, thông số kỹ thuật USB 2.0
không giới hạn số lượng gói SETUP giáp lưng mà máy chủ có thể gửi đến cùng một điểm cuối.
Khi tình trạng này xảy ra, bộ điều khiểnOTG_FS tạo ra một ngắt (B2BSTUP
trongOTG_FS_DOEPINTx).

• Thiết lập OUT NAK toàn cục

Luồng dữ liệu nội bộ

1. Khi ứng dụng đặt Global OUT NAK (bit SGONAK trongOTG_FS_DCTL), lõi sẽ dừng ghi dữ liệu,
ngoại trừ các gói SETUP, vào FIFO nhận. Bất kể dung lượng sẵn có trong FIFO nhận, mã
thông báo OUT không đẳng thời sẽ nhận được phản hồi bắt tay NAK và lõi bỏ qua các gói
dữ liệu OUT đẳng thời

2. Lõi ghi mẫu Global OUT NAK vào FIFO nhận. Ứng dụng phải
dành đủ không gian nhận FIFO để ghi mẫu dữ liệu này.

3. Khi ứng dụng bật từ mẫu Global OUT NAK từ FIFO nhận, lõi sẽ đặt ngắt GONAKEFF
(OTG_FS_GINTSTS).

4. Sau khi ứng dụng phát hiện thấy ngắt này, nó có thể cho rằng lõi đang ở chế độ Global OUT
NAK. Ứng dụng có thể xóa ngắt này bằng cách xóa bit SGONAK trongOTG_FS_DCTL.

RM0008 Phiên bản 21 945/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Trình tự lập trình ứng dụng

1. Để ngừng nhận bất kỳ loại dữ liệu nào trong FIFO nhận, ứng dụng phải đặt
Bit OUT NAK toàn cầu bằng cách lập trình trường sau:

– SGONAK = 1 trongOTG_FS_DCTL

2. Đợi xác nhận ngắt GONAKEFF trongOTG_FS_GINTSTS. Khi


được xác nhận, ngắt này chỉ ra rằng lõi đã ngừng nhận bất kỳ loại dữ liệu nào ngoại trừ
các gói SETUP.

3. Ứng dụng có thể nhận các gói OUT hợp lệ sau khi nó đã đặt SGONAK trongOTG_FS_DCTL
và trước khi lõi xác nhận ngắt GONAKEFF (OTG_FS_GINTSTS).

4. Ứng dụng có thể tạm thời che dấu ngắt này bằng cách ghi vào bit GINAKEFFM trong thanh
ghiOT_FS_GINTMSK.

– GINAKEFFM = 0 trong thanh ghiOT_FS_GINTMSK

5. Bất cứ khi nào ứng dụng sẵn sàng thoát khỏi chế độ Global OUT NAK, nó phải xóa bit SGONAK
trongOTG_FS_DCTL. Điều này cũng xóa ngắt GONAKEFF (OTG_FS_GINTSTS).

–OTG_FS_DCTL = 1 trong CGONAK


6. Nếu ứng dụng đã che dấu ngắt này trước đó thì nó phải được che giấu như sau:
– GINAKEFFM = 1 trong GINTMSK

• Vô hiệu hóa điểm cuối OUT

Ứng dụng phải sử dụng trình tự này để vô hiệu hóa điểm cuối OUT mà nó đã kích hoạt.

Trình tự lập trình ứng dụng

1. Trước khi tắt bất kỳ điểm cuối OUT nào, ứng dụng phải bật chế độ Global OUT NAK trong
lõi.

– SGONAK = 1 trongOTG_FS_DCTL

2. Đợi ngắt GONAKEFF (OTG_FS_GINTSTS)

3. Vô hiệu hóa điểm cuối OUT cần thiết bằng cách lập trình các trường sau:

– EPDIS = 1 trongOTG_FS_DOEPCTLx

– SNAK = 1 trongOTG_FS_DOEPCTLx

4. Đợi ngắt EPDISD (OTG_FS_DOEPINTx), cho biết rằng OUT


điểm cuối bị vô hiệu hóa hoàn toàn. Khi ngắt EPDISD được xác nhận, lõi cũng sẽ xóa các
bit sau:

– EPDIS = 0 trongOTG_FS_DOEPCTLx

– EPENA = 0 trongOTG_FS_DOEPCTLx

5. Ứng dụng phải xóa bit Global OUT NAK để bắt đầu nhận dữ liệu từ thiết bị khác
điểm cuối OUT không bị vô hiệu hóa.

– SGONAK = 0 trongOTG_FS_DCTL

• Lập trình dừng truyền cho các điểm cuối OUT

Ứng dụng phải sử dụng trình tự lập trình sau để dừng mọi quá trình truyền (do máy chủ bị gián
đoạn, thường là do thiết lập lại).

946/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Trình tự của chiến dịch:

1. Kích hoạt tất cả các điểm cuối OUT bằng cách cài đặt

– EPENA = 1 trong tất cả các thanh ghiOT_FS_DOEPCTLx.


2. Xóa RxFIFO như sau

– Thăm dò ý kiến OTG_FS_GRSTCTL.AHBIDL cho đến khi bằng 1. Điều này cho thấy rằng AHB master là
nhàn rỗi.

– Thực hiện thao tác đọc sửa đổi ghi trên hệ thốngOTG_FS_GRSTCTL.RXFFLSH =1

– Thăm dò ý kiến OTG_FS_GRSTCTL.RXFFLSH cho đến khi về 0, nhưng cũng sử dụng thời gian chờ
dưới 10 mili giây (tương ứng với thời lượng đặt lại tín hiệu tối thiểu). Nếu nhìn thấy
0 trước khi hết thời gian chờ thì quá trình xóa RxFIFO thành công. Nếu tại thời điểm hết
thời gian chờ, vẫn còn số 1, (điều này có thể do gói trên EP0 đến từ máy chủ) thì quay
lại (chỉ một lần) bước trước đó (“Thực hiện thao tác đọc sửa đổi ghi”).

3. Trước khi tắt bất kỳ điểm cuối OUT nào, ứng dụng phải bật chế độ Global OUT NAK trong lõi,
theo hướng dẫn trong “Thiết lập OUT NAK toàn cầu ở trang 945”. Điều này đảm bảo rằng dữ
liệu trong RxFIFO được gửi tới ứng dụng thành công.
Đặt SGONAK = 1 trongOTG_FS_DCTL

4. Đợi ngắt GONAKEFF (OTG_FS_GINTSTS)

5. Vô hiệu hóa tất cả các điểm cuối OUT đang hoạt động bằng cách lập trình các bit thanh ghi sau:

– EPDIS = 1 trong thanh ghiOTG_FS_DOEPCTLx

– SNAK = 1 trong thanh ghiOTG_FS_DOEPCTLx

6. Đợi ngắt EPDIS trongOTG_FS_DOEPINTx cho mỗi điểm cuối OUT


đã được lập trình ở bước trước. Ngắt EPDIS trongOTG_FS_DOEPINTx chỉ ra rằng điểm cuối
OUT tương ứng bị vô hiệu hóa hoàn toàn. Khi ngắt EPDIS được xác nhận, các bit sau sẽ bị
xóa:

– EPENA = 0 trong thanh ghiOTG_FS_DOEPCTLx

– EPDIS = 0 trong thanh ghiOTG_FS_DOEPCTLx

– SNAK = 0 trong thanh ghiOTG_FS_DOEPCTLx


• Truyền dữ liệu OUT không đẳng thời chung

Phần này mô tả quá trình truyền dữ liệu OUT không đẳng thời thông thường (điều khiển, số lượng lớn
hoặc ngắt).

Yêu cầu ứng dụng

1. Trước khi thiết lập truyền OUT, ứng dụng phải phân bổ bộ đệm trong bộ nhớ để chứa tất cả dữ liệu
được nhận như một phần của truyền OUT.

2. Đối với các lần truyền OUT, trường kích thước truyền trong thanh ghi kích thước truyền của điểm
cuối phải là bội số của kích thước gói tối đa của điểm cuối, được điều chỉnh theo ranh giới từ.

– kích thước truyền[EPNUM] = n × (MPSIZ[EPNUM] + 4 – (MPSIZ[EPNUM] mod 4))

– số gói [EPNUM] = n
– n > 0

3. Trên bất kỳ ngắt điểm cuối OUT nào, ứng dụng phải đọc thanh ghi kích thước truyền của điểm
cuối để tính toán kích thước của tải trọng trong bộ nhớ. Kích thước tải trọng nhận được có
thể nhỏ hơn kích thước truyền được lập trình.

– Kích thước tải trọng trong bộ nhớ = kích thước truyền ban đầu được lập trình của ứng dụng – lõi
kích thước chuyển cuối cùng được cập nhật

RM0008 Phiên bản 21 947/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

– Số gói USB mà tải trọng này đã được nhận = số gói ban đầu được lập trình ứng
dụng – số gói cuối cùng được cập nhật lõi

Luồng dữ liệu nội bộ

1. Ứng dụng phải đặt các trường kích thước truyền và số lượng gói trong các thanh ghi cụ
thể của điểm cuối, xóa bit NAK và cho phép điểm cuối nhận dữ liệu.

2. Sau khi bit NAK bị xóa, lõi bắt đầu nhận dữ liệu và ghi nó vào FIFO nhận, miễn là còn chỗ
trống trong FIFO nhận. Đối với mỗi gói dữ liệu nhận được trên USB, gói dữ liệu và trạng
thái của nó sẽ được ghi vào FIFO nhận. Mỗi gói (kích thước gói tối đa hoặc gói ngắn) được
ghi vào FIFO nhận sẽ giảm trường số lượng gói cho điểm cuối đó đi 1.

– Các gói dữ liệu OUT nhận được với CRC dữ liệu xấu sẽ bị xóa khỏi FIFO nhận
tự động.

– Sau khi gửi ACK cho gói trên USB, lõi sẽ loại bỏ gói không
các gói dữ liệu OUT đẳng thời mà máy chủ không thể phát hiện được ACK sẽ gửi lại.
Ứng dụng không phát hiện nhiều gói dữ liệu back-to-back OUT trên cùng một điểm cuối
với cùng một dữ liệu PID. Trong trường hợp này số lượng gói không bị giảm.

– Nếu không có khoảng trống trong FIFO nhận, các gói dữ liệu đẳng thời hoặc không đẳng
thời sẽ bị bỏ qua và không được ghi vào FIFO nhận. Ngoài ra, các mã thông báo
OUT không đẳng thời sẽ nhận được phản hồi bắt tay NAK.

– Trong cả ba trường hợp trên, số lượng gói tin không bị giảm do không có dữ liệu nào được
ghi vào FIFO nhận.

3. Khi số lượng gói trở thành 0 hoặc khi nhận được một gói ngắn ở điểm cuối, bit NAK cho điểm
cuối đó sẽ được đặt. Khi bit NAK được thiết lập, các gói dữ liệu đẳng thời hoặc không
đẳng thời sẽ bị bỏ qua và không được ghi vào FIFO nhận, đồng thời các mã thông báo OUT
không đẳng thời sẽ nhận được phản hồi bắt tay NAK.

4. Sau khi dữ liệu được ghi vào FIFO nhận, ứng dụng sẽ đọc dữ liệu từ FIFO nhận và ghi nó vào
bộ nhớ ngoài, mỗi lần một gói cho mỗi điểm cuối.

5. Vào cuối mỗi gói ghi trên AHB vào bộ nhớ ngoài, kích thước truyền cho điểm cuối sẽ giảm đi
theo kích thước của gói được ghi.

6. Mẫu hoàn thành truyền dữ liệu OUT cho điểm cuối OUT được ghi vào FIFO nhận theo một trong các
điều kiện sau:

– Kích thước truyền là 0 và số lượng gói là 0

– Gói dữ liệu OUT cuối cùng được ghi vào FIFO nhận là gói ngắn
(0 ≤ kích thước gói < kích thước gói tối đa)

7. Khi ứng dụng bật mục nhập này (truyền dữ liệu OUT đã hoàn thành), một ngắt hoàn tất truyền
sẽ được tạo cho điểm cuối và việc kích hoạt điểm cuối sẽ bị xóa.

948/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Trình tự lập trình ứng dụng

1. Lập trình thanh ghiOTG_FS_DOEPTSIZx cho kích thước truyền và kích thước tương ứng
số lượng gói tin.

2. Lập trình thanh ghiOTG_FS_DOEPCTLx với các đặc điểm điểm cuối và đặt
các bit EPENA và CNAK.

– EPENA = 1 trongOTG_FS_DOEPCTLx

– CNAK = 1 trongOTG_FS_DOEPCTLx

3. Đợi ngắt RXFLVL (trongOTG_FS_GINTSTS) và làm trống các gói dữ liệu khỏi FIFO nhận.

– Bước này có thể được lặp lại nhiều lần, tùy theo dung lượng truyền.

4. Xác nhận ngắt XFRC (OTG_FS_DOEPINTx) đánh dấu việc hoàn thành thành công quá trình truyền dữ
liệu OUT không đẳng thời.

5. Đọc thanh ghiOTG_FS_DOEPTSIZx để xác định kích thước của dữ liệu nhận được
khối hàng.

• Truyền dữ liệu OUT đẳng thời chung

Phần này mô tả việc truyền dữ liệu OUT đẳng thời thường xuyên.

Yêu cầu ứng dụng


1. Tất cả các yêu cầu ứng dụng đối với việc truyền dữ liệu OUT không đẳng thời cũng áp dụng cho
việc truyền dữ liệu OUT đẳng thời.

2. Đối với việc truyền dữ liệu OUT đẳng thời, các trường kích thước truyền và số lượng gói phải
luôn được đặt thành số lượng gói có kích thước gói tối đa có thể nhận được trong một khung
và không nhiều hơn. Truyền dữ liệu OUT đẳng thời không thể kéo dài quá 1 khung hình.

3. Ứng dụng phải đọc tất cả các gói dữ liệu OUT đẳng thời từ FIFO nhận (dữ liệu và trạng thái)
trước khi kết thúc khung định kỳ (ngắt EOPF trongOTG_FS_GINTSTS).

4. Để nhận dữ liệu trong khung sau, điểm cuối OUT đẳng thời phải được bật sau EOPF (OTG_FS_GINTSTS)
và trước SOF (OTG_FS_GINTSTS).

Luồng dữ liệu nội bộ

1. Luồng dữ liệu nội bộ cho các điểm cuối OUT đẳng thời giống như luồng dữ liệu cho các điểm cuối OUT không đồng bộ

điểm cuối OUT đẳng thời, nhưng có một số khác biệt.

2. Khi bật điểm cuối OUT đẳng thời bằng cách cài đặt Bật điểm cuối và
xóa các bit NAK thì bit khung Chẵn/Lẻ cũng phải được đặt thích hợp. Lõi chỉ nhận dữ liệu trên
điểm cuối OUT đẳng thời trong một khung cụ thể nếu đáp ứng điều kiện sau:

– EONUM (trong OOT_FS_DOEPCTLx) = SOFFN[0] (trong OOT_FS_DSTS)

3. Khi ứng dụng đọc hoàn toàn gói dữ liệu OUT đẳng thời (dữ liệu và trạng thái) từ FIFO nhận,
lõi sẽ cập nhật trường RXDPID trongOTG_FS_DOEPTSIZx với PID dữ liệu của
gói dữ liệu OUT đẳng thời cuối cùng được đọc từ FIFO nhận.

RM0008 Phiên bản 21 949/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Trình tự lập trình ứng dụng

1. Lập trình thanh ghiOTG_FS_DOEPTSIZx cho kích thước truyền và kích thước tương ứng
số lượng gói

2. Lập trình thanh ghiOTG_FS_DOEPCTLx với các đặc điểm điểm cuối và thiết lập
các bit khung Endpoint Enable, ClearNAK và Even/Odd.
– EPENA = 1

– CNAK = 1

– EONUM = (0: Chẵn/1: Lẻ)

3. Đợi ngắt RXFLVL (trongOTG_FS_GINTSTS) và làm trống các gói dữ liệu khỏi FIFO nhận

– Bước này có thể được lặp lại nhiều lần, tùy theo dung lượng truyền.

4. Việc xác nhận ngắt XFRC (trongOTG_FS_DOEPINTx) đánh dấu việc hoàn thành quá trình truyền dữ
liệu OUT đẳng thời. Sự gián đoạn này không nhất thiết có nghĩa là dữ liệu trong bộ nhớ
tốt.

5. Không phải lúc nào cũng có thể phát hiện được ngắt này khi truyền OUT đẳng thời. Thay vào
đó, ứng dụng có thể phát hiện ngắt IISOOXFRM trongOTG_FS_GINTSTS.

6. Đọc thanh ghiOTG_FS_DOEPTSIZx để xác định kích thước của quá trình truyền đã nhận và để xác
định tính hợp lệ của dữ liệu nhận được trong khung. Ứng dụng phải coi dữ liệu nhận được
trong bộ nhớ là hợp lệ chỉ khi đáp ứng một trong các điều kiện sau:

– RXDPID = D0 (trongOTG_FS_DOEPTSIZx) và số lượng gói USB nhận được tải trọng này =
1

– RXDPID = D1 (trongOTG_FS_DOEPTSIZx) và số lượng gói USB nhận được tải trọng này =
2

– RXDPID = D2 (trongOTG_FS_DOEPTSIZx) và số lượng gói USB nhận được tải trọng này =
3

Số lượng gói USB mà tải trọng này đã được nhận =


Số gói ban đầu được lập trình ứng dụng – Số gói cuối cùng được cập nhật lõi

Ứng dụng có thể loại bỏ các gói dữ liệu không hợp lệ.

• Truyền dữ liệu OUT đẳng thời không đầy đủ

Phần này mô tả trình tự lập trình ứng dụng khi các gói dữ liệu OUT đẳng thời được loại bỏ bên
trong lõi.

Luồng dữ liệu nội bộ

1. Đối với các điểm cuối OUT đẳng thời, ngắt XFRC (trongOTG_FS_DOEPINTx) không phải lúc nào
cũng được xác nhận. Nếu lõi loại bỏ các gói dữ liệu OUT đẳng thời, ứng dụng có thể không
phát hiện được ngắt XFRC (OTG_FS_DOEPINTx) trong các trường hợp sau:

– Khi FIFO nhận không thể chứa gói dữ liệu ISO OUT hoàn chỉnh,
lõi bỏ dữ liệu ISO OUT nhận được

– Khi nhận được gói dữ liệu OUT đẳng thời có lỗi CRC

– Khi mã thông báo OUT đẳng thời mà lõi nhận được bị hỏng

– Khi ứng dụng đọc dữ liệu từ FIFO nhận rất chậm

2. Khi lõi phát hiện điểm kết thúc của khung tuần hoàn trước khi hoàn tất truyền tới tất cả
điểm cuối OUT đẳng thời, nó xác nhận ngắt dữ liệu OUT đẳng thời không hoàn chỉnh
(IISOOXFRM trongOTG_FS_GINTSTS), cho biết rằng một ngắt XFRC (trong
OTG_FS_DOEPINTx) không được xác nhận trên ít nhất một trong các OUT đẳng thời

950/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

điểm cuối. Tại thời điểm này, điểm cuối có quá trình truyền chưa hoàn tất vẫn được bật nhưng không có
hoạt động truyền nào đang diễn ra trên điểm cuối này trên USB.

Trình tự lập trình ứng dụng

1. Xác nhận ngắt IISOOXFRM (OTG_FS_GINTSTS) cho biết rằng trong khung hiện tại, ít nhất một điểm cuối OUT
đẳng thời có quá trình truyền không đầy đủ.

2. Nếu điều này xảy ra do dữ liệu OUT đẳng thời không được xóa hoàn toàn khỏi điểm cuối, ứng dụng
phải đảm bảo rằng ứng dụng xóa tất cả dữ liệu OUT đẳng thời (dữ liệu và trạng thái) khỏi FIFO nhận
trước khi tiếp tục.

– Khi tất cả dữ liệu bị xóa khỏi FIFO nhận, ứng dụng có thể phát hiện ngắt XFRC (OTG_FS_DOEPINTx).
Trong trường hợp này, ứng dụng phải kích hoạt lại điểm cuối để nhận dữ liệu OUT đẳng thời
trong khung tiếp theo.

3. Khi nhận được ngắt IISOOXFRM (trongOTG_FS_GINTSTS), ứng dụng phải đọc các thanh ghi điều khiển của
tất cả các điểm cuối OUT đẳng thời (OTG_FS_DOEPCTLx) để xác định điểm cuối
nào có quá trình truyền không đầy đủ trong vi khung hiện tại. Quá trình chuyển điểm cuối sẽ không hoàn
tất nếu đáp ứng cả hai điều kiện sau:

– Bit EONUM (trong OOT_FS_DOEPCTLx) = SOFFN[0] (trong OOT_FS_DSTS)

– EPENA = 1 (trongOTG_FS_DOEPCTLx)

4. Bước trước đó phải được thực hiện trước khi phát hiện ngắt SOF (trongOTG_FS_GINTSTS), để đảm bảo rằng số
khung hiện tại không bị thay đổi.

5. Đối với các điểm cuối OUT đẳng thời có quá trình truyền không đầy đủ, ứng dụng phải loại bỏ dữ liệu trong
bộ nhớ và vô hiệu hóa điểm cuối bằng cách đặt bit EPDIS trongOTG_FS_DOEPCTLx.

6. Đợi ngắt EPDIS (trongOTG_FS_DOEPINTx) và cho phép điểm cuối nhận dữ liệu mới trong khung tiếp theo.

– Vì lõi có thể mất một chút thời gian để vô hiệu hóa điểm cuối nên ứng dụng có thể không nhận được
dữ liệu trong khung tiếp theo sau khi nhận được dữ liệu đẳng thời gian xấu.

• Dừng điểm cuối OUT không đẳng thời

Phần này mô tả cách ứng dụng có thể trì hoãn một điểm cuối không đẳng thời.

1. Đặt lõi ở chế độ Global OUT NAK.

2. Vô hiệu hóa điểm cuối cần thiết

– Khi vô hiệu hóa điểm cuối, thay vì đặt bit SNAK trongOTG_FS_DOEPCTL, hãy đặt
STALL = 1 (trongOTOT_FS_DOEPCTL).

Bit STALL luôn được ưu tiên hơn bit NAK.

3. Khi ứng dụng đã sẵn sàng kết thúc bắt tay STALL cho điểm cuối,
Bit STALL (trongOTG_FS_DOEPCTLx) phải được xóa.

4. Nếu ứng dụng đang cài đặt hoặc xóa STALL cho điểm cuối do lệnh SetFeature.Endpoint
Halt hoặc ClearFeature.Endpoint Halt, thì bit STALL phải được đặt hoặc xóa trước khi ứng dụng thiết
lập chuyển giai đoạn Trạng thái trên điểm cuối điều khiển.

Ví dụ
Phần này mô tả và mô tả một số loại và kịch bản chuyển giao cơ bản.

• Giao dịch OUT số lượng lớn

RM0008 Phiên bản 21 951/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Hình 321 mô tả việc tiếp nhận một gói Dữ liệu OUT Số lượng lớn từ USB đến AHB và mô tả các sự
kiện liên quan đến quy trình.

Hình 321. Giao dịch OUT số lượng lớn

Chủ nhà USB Thiết bị Ứng dụng

init_out_ep
XFRSIZ = 64 byte
1 PKTCNT = 1
2
wr_reg (DOEPTSIZx)

EPENA = 1
NGOÀI
CNAK = 1
3 wr_reg(DOEPCTLx)

64 byte

4 6

xact_1

ACK Giới thiệu RXFLVL


DOE nhàn rỗi cho đến khi vào

5
PCTLx.NAK=1
PKTCNT 0

XFRSIZ
r = 0 RCv_out_pkt()
Trên xfer mới
hoặc RxFIFO
NGOÀI XFRC
nội tâm không trống
7
NAK
nhàn rỗi cho đến khi vào
số 8

ai15679b

Sau lệnh SetConfiguration/SetInterface, ứng dụng sẽ khởi tạo tất cả các điểm cuối OUT bằng cách
đặt CNAK = 1 và EPENA = 1 (trongOTG_FS_DOEPCTLx) đồng thời đặt XFRSIZ và PKTCNT phù hợp
trong thanh ghiOTG_FS_DOEPTSIZx.

1. Máy chủ cố gắng gửi dữ liệu (mã thông báo OUT) đến điểm cuối.

2. Khi lõi nhận được mã thông báo OUT trên USB, nó sẽ lưu gói trong RxFIFO vì còn trống ở đó.

3. Sau khi ghi gói hoàn chỉnh vào RxFIFO, lõi sẽ xác nhận ngắt RXFLVL (trongOTG_FS_GINTSTS).

4. Khi nhận được số PKTCNT của gói USB, lõi bên trong sẽ đặt bit NAK cho điểm cuối này để ngăn
không cho nó nhận thêm bất kỳ gói nào.

5. Ứng dụng xử lý ngắt và đọc dữ liệu từ RxFIFO.

6. Khi ứng dụng đã đọc tất cả dữ liệu (tương đương với XFRSIZ), lõi sẽ tạo ra
một ngắt XFRC (trongOTG_FS_DOEPINTx).

7. Ứng dụng xử lý ngắt và sử dụng cài đặt của bit ngắt XFRC (trongOTG_FS_DOEPINTx) để xác
định rằng quá trình truyền dự định đã hoàn tất.

IN truyền dữ liệu

• Ghi gói

Phần này mô tả cách ứng dụng ghi các gói dữ liệu vào FIFO điểm cuối khi các FIFO truyền chuyên
dụng được bật.

1. Ứng dụng có thể chọn chế độ hỏi vòng hoặc chế độ ngắt.

952/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

– Ở chế độ hỏi vòng, ứng dụng giám sát trạng thái FIFO truyền dữ liệu của điểm cuối bằng
cách đọc thanh ghiOTX_FS_DTXFSTSx, để xác định xem có đủ dung lượng trong dữ liệu
FIFO hay không.

– Ở chế độ ngắt, ứng dụng chờ ngắt TXFE (trong


OTG_FS_DIEPINTx) và sau đó đọc thanh ghiOTX_FS_DTXFSTSx để xác định xem có đủ
dung lượng trong dữ liệu FIFO hay không.

– Để ghi một gói dữ liệu có độ dài khác 0 thì phải có khoảng trống để ghi toàn bộ gói
đó vào dữ liệu FIFO.

– Để ghi gói có độ dài bằng 0, ứng dụng không được nhìn vào không gian FIFO.

2. Sử dụng một trong các phương pháp nêu trên, khi ứng dụng xác định rằng
có đủ không gian để ghi gói truyền, trước tiên ứng dụng phải ghi vào thanh ghi điều khiển
điểm cuối, trước khi ghi dữ liệu vào dữ liệu FIFO. Thông thường, ứng dụng phải thực
hiện đọc sửa đổi ghi trên thanh ghiOT_FS_DIEPCTLx để tránh sửa đổi nội dung của thanh
ghi, ngoại trừ việc thiết lập bit Kích hoạt điểm cuối.

Ứng dụng có thể ghi nhiều gói cho cùng một điểm cuối vào FIFO truyền, nếu còn chỗ trống. Đối
với các điểm cuối IN định kỳ, ứng dụng chỉ được ghi các gói cho một microframe. Nó chỉ có thể
ghi các gói cho giao dịch định kỳ tiếp theo sau khi quá trình chuyển hoàn tất cho giao dịch
trước đó.

• Thiết lập điểm cuối IN NAK

Luồng dữ liệu nội bộ

1. Khi ứng dụng đặt IN NAK cho một điểm cuối cụ thể, lõi sẽ dừng
truyền dữ liệu trên điểm cuối, bất kể tính sẵn có của dữ liệu trong FIFO truyền của
điểm cuối.

2. Mã thông báo IN không đẳng thời nhận được phản hồi bắt tay NAK

– Mã thông báo IN đẳng thời nhận được phản hồi gói có độ dài dữ liệu bằng 0

3. Lõi xác nhận ngắt INEPNE (IN endpoint NAK hiệu quả) trong
OTG_FS_DIEPINTx để đáp ứng với bit SNAK trongOTG_FS_DIEPCTLx.

4. Sau khi ứng dụng nhìn thấy ngắt này, ứng dụng có thể cho rằng
điểm cuối ở chế độ IN NAK. Ứng dụng có thể xóa ngắt này bằng cách đặt bit CNAK
trongOTG_FS_DIEPCTLx.

Trình tự lập trình ứng dụng

1. Để dừng truyền bất kỳ dữ liệu nào trên một điểm cuối IN cụ thể, ứng dụng phải đặt bit IN
NAK. Để đặt bit này, trường sau phải được lập trình.

– SNAK = 1 trongOTG_FS_DIEPCTLx

2. Đợi xác nhận ngắt INEPNE trongOTG_FS_DIEPINTx. Ngắt này cho biết lõi đã ngừng truyền
dữ liệu trên điểm cuối.

3. Lõi có thể truyền dữ liệu IN hợp lệ trên điểm cuối sau khi ứng dụng đã thiết lập bit NAK,
nhưng trước khi xác nhận ngắt hiệu quả NAK.

4. Ứng dụng có thể tạm thời che dấu ngắt này bằng cách ghi vào bit INEPNEM trong
DIEPSK.

– INEPNEM = 0 trong DIEPMSK

5. Để thoát khỏi chế độ NAK điểm cuối, ứng dụng phải xóa bit trạng thái NAK (NAKSTS)
trongOTG_FS_DIEPCTLx. Điều này cũng xóa ngắt INEPNE (trongOTG_FS_DIEPINTx).

– CNAK = 1 trongOTG_FS_DIEPCTLx
6. Nếu ứng dụng đã che giấu sự gián đoạn này trước đó thì nó phải được che giấu như sau:

RM0008 Phiên bản 21 953/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

– INEPNEM = 1 trong DIEPMSK

• Vô hiệu hóa điểm cuối IN

Sử dụng trình tự sau để tắt một điểm cuối IN cụ thể đã được bật trước đó.

Trình tự lập trình ứng dụng

1. Ứng dụng phải dừng ghi dữ liệu trên AHB để điểm cuối IN bị vô hiệu hóa.

2. Ứng dụng phải đặt điểm cuối ở chế độ NAK.

– SNAK = 1 trongOTG_FS_DIEPCTLx

3. Đợi INEPNE ngắt trongOTG_FS_DIEPINTx.

4. Đặt các bit sau trong thanh ghiOT_FS_DIEPCTLx cho điểm cuối phải
tàn tật.

– EPDIS = 1 trongOTG_FS_DIEPCTLx

– SNAK = 1 trongOTG_FS_DIEPCTLx

5. Xác nhận ngắt EPDISD trongOTG_FS_DIEPINTx chỉ ra rằng lõi có


đã vô hiệu hóa hoàn toàn điểm cuối được chỉ định. Cùng với việc xác nhận ngắt, lõi cũng
xóa các bit sau:

– EPENA = 0 trongOTG_FS_DIEPCTLx

– EPDIS = 0 trongOTG_FS_DIEPCTLx

6. Ứng dụng phải đọc thanh ghiOTG_FS_DIEPTSIZx cho IN EP định kỳ để tính toán lượng dữ liệu
trên điểm cuối được truyền trên USB.

7. Ứng dụng phải xóa dữ liệu trong FIFO truyền điểm cuối bằng cách đặt các trường sau
trong thanh ghiOT_FS_GRSTCTL:

– TXFNUM (trongOTG_FS_GRSTCTL) = Số FIFO truyền điểm cuối

– TXFFLSH trong (OTG_FS_GRSTCTL) = 1

Ứng dụng phải thăm dò thanh ghiOTG_FS_GRSTCTL, cho đến khi bit TXFFLSH bị xóa bởi lõi, điều này
cho biết đã kết thúc hoạt động xóa. Để truyền dữ liệu mới trên điểm cuối này, ứng dụng
có thể kích hoạt lại điểm cuối vào thời điểm sau.

• Lập trình dừng truyền cho điểm cuối IN

Ứng dụng phải sử dụng trình tự lập trình sau để dừng mọi quá trình truyền (do máy chủ bị gián
đoạn, thường là do thiết lập lại).

954/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

Trình tự của chiến dịch:

1. Tắt điểm cuối IN bằng cách cài đặt:

– EPDIS = 1 trong tất cả các thanh ghiOT_FS_DIEPCTLx

2. Đợi ngắt EPDIS trongOTG_FS_DIEPINTx, cho biết rằng IN


điểm cuối bị vô hiệu hóa hoàn toàn. Khi ngắt EPDIS được xác nhận, các bit sau sẽ bị xóa:

– EPDIS = 0 trongOTG_FS_DIEPCTLx

– EPENA = 0 trongOTG_FS_DIEPCTLx

3. Xóa TxFIFO bằng cách lập trình các bit sau:

– TXFFLSH = 1 trongOTG_FS_GRSTCTL

– TXFNUM = “Số FIFO dành riêng cho điểm cuối” trongOTG_FS_GRSTCTL

4. Ứng dụng có thể bắt đầu bỏ phiếu cho đến khi TXFFLSH trongOTG_FS_GRSTCTL bị xóa. Khi bit này bị
xóa, nó đảm bảo rằng không còn dữ liệu nào trong Tx FIFO.

• Truyền dữ liệu IN không định kỳ chung

Yêu cầu ứng dụng

1. Trước khi thiết lập truyền IN, ứng dụng phải đảm bảo rằng tất cả dữ liệu được truyền như
một phần của truyền IN đều là một phần của một bộ đệm duy nhất.

2. Đối với truyền IN, trường Kích thước truyền trong thanh ghi Kích thước truyền điểm cuối biểu thị
tải trọng tạo thành nhiều gói có kích thước gói tối đa và một gói ngắn. Gói tin ngắn này
được truyền vào cuối quá trình truyền.

– Để truyền một vài gói có kích thước gói tối đa và một gói ngắn ở cuối
việc chuyển giao:

Kích thước truyền[EPNUM] = x × MPSIZ[EPNUM] + sp

Nếu (sp > 0), thì số lượng gói[EPNUM] = x + 1.


Ngược lại, số lượng gói[EPNUM] = x

– Để truyền một gói dữ liệu có độ dài bằng 0:

Kích thước truyền [EPNUM] = 0

Số gói [EPNUM] = 1

– Để truyền một vài gói có kích thước gói tối đa và gói dữ liệu có độ dài bằng 0 khi kết thúc
quá trình truyền, ứng dụng phải chia quá trình truyền thành hai phần. Gói đầu tiên gửi
các gói dữ liệu có kích thước gói tối đa và gói thứ hai chỉ gửi gói dữ liệu có độ dài
bằng 0.

Lần truyền đầu tiên: kích thước truyền[EPNUM] = x × MPSIZ[epnum]; số gói = n;

Lần truyền thứ hai: kích thước truyền[EPNUM] = 0; số gói = 1;

3. Sau khi điểm cuối được bật để truyền dữ liệu, lõi sẽ cập nhật thanh ghi Kích thước truyền.
Khi kết thúc quá trình truyền IN, ứng dụng phải đọc thanh ghi Kích thước truyền để xác
định lượng dữ liệu được đăng trong FIFO truyền đã được gửi trên USB.

4. Dữ liệu được tìm nạp để truyền FIFO = Kích thước truyền ban đầu được lập trình bởi ứng dụng – kích thước
truyền cuối cùng được cập nhật lõi

– Dữ liệu được truyền trên USB = (số gói ban đầu do ứng dụng lập trình – Core
số gói cuối cùng được cập nhật) × MPSIZ[EPNUM]

– Dữ liệu chưa được truyền trên USB = (Kích thước truyền ban đầu do ứng dụng lập trình
– dữ liệu được truyền trên USB)

RM0008 Phiên bản 21 955/1136

967
Machine Translated by Google

USB tốc độ tối đa khi đang di chuyển (OTG_FS) RM0008

Luồng dữ liệu nội bộ

1. Ứng dụng phải đặt các trường kích thước truyền và số lượng gói trong các thanh ghi cụ
thể của điểm cuối và cho phép điểm cuối truyền dữ liệu.

2. Ứng dụng cũng phải ghi dữ liệu được yêu cầu vào FIFO truyền cho điểm cuối.

3. Mỗi khi ứng dụng ghi một gói vào FIFO truyền, kích thước truyền cho điểm cuối đó sẽ giảm
theo kích thước gói. Dữ liệu được ứng dụng tìm nạp từ bộ nhớ cho đến khi kích thước
truyền cho điểm cuối trở thành 0. Sau khi ghi dữ liệu vào FIFO, số lượng “số gói trong
FIFO” được tăng lên (đây là số lượng 3 bit, nội bộ được duy trì bởi lõi cho mỗi điểm
cuối IN truyền FIFO. Số lượng gói tối đa được duy trì bởi lõi tại bất kỳ thời điểm
nào trong FIFO điểm cuối IN là 8). Đối với các gói có độ dài bằng 0, một cờ riêng được
đặt cho mỗi FIFO mà không có bất kỳ dữ liệu nào trong FIFO.

4. Sau khi dữ liệu được ghi vào FIFO truyền, lõi sẽ đọc chúng ra khi nhận được mã thông báo
IN. Đối với mỗi gói dữ liệu IN không đẳng thời được truyền bằng bắt tay ACK, số
lượng gói cho điểm cuối sẽ giảm đi một cho đến khi số lượng gói bằng 0. Số lượng gói
không bị giảm khi hết thời gian chờ.

5. Đối với các gói có độ dài bằng 0 (được biểu thị bằng cờ có độ dài bằng 0 bên trong), lõi sẽ
gửi gói có độ dài bằng 0 cho mã thông báo IN và giảm trường số lượng gói.
6. Nếu không có dữ liệu trong FIFO cho mã thông báo IN đã nhận và trường số lượng gói cho
điểm cuối đó bằng 0 thì lõi sẽ tạo ra “mã thông báo IN nhận được khi TxFIFO trống”
(ITTXFE) Ngắt cho điểm cuối, với điều kiện là bit NAK của điểm cuối không được đặt. Lõi
phản hồi bằng cách bắt tay NAK cho các điểm cuối không đẳng thời trên USB.

7. Lõi tua lại bên trong các con trỏ FIFO và không tạo ra ngắt hết thời gian chờ.

8. Khi kích thước truyền là 0 và số lượng gói là 0, ngắt hoàn tất truyền (XFRC) cho điểm
cuối được tạo ra và việc kích hoạt điểm cuối sẽ bị xóa.

Trình tự lập trình ứng dụng

1. Lập trình thanh ghiOTG_FS_DIEPTSIZx với kích thước truyền và tương ứng
số lượng gói tin.

2. Lập trình thanh ghiOTG_FS_DIEPCTLx với các đặc điểm điểm cuối và đặt các bit CNAK và EPENA
(Bật điểm cuối).

3. Khi truyền gói dữ liệu có độ dài khác 0, ứng dụng phải thăm dò ý kiến
Thanh ghiOTX_FS_DTXFSTSx (trong đó x là số FIFO được liên kết với điểm cuối đó) để
xác định xem có đủ dung lượng trong dữ liệu FIFO hay không. Ứng dụng có thể tùy
chọn sử dụng TXFE (trongOTG_FS_DIEPINTx) trước khi ghi dữ liệu.

• Truyền dữ liệu IN định kỳ chung

Phần này mô tả việc truyền dữ liệu IN định kỳ điển hình.

Yêu cầu ứng dụng

1. Yêu cầu ứng dụng 1, 2, 3 và 4 của việc truyền dữ liệu IN không định kỳ chung cũng áp dụng
cho việc truyền dữ liệu IN định kỳ, ngoại trừ một chút sửa đổi trong yêu cầu 2.

– Ứng dụng chỉ có thể truyền nhiều gói dữ liệu có kích thước gói tối đa hoặc nhiều gói
có kích thước gói tối đa, cộng thêm một gói ngắn ở cuối. Để truyền một vài gói có
kích thước gói tối đa và một gói ngắn ở cuối quá trình truyền, phải đáp ứng các điều
kiện sau:

kích thước truyền[EPNUM] = x × MPSIZ[EPNUM] + sp


(trong đó x là số nguyên ≥ 0 và 0 ≤ sp < MPSIZ[EPNUM])

Nếu (sp > 0), số lượng gói[EPNUM] = x + 1


Ngược lại, số lượng gói[EPNUM] = x;

956/1136 RM0008 Phiên bản 21


Machine Translated by Google

RM0008 USB tốc độ tối đa khi đang di chuyển (OTG_FS)

MCNT[EPNUM] = số lượng gói tin[EPNUM]

– Ứng dụng không thể truyền gói dữ liệu có độ dài bằng 0 khi kết thúc quá trình truyền.

You might also like