BÀI 10: DMA VỚI STM32F103 - Chia Sẻ Các Vấn đề điện Tử

BÀI 10: DMA VỚI STM32F103

BÀI 10: DMA VỚI STM32F1.
  1. Giới thiệu sơ lược về DMA.
  2. DMA – Direct memory access(DMA) được sử dụng với mục đích truyền data với tốc độ cao từ thiết bị ngoại vi đến bộ nhớ cũng như từ bộ nhớ đến bộ nhớ. Data được truyền với tốc độ cao hơn khi sử dụng DMA do không cần nhiều lệnh xử lý từ CPU. Điều đó làm cho tài nguyên CPU được rảnh rỗi cho các hoạt động khác.
    Ở STM32F103C8 chỉ có 1 bộ DMA với 7 kênh hỗ trợ cho các chức năng như: ADC1, SPI, USART, I2C, TIM1 -> TIM4.
    Chức năng chính:
    • 7 channel của kênh DMA1 có thể được cấu hình riêng biệt.
    • Mỗi channel được kết nối để dành riêng cho tín hiệu DMA từ các thiết bị ngoài hay tín hiệu nội bên trong MCU.
    • Có 4 mức ưu tiên có thể lập trình cho mỗi channel.
    • Kích thước data được sử dụng là 1 byte, 2 byte(half word) hoặc 4 byte(word).
    • Hỗ trợ việc lặp lại liên tục data.
    • Có 3 ngắt sự kiện(truyền xong DMA half word, word và truyền DMA bị lỗi).
    • Có 2 loại truyền dữ liệu là ngoại vi với bộ nhớ và bộ nhớ với bộ nhớ.
    • Quyền truy cập tới Flash, SRAM, APB1, APB2, APB.
    • Số lượng data có thể lên đến 65535.
  3. Cấu hình sử dụng thư viện chuẩn ST.
  4. Vd: cấu hình bộ ADC sử dụng DMA.
    Chương trình con cấu hình DMA cho bộ ADC1:
    • DMA1_channel1 : channel 1 tương ứng với DMA của bộ ADC.
    • ADC1_DR_Address: địa chỉ của thanh ghi chứa Data trong bộ ADC.
    • (uint32_t)&ADC_value : địa chỉ của biến chứa giá trị ADC đọc về.
    • DMA_DIR_PeripheralSRC: chiều dữ liệu được truyền là từ ngoại vi.
    • 1 : số lượng data truyền là 1.
    • DMA_PeripheralInc_Disable : không cho phép tăng địa chỉ của ngoại vi vì data chỉ có 1.
    • DMA_MemoryInc_Disable : không cho phép tăng địa chỉ của bộ nhớ vì data chỉ có 1.
    • DMA_PeripheralDataSize_HalfWord: số bit của data ngoại vi là 16 bit.
    • DMA_MemoryDataSize_HalfWord : số bit của data bộ nhớ là 16 bit.
    • DMA_Mode_Circular: cho phép data liên tục chuyển đổi.
    • DMA_Priority_High: mức độ ưu tiên của channel là mức cao.
    • DMA_M2M_Disable: không cho phép sử dụng DMA giữa bộ nhớ và bộ nhớ.
    Channel của bộ DMA1 phụ thuộc vào chức năng được sử dụng và được tra trong bảng sau:
  5. Một vài thanh ghi quan trọng.
    1. DMA_CCRx – DMA channel x configuration register.
      • MEM2MEM: cho phép truyền DMA từ bộ nhớ đến bộ nhớ.
      • PL[1:0] : mức ưu tiên của channel tương ứng 00: thấp nhất, 11 cao nhất.
      • MSIZE[1:0] : kích thước của bộ nhớ 00,01,10 tương ứng 8 bit, 16 bit, 32 bit.
      • PSIZE[1:0] : kích thước ngoại vi 00,01,10 tương ứng 8 bit, 16 bit, 32 bit.
      • MINC: có cho phép mode tăng địa chỉ bộ nhớ hay không.
      • PINC: có cho phép mode tăng địa chỉ ngoại vi hay không.
      • CIRC: có cho phép việc chuyển đổi được diễn ra liên tục hay không.
      • TEIE: cho phép ngắt khi có lỗi trong quá trình truyền hay không.
      • HTIE: cho phép ngắt khi truyền xong data ở chế độ half word.
      • TCIE: cho phép ngắt khi truyền xong data ở chế độ word.
      • EN : cho phép bộ DMA hoạt động hay không.
    2. DMA_CNDTRx – DMA channel x number of data register.
    3. Thanh ghi này có giá trị là 16 bit tương ứng với 65535, chứa số lượng data truyền.
    4. DMA_CPARx – DMA channel x pheripheral address register.
    5. Thanh ghi này là thanh ghi 32 bit chứa địa chỉ của ngoại vi.
    6. DMA_CMARx – DMA channel x memory address register.
    7. Thanh ghi này là thanh ghi 32 bit chứa địa chỉ của bộ nhớ.

  6. Bài tập.
    1. Viết chương trình đọc giá trị ADC trên channel 0 ở kênh ADC1 sử dụng chế độ DMA. Debug chương trình để quan sát giá trị ADC đọc về.
    2. Viết chương trình đọc ADC trên channel 0 kênh ADC1 để thay đổi PWM của TIM1 channel1. TIM1 được cấu hình ở chế độ DMA.

Link tải chương trình sử dụng DMA với ADC Link tải chương trình sử dụng DMA với TIMER

About: xuan minh

Mình muốn chia sẻ những kiến thức có được trong quá trình học tập và làm việc, hy vọng điều đó sẽ giúp ích cho các bạn.

You may also like :

No comments:

Post a Comment

Newer Post Older Post Subscribe to: Post Comments (Atom)

Bài đăng phổ biến

  • BÀI 08: UART TRONG STM32F103 BÀI 08: UART TRONG STM32F103. Sơ lược về lý thuyết. UART - Universal synchronous asynchronous receiver transmitter là một ngoại vi cơ...
  • BÀI 00 : GIỚI THIỆU VỀ STM32F103C8T6 BÀI 00 : GIỚI THIỆU VỀ STM32F103C8T6. Giới thiệu sơ lược STM32 là một trong những dòng chip...
  • BÀI 09: ADC TRONG STM32F103 BÀI 09: ADC TRONG STM32F103. Sơ lược về lý thuyết. ADC – Analog to digital Converter là bộ chuyển đổi tín hiệu tương tự sang tín hiệu...
  • BÀI 07: PWM TRONG STM32F103 BÀI 07: PWM TRONG STM32F103. Sơ lược về lý thuyết. PWM(pulse- with modulation) hay còn gọi nôm na là “băm xung” hay “điều khiển độ r...
  • BÀI 02 : GPIO VỚI STM32F1 BÀI 02 : GPIO VỚI STM32F1. Sơ lược về lý thuyết. GPIO là từ viết tắt của General purpose I/O po...
  • BÀI 06 : TIMER BASE trong STM32F103 BÀI 06 : TIMER BASE trong STM32F103. Sơ lược về lý thuyết. STM32f103C8 có tất cả 7 timer nhưng trong đó đã bao gồm 1 systick timer, 2...
  • NẠP CODE CHO STM32 BẰNG BOOT LOADER NẠP CODE VỚI BOOT LOADER STM32 Boot loader là gì
  • BÀI 04 : SYSTEM TICK TIMER VỚI STM32F1 BÀI 04 : SYSTEM TICK TIMER VỚI STM32F1. Sơ lược về lý thuyết. System Tick Timer là bộ timer 24 bit độc lập nằm trong lõi cortex. Bộ t...
  • BÀI 10: DMA VỚI STM32F103 BÀI 10: DMA VỚI STM32F1. Giới thiệu sơ lược về DMA. ...
  • BÀI 01 : HƯỚNG DẪN TẠO PROJETC STM32 VỚI KEIL V5. BÀI 01 : HƯỚNG DẪN TẠO PROJETC STM32 VỚI KEIL V5. Những phần mềm cần thiết cần cài đặt: ...

About Me

xuan minh View my complete profile

Popular

Labels

Archive

Hướng dẫn tạo project trong STM8S với STVD

  • BÀI 00 : GIỚI THIỆU VỀ STM32F103C8T6 BÀI 00 : GIỚI THIỆU VỀ STM32F103C8T6. Giới thiệu sơ lược STM32 là một trong những dòng chip...
  • NẠP CODE CHO STM32 BẰNG BOOT LOADER NẠP CODE VỚI BOOT LOADER STM32 Boot loader là gì
  • BÀI 09: ADC TRONG STM32F103 BÀI 09: ADC TRONG STM32F103. Sơ lược về lý thuyết. ADC – Analog to digital Converter là bộ chuyển đổi tín hiệu tương tự sang tín hiệu...

Labels

  • 01. Giao tiếp với cảm biến ánh sáng BH1750.
  • 10. MXCUBE HAL STM32F407 SIMULATE EEPROM.
  • 13. FLASH và EEPROM TRONG STM8S.
  • 14. OPTION BYTES TRONG STM8S
  • ADC TRONG STM32F103
  • ADC TRONG STM8S
  • ADC với STM32F303CC.
  • BÀI 00 : GIỚI THIỆU VỀ STM32F103C8T6
  • BÀI 01 : HƯỚNG DẪN TẠO PROJETC STM32 VỚI KEIL V5.
  • BÀI 02 : GPIO VỚI STM32F1
  • BÀI 03 : CLOCK HỆ THỐNG VỚI STM32F1
  • BÀI 04 : SYSTEM TICK TIMER VỚI STM32F1
  • Bài 04. Giao tiếp với OLED 0.96 inch SSD1306.
  • Bài 05: PWM với STM32F303CC trong MXCUBE
  • BOARD STM32F103C8T6 - STLINK.
  • BOARD STM8S003F3P6 - UART.
  • BOOT LOADER VỚI STM32
  • Bootloader STM8S trên IAR.
  • CLOCK HỆ THỐNG TRONG STM8S
  • DAC với STM32F303CC
  • DMA VỚI STM32F103
  • ENCODER TRONG STM8S
  • ENCODER VỚI STM32F103
  • Export library from existing project in altium
  • EXTERNAL INTERRUPT với STM32F303CC
  • GPIO trong STM8S với STVD
  • GPIO với STM32CubeMX trong STM32F303
  • Hướng dẫn tạo project với STM32CubeMX
  • I2C VỚI IC DS1307
  • I2C VỚI STM32F1
  • NẠP CHƯƠNG TRÌNH VỚI CÁC CHÂN ALTERNATE FUNCTION(REMAP)TRONG STVP
  • NGẮT NGOÀI TRONG STM8S
  • Ngắt ngoài với STM32F1
  • PWM TRONG STM32F103
  • PWM trong STM8S
  • RTC VỚI STM32F103
  • RTC với STM32F303CC
  • SPI VỚI STM32F1
  • SRF05 VỚI STM8S
  • Tạo project cho STM8S với IAR for STM8S
  • Tạo project trong STM8S với STVD
  • THIẾT KẾ LED VỚI 2 CHÂN PB4 VÀ PB5
  • TIMER BASE trong STM32F103
  • TIMER BASE và NGẮT TIMER
  • TIMER BASE VỚI MXCUBE SỬ DỤNG STM32F303CC
  • TỐI ƯU CODE TRONG STVD
  • UART TRONG STM32F103
  • UART TRONG STM8S
  • UART với STM32F303CC trong MXCUBE

Blog Archive

  • ▼  2018 (36)
    • ▼  April (5)
      • BÀI 13: RTC VỚI STM32F103.
      • BÀI 12: I2C VỚI STM32F1.
      • BÀI 11: SPI VỚI STM32F1
      • BÀI 10: DMA VỚI STM32F103
      • NẠP CODE CHO STM32 BẰNG BOOT LOADER

Blogger templates

Blogroll

About

Copyrights at chia sẻ các vấn đề điện tử © - Powered By Xuan Minh

SEARCH ON chia sẻ các vấn đề điện tử

Từ khóa » Dma Trong Stm32 Là Gì