Chương 1: Cơ sở lý thuyết về stm32 cập bus trong 1 đơn vị thời gian định sẵn). Sau mỗi lần CPU bị reset thì tất cả các nguồn xung clock cấp cho ngoại vi đều bị tắt hết chỉ trừ xung clock cấp cho SRAM và FLITF Hình 1. Kiến trúc của ARM STM32F103C8T6 1.7 Cấp xung Clock Có 4 loại xung clock có thể dùng làm xung clock cho hệ thống (SYSCLK-xung clock cấp cho khối xử lý): - HIS (High Speed Internal) nguồn xung clock tốc độ cao bên trong ARM. - HSE (High Speed External) nguồn xung clock tốc độ cao bên ngoài ARM.
- LSI (Low Speed Internal) nguồn xung clock tốc độ chậm 40kHz ở bên trong RM. - LSE (Low Speed External) nguồn xung clock tốc độ chậm thường được nối với thạch anh 32,768kHz từ bên ngoài, xung clock này có thể được dùng để cấp cho RTC. Mỗi nguồn xung clock có thể được bật, tắt độc lập nhằm tiết kiệm năng lượng. Chú ý: Muốn hệ thống hoạt động ở tần số cao nhất (72MHz) ta phải sử dụng HSE (4 – 16MHz) kết hợp với mạch nhân tần số PLLMUL.
Thông thường ta chọn giá trị HSE bằng 8MHz, điều này có nghĩa là ta phải kết nối thạch anh hoặc một nguồn xung clock 8MHz bên ngoài ARM theo cách được mô tả bên dưới. Nguyễn Mạnh Hùng 7 SVTH:Nguyễn Khắc Hiển Đồ án tốt nghiệp Đại học Chương 1: Cơ sở lý thuyết về stm32 Hình 1.6 : Cách kết nối nguồn xung 8MHz Hình 1.7: Sơ đồ cây xung Clock Ngoài ra ARM cũng còn có nguồn xung clock phụ HIS tốc độ tối đa 64Mhz GVHD:ThS. Nguyễn Mạnh Hùng 8 SVTH:Nguyễn Khắc Hiển Đồ án tốt nghiệp Đại học Chương 1: Cơ sở lý thuyết về stm32 Hình 1.8: Kết nối nguồn xung cho RTC Muốn dùng RTC định thời một cách chính xác ta phải sử dụng LSE bằng cách kết nối thạch anh hoặc bộ giao động có tần số 32.768kHz vào 2 chân OSC32_IN và OSC32_OUT theo cách hình 2.8 Cấu hình BOOT cho STM32 Dòng STM32F1 có 3 chế độ BOOT được chọn bởi 2 chân BOOT [1:0] theo bảng sau: Bảng 1. Các chế độ BOOT trong STM32 Trạng thái chân boot Chế độ boot Giải thích BOOT1 BOOT0 x 0 Bộ nhớ Flash chính Chọn Boot từ bộ nhớ Flash chính 0 1 Bộ nhớ hệ thống Chọn Boot từ bộ nhớ hệ thống 1 1 SRAM Chọn Boot từ bộ nhớ SRAM Trạng thái của các chân BOOT được cập nhật vào thời điểm có cạnh lên thứ 4 của xung SYSCLK sau khi Reset.
Việc chọn chế độ BOOT phụ thuộc vào việc cài đặt của người dùng đối với 2 chân BOOT1 và BOOT0 và trạng thái các chân BOOT này sẽ được cập nhật lại sau mỗi lần thoát khỏi chế độ Standby. Đối với dòng low, medium, high density thì boot loader sử dụng UART1 để nạp chương trình vào Flash. Đổi với dòng conectivity line thì boot loader sử dụng USART1, USART2 (remap), CAN (remap) hoặc USB OTG FS hoạt động ở chế độ DFU-Device Firmware Upgrade. Trong chế độ này USART sẽ hoạt động nhờ giao động nội 8MHz (HSI) còn CAN và USB chỉ có thể hoạt động nhờ dao động ngoại HSE khi kết nối với thạch anh 8 MHz, 14,7546MHz hoặc 25MHz.
Nguyễn Mạnh Hùng 9 SVTH:Nguyễn Khắc Hiển Đồ án tốt nghiệp Đại học Chương 1: Cơ sở lý thuyết về stm32 1.9 Kết nối với các giao tiếp khác STM32 hỗ trợ 5 loại giao tiếp ngoại vi khác nhau. STM32 có giao diện SPI và I2C để giao tiếp với các mạch tích hợp khác. Hỗ trợ giao tiếp CAN cho các module, USB cho giao tiếp PC và giao tiếp USART. SPI Hỗ trợ giao tiếp tốc độ cao với các mạch tích hợp khác, STM cung cấp 2 khối điều khiển SPI có khả năng chạy ở chế độ song công(Full duplex) với tốc độ truyền dữ liệu lên tới 18MHz.
Khối SPI tốc độ cao nằm trên APB2, khối SPI tốc độ thấp nằm trên APB1. Mỗi khối SPI có hệ thống thanh ghi cấu hình độc lập, dữ liệu truyền có thể dưới dạng 8-bit hoặc 16-bit, thứ tW hỗ trợ MSB hay LSB. Chúng ta có thể cấu hình mỗi khối SPI đóng vai trò master hay slave.9 Giao tiếp SPI Chức năng của SPI: SPI sử dụng phương thức truyền: Nối tiếp - Đồng bộ - Song công. Nối tiếp: Truyền một bit dữ liệu trên mỗi nhịp truyền.
Đồng bộ: Có xung nhịp đồng bộ quá trình truyền. Song công: Cho phép gửi, nhận đồng thời. SPI là phương thức Master – Slave. Thiết bị đóng vai trò Master điều khiển xung đồng bộ (SCK).
Tất cả các thiết bị Slaver bị điều khiển bởi xung đồng bộ phát ra bởi Master. Cấu hình ghép nối cơ bản trong giao tiếp SPI: GVHD:ThS. Nguyễn Mạnh Hùng 10 SVTH:Nguyễn Khắc Hiển Đồ án tốt nghiệp Đại học Chương 1: Cơ sở lý thuyết về stm32 Cấu hình ghép nối 1 thiết bị Hình 1. Ghép nối một thiết bị Cấu hình ghép nối nhiều thiết bị - MISO (Master Input Slave Output): Đường truyền tín hiệu từ Master đến Slave.
- MOSI (Master Output Slave Input): Đường truyền tín hiệu từ Slave đến Master. - SCK: xung đồng bộ. Các thiết bị sử dụng giao tiếp SPI rất đa dạng bao gồm: thẻ nhớ SD/MMC, bộ nhớ, cảm biến ảnh, LCD, ADC……. Ghép nối nhiều thiết bị Để hỗ trợ truyền dữ liệu tốc độ cao, mỗi khối SPI có 2 kênh DMA dành cho gửi và nhận dữ liệu.
Thêm vào đó là khối CRC dành cho cả truyền và nhận dữ liệu. Khối GVHD:ThS. Nguyễn Mạnh Hùng 11 SVTH:Nguyễn Khắc Hiển Đồ án tốt nghiệp Đại học Chương 1: Cơ sở lý thuyết về stm32 CRC đều có thể hỗ trợ kiểm tra CRC8 và CRC16. Các đặc tính này rất cần thiết khi sử dụng SPI để giao tiếp với MMC/SD card.12 Giao tiếp SPI với SD card b.
I2C Tương tW như SPI, chuẩn I2C cũng được STM32 hỗ trợ nhằm giao tiếp với các mạch tích hợp ngoài. Giao diện I2C có thể được cấu hình hoạt động ở chế độ slave, master hay đóng vai trò bộ phân xử đường trong hệ thống multi-master. Giao diện I2C hỗ trợ tốc độ truyền chuẩn 100kHz hay tốc độ cao 400kHz. Ngoài ra còn hỗ trợ 7 hoặc 10 bit địa chỉ.
Được thiết kế nhằm đơn giản hóa quá trình trao đổi với 2 kênh DMA cho truyền và nhận dữ liệu. Hai ngắt một cho nhân Cortex, một cho định địa chỉ và truyền nhận.13 Giao tiếp I2C Thêm nữa để đảm bảo tính chính xác dữ liệu truyền, khối kiểm tra lỗi dữ liệu (PAC – packet error checking) được tích hợp thêm vào giao diện I2C cho phép kiểm tra mã CRC-8 bit. Thao tác này được thWc hiện hoàn toàn tW động bởi phần cứng. Nguyễn Mạnh Hùng 12 SVTH:Nguyễn Khắc Hiển Đồ án tốt nghiệp Đại học Chương 1: Cơ sở lý thuyết về stm32 Hình 1.14 Kiểm tra lỗi trên I2C c.
USART Mặc dù các giao diện trao đổi dữ liệu dạng nối tiếp dần dần không còn được hỗ trợ trên máy tính, chúng vẫn còn được sử dụng rất nhiều trong lĩnh vWc nhúng bởi sW tiện ích và tính đơn giản. STM32 có đến 3 khối USART, mỗi khối có khả năng hoạt động đến tốc độ 4. Một khối USART nằm trên APB1 với xung nhịp hoạt động 72MHz, các khối còn lại nằm trên APB2 hoạt động ở xung nhịp 36MHz.15 Giao diện USART có khả năng hỗ trợ giao tiếp không đồng bộ UARTS, modem cũng như giao tiếp hồng ngoại và Smartcard Với mạch tích hợp cho phép chia nhỏ tốc độ BAUD chuẩn thành nhiều tốc độ khác nhau thích hợp với nhiều kiểu trao đổi dữ liệu khác nhau. Mỗi khối USART có hai kênh DMA dành cho truyền và nhận dữ liệu.
Khi hỗ trợ giao tiếp dạng UART, GVHD:ThS. Nguyễn Mạnh Hùng 13 SVTH:Nguyễn Khắc Hiển Đồ án tốt nghiệp Đại học Chương 1: Cơ sở lý thuyết về stm32 USART cung cấp nhiều chế độ giao tiếp. Có thể trao đổi dữ liệu theo kiểu chế độ haflfl-duplex trên đường truyền Tx. Khi hỗ trợ giao tiếp modem và giao tiếp có sử dụng điều khiển luồng (hardware flow control) USART cung cấp thêm các tín hiệu điều khiển CTS và RTS.16 Hỗ trợ giao tiếp ở chế độ hafl-duplex dựa trên một đường truyền Ngoài ra USART còn có thể dùng để tạo các giao tiếp nội (local interconnect bus).
Đây là mô hình cho phép nhiều vi xử lý trao đổi dữ liệu lẫn nhau. USART còn có khối encoder/decoder dùng cho giao tiếp hồng ngoại với tốc độ hỗ trợ có thể đạt đến 1115200bps, hoạt động ở chế độ hafl-duplex NRZ khi xung nhịp hoạt động khoảng từ 1.4MHz cho đến 2. Để thWc hiện giao tiếp với smartcard, USART còn hỗ trợ chuẩn ISO 7618-3.17 Giao tiếp smartcard và hồng ngoại Người dùng có thể cấu hình khối USART cho các giao tiếp đồng bộ tốc độ cao dWa trên 3 đường tín hiệu riêng biệt như SPI. Khi hoạt động ở chế độ này, khối USART sẽ đóng vai trò là SPI master và có khả năng cấu hình Clock Polarity/Phase nên hoàn toàn có thể giao tiếp với các SPI slave khác.
Nguyễn Mạnh Hùng 14 SVTH:Nguyễn Khắc Hiển Đồ án tốt nghiệp Đại học Chương 1: Cơ sở lý thuyết về stm32 Hình 1.18 Hỗ trợ giao tiếp đồng bộ SPI d. CAN Khối điều khiển CAN cung cấp một điểm giao tiếp CAN đầy đủ hỗ trợ chuẩn CAB 2.0B Active và Passive với tốc độ truyền dữ liệu 1 Mbit/s. Ngoài ra khối CAN còn có khối mở rộng hỗ trợ giao tiếp truyền dữ liệu dạng deterministic dWa trên thẻ thời gian Time-trigger CAN(TTCAN).19 khối điều khiên CAN Tên đầy đủ của CAN là bxCAN, trong đó bx là viết tắt của Base eXtended. Một giao diện cơ bản CAN tối thiểu phải hỗ trợ bộ đệm đơn truyền và nhận dữ liệu, trong khi đó các giao diện mở rộng cung cấp nhiều bộ đệm.
bxCan là sW kết hợp giữa hai kiến trúc trên. bxCan có 3 bộ đệm dữ liệu cho truyền và 2 bộ đệm nhận, các bộ đệm này thường được gọi là mailbox(hộp thư). Mỗi mailbox được tổ chức như một FIFO hàng đợi. Nguyễn Mạnh Hùng 15 SVTH:Nguyễn Khắc Hiển Đồ án tốt nghiệp Đại học Chương 1: Cơ sở lý thuyết về stm32 Hình 1.20 Khối CAN có 3 mailbox cho truyền dữ liệu với đánh nhãn thời gian tự động cho chuẩn TTCAN Một điểm quan trọng nữa của CAN là lọc gói tin nhận(receive message filter).
Vì giao thức CAN truyền dữ liệu dWa trên địa chỉ đích nhận, do đó gói tin sẽ được phát trên toàn bộ mạng, chỉ có điểm nào có địa chỉ giống như địa chỉ nhận trên gói tin sẽ dùng gói tin đó. Lọc gói tin giúp các điểm trên mạng CAN tránh xử lý các gói tin không phù hợp.STM32 cung cấp 14 bộ lọc(14 filters bank) được đánh số từ 0 -13 cho phép lọc toàn bộ các gói tin không cần thiết. Mỗi bộ lọc gồm 2 thanh ghi 32-bit CAN_FxR0 vàCAN_FxR1.