2.2.1. Lí thuyết DAC
Bộ chuyển đổi DAC (Digital-To-Analog) là một mạch điện tử lấy một số hoặc giá trị số làm đầu vào và chuyển nó thành điện áp tương tự, mức điện áp tương ứng với số nhị phân trong thanh ghi đầu ra DAC. Điện áp đầu ra DAC thay đổi bất cứ khi nào thay đổi giá trị thanh ghi đầu ra DAC và quá trình lấy mẫu này có thể được kích hoạt theo nhiều cách.
DAC thực hiện hoạt động trái ngược của ADC, trong khi ADC (A / D) chuyển đổi điện áp tương tự thành dữ liệu số, DAC (D / A) chuyển đổi dữ liệu số thành điện áp tương tự trên chân đầu ra.
Mô-đun DAC là một bộ chuyển đổi tín hiệu số sang tương tự 12 bit, điện áp đầu ra. 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ó tới hai kênh đầu ra, mỗi kênh có bộ chuyển đổi riêng. Trong chế độ kênh DAC kép, cá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 cho các hoạt động cập nhật đồng bộ.
Chân DAC_OUTx có thể được sử dụng làm đầu vào / đầu ra mục đích chung (GPIO) khi đầu ra DAC bị ngắt kết nối khỏi đệm đầu ra và được kết nối với các thiết bị ngoại vi trên chip. Bộ đệm đầu ra DAC có thể được kích hoạt tùy chọn để cho phép dòng đầu ra cao. Một hiệu chuẩn riêng có thể được áp dụng cho mỗi kênh
đầu ra DAC. Các kênh đầu ra DAC hỗ trợ chế độ công suất thấp, chế độ Lấy mẫu và Giữ.
- Tính năng DAC
Một giao diện DAC, tối đa hai 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ộ hóa
Tạo sóng nhiễu và sóng tam giác
Kênh DAC kép cho các chuyển đổi độc lập hoặc đồng thời
Khả năng DMA cho từng kênh bao gồm phát hiện lỗi chạy dưới DMA Các trình kích hoạt bên ngoài cho chuyển đổi
Kênh đầu ra DAC chế độ đệm / không đệm Hiệu chuẩn bù đắp đệm
Mỗi đầu ra DAC có thể được ngắt kết nối khỏi chân đầu ra DAC_OUTx Kết nối đầu ra DAC với các thiết bị ngoại vi trên chip
Chế độ lấy mẫu và giữ để vận hành công suất thấp ở chế độ Dừng Tham chiếu điện áp đầu vào, V REF +
DAC bao gồm tối đa hai kênh đầu ra riêng biệt. Mỗi kênh đầu ra có thể được kết nối với các thiết bị ngoại vi trên chip như bộ so sánh, bộ khuếch đại hoạt động và ADC (nếu có). Trong trường hợp này, kênh đầu ra DAC có thể bị ngắt kết nối khỏi chân đầu ra DAC_OUTx và GPIO tương ứng có thể được sử dụng cho mục đích khác. Đầu ra DAC có thể được đệm hoặc không.
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. Kênh DAC sau đó được bật sau khi khởi động .
- Định dạng dữ liệu DAC STM32
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 phải 8-bit: phần mềm phải tải dữ liệu vào các bit DAC_DHR8Rx [7: 0] (được lưu trữ vào các bit DHRx [11: 4])
Căn trái 12-bit: phần mềm phải tải dữ liệu vào các bit DAC_DHR12Lx [15: 4] (được lưu trữ trong các bit DHRx [11: 0])
Căn chỉnh phải 12-bit: phần mềm phải tải dữ liệu vào các bit DAC_DHR12Rx [11: 0] (được lưu trữ trong 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 được chuyển và lưu trữ vào DHRx tương ứng (thanh ghi giữ dữ liệu, là các thanh ghi được ánh xạ bên trong không có bộ nhớ). Sau đó, thanh ghi DHRx được tải vào thanh ghi DORx hoặc tự động, bằng trình kích hoạt phần mềm hoặc bởi trình kích hoạt sự kiện bên ngoài.
- Phương trình điện áp đầu ra DAC STM32 (Công thức)
Đầu vào kỹ thuật số được chuyển đổi thành điện áp đầu ra trên chuyển đổi tuyến tính giữa 0 và V REF +. Điện áp đầu ra tương tự trên mỗi chân kênh DAC được xác định theo công thức sau:
Đầu ra DAC = (V REF +) x (DOR / 4096) - Chế độ hoạt động của kênh DAC STM32
Mỗi kênh DAC có thể được cấu hình ở chế độ Bình thường hoặc chế độ Lấy mẫu và Giữ. Bộ đệm đầu ra có thể được kích hoạt để cho phép khả năng ổ đĩa
cao. Trước khi bật bộ đệm đầu ra, cần hiệu chỉnh bù điện áp. Việc hiệu chuẩn này được thực hiện tại nhà máy (được tải sau khi đặt lại) và có thể được điều chỉnh bằng phần mềm trong quá trình vận hành ứng dụng.
- Chế độ bình thường
Trong chế độ Bình thường, có bốn kết hợp, bằng cách thay đổi trạng thái bộ đệm và bằng cách thay đổi kết nối chân DAC_OUTx.
Để kích hoạt bộ đệm đầu ra, các bit MODEx [2: 0] trong thanh ghi DAC_MCR phải là:
000: DAC được kết nối với chân bên ngoài
001: DAC được kết nối với chân cắm ngoài và với các thiết bị ngoại vi trên chip
Để vô hiệu hóa bộ đệm đầu ra, các bit MODEx [2: 0] trong thanh ghi DAC_MCR phải là:
010: DAC được kết nối với chân ngoài
011: DAC được kết nối với thiết bị ngoại vi trên chip - Chế độ lấy mẫu và giữ
Trong chế độ mẫu và chế độ Giữ, lõi DAC chuyển đổi dữ liệu trên một chuyển đổi được kích hoạt, sau đó, giữ điện áp được chuyển đổi trên tụ điện. Khi không chuyển đổi, các lõi DAC và bộ đệm sẽ được tắt hoàn toàn giữa các mẫu và đầu ra DAC được xác định ba lần, do đó làm giảm mức tiêu thụ điện năng tổng thể. Cần có một khoảng thời gian ổn định mới, giá trị này phụ thuộc vào trạng thái bộ đệm, được yêu cầu trước mỗi lần chuyển đổi mới.
Trong chế độ này, lõi DAC và tất cả các thanh ghi và logic tương ứng được điều khiển bởi đồng hồ tốc độ thấp (LSI) ngoài đồng hồ APB1, cho phép sử dụng các kênh DAC ở các chế độ công suất thấp như chế độ Dừng.
Hiệu chuẩn DAC STM32
Chức năng truyền của bộ chuyển đổi tín hiệu số sang tương tự (DAC) N-bit là: V OUT = ((D / 2 N-1 ) x G x V ref ) + V os
Trong đó V OUT là đầu ra tương tự, D là đầu vào kỹ thuật số, G là độ lợi, V ref là điện áp toàn dải danh định và V os là điện áp bù. Đối với một kênh DAC lý tưởng, G = 1 và V os = 0.
Do đặc tính của bộ đệm đầu ra, độ lệch điện áp có thể khác với từng phần và gây ra lỗi bù tuyệt đối trên đầu ra tương tự. Để bù cho V os , cần phải hiệu chuẩn bằng kỹ
thuật cắt. Hiệu chuẩn chỉ hợp lệ khi kênh DACx đang hoạt động với bộ đệm được bật (MODEx [2: 0] = 000b hoặc 001b hoặc 100b hoặc 101b). nếu được áp dụng ở các chế độ khác khi bộ đệm tắt, nó không có tác dụng. Trong quá trình hiệu chuẩn:
Đầu ra bộ đệm sẽ bị ngắt kết nối khỏi các kết nối bên trong / bên ngoài chân cắm và được đặt ở chế độ tristate (HiZ),
Bộ đệm sẽ hoạt động như một bộ so sánh, để cảm nhận giá trị mã giữa 0x800 và so sánh nó với tín hiệu V REF + / 2 thông qua một cầu nối bên trong, sau đó chuyển tín hiệu đầu ra của nó thành 0 hoặc 1 tùy thuộc vào kết quả so sánh (bit CAL_FLAGx)
Hai kỹ thuật hiệu chuẩn được cung cấp:
Cắt tại nhà máy: (luôn bật) Phần bù của bộ đệm DAC được cắt tại nhà máy. Giá trị mặc định của các bit OTRIMx [4: 0] trong thanh ghi DAC_CCR là giá trị cắt gốc và nó được tải khi giao diện kỹ thuật số DAC được thiết lập lại. Người dùng cắt tỉa: Người dùng có thể cắt tỉa khi điều kiện hoạt động khác
với điều kiện cắt tỉa danh nghĩa của nhà máy và đặc biệt khi các giá trị điện áp V DD / V DDA , nhiệt độ, V REF + thay đổi và có thể được thực hiện tại bất kỳ thời điểm nào trong quá trình ứng dụng bằng phần mềm.
STM32 HAL cung cấp một chức năng trong các API DAC dành riêng để bắt đầu quá trình hiệu chuẩn và như đã nói trước đây, đây là bước được khuyến nghị sau khi khởi tạo phần cứng DAC khi khởi động hệ thống trong trường hợp điều kiện hoạt động của bạn khác với cài đặt gốc. Nếu không, bạn có thể sử dụng cài đặt hiệu chuẩn ban đầu.
- Độ phân giải DAC STM32:
STM32 DAC có độ phân giải 12-Bit, có thể được định cấu hình thành 8-bit. Tùy thuộc vào ứng dụng của bạn, bạn có thể chọn giữa hai tùy chọn và rõ ràng là độ phân giải 12-Bit là rất tốt cho các ứng dụng âm thanh.
- Điện áp tham chiếu DAC:
Điện áp tham chiếu DAC có thể được định cấu hình từ chân cắm bên ngoài hoặc được cung cấp bên trong bằng cách sử dụng mô-đun VREFBUF bên trong. Điện áp tham chiếu bạn sẽ chọn cho hoạt động DAC sẽ xác định điện áp tối đa cho phép cũng như độ phân giải điện áp đầu ra.
- Công thức DAC STM32 Điện áp đầu ra DAC:
Trong đó Điện áp Tham chiếu = (V REF +) - (V REF -) DAC & DMA
Mỗi kênh DAC có một khả năng DMA. Hai kênh DMA được sử dụng để phục vụ các yêu cầu DMA kênh DAC. Khi bộ kích hoạt bên ngoài (nhưng không phải bộ kích hoạt phần mềm) xảy ra trong khi đặt bit DMAENx, giá trị của thanh ghi DAC_DHRx được chuyển vào thanh ghi DAC_DORx khi quá trình chuyển hoàn tất và một yêu cầu DMA được tạo.
Trong chế độ kép, nếu cả hai bit DMAENx được đặt, hai yêu cầu DMA sẽ được tạo. Nếu chỉ cần một yêu cầu DMA, 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.
DAC DMA Underrun
Yêu cầu DAC DMA không được xếp hàng đợi để nếu kích hoạt bên ngoài thứ hai đến trước khi nhận được thông báo cho trình kích hoạt bên ngoài đầu tiên (yêu cầu đầu tiên), thì không có yêu cầu mới nào được đưa ra và cờ DMA channelx chạy ngầm DMAUDRx trong thanh ghi DAC_SR được đặt, báo cáo tình trạng lỗi. Kênh DACx tiếp tục chuyển đổi dữ liệu cũ.
Phần mềm sẽ xóa cờ DMAUDRx bằng cách viết 1, xóa bit DMAEN của luồng DMA đã sử dụng và khởi tạo lại cả DMA và DAC channelx để khởi động lại quá trình truyền một cách chính xác. Phần mềm nên sửa đổi tần số chuyển đổi kích hoạt DAC hoặc giảm nhẹ khối lượng công việc DMA để tránh DMA mới hoạt động dưới mức. Cuối cùng, quá trình chuyển đổi DAC có thể được tiếp tục bằng cách kích hoạt cả chuyển đổi dữ liệu DMA và kích hoạt chuyển đổi.