BOARD OPENCMX STM3210D

Một phần của tài liệu Ứng dụng công nghệ RFID xây dựng hệ thống quản lý nhân sự (Trang 58)

1. READER VÀ TAG RFID

2.2.1BOARD OPENCMX STM3210D

Bộ vi xử lý ARM Cortex-M3 là thế hệ mới nhất của bộ xử lý ARM cho các hệ thống nhúng. Nó được phát triển để cung cấp một nền tảng chi phí thấp, đáp ứng yêu cầu thực thi của MCU với việc giảm số bóng bán dẫn trong lõi ARM Cortex dẫn tới tiêu thụ năng lượng thấp và giảm giá thành vi xử lí, đồng thời cung cấp hiệu năng tính toán cao và một hệ thống tiên tiến để đáp ứng ngắt. Bộ vi xử lý ARM Cortex-M3 32-bit RISC đạt hiệu suất cao hơn so với ARM7TDMI-S.Dòng vi xử lý hiệu suất cao STM32F103 có một lõi ARM nhúng và do đó nó tương thích với tất cả các công cụ và phần mềm cho ARM hiện đang có trên thị trường. Nó là sự kết hợp của ARM Cortex-M3 CPU hiệu suất cao với rất nhiều thiết bị ngoại vi mở rộng và các I/O cải tiến.

OPENCMX-STM3210D là board mạch phát triển với chi phí thấp cho vi điều khiển STM32F103RCT6 dựa trên lõi ARM Cortex-M3 của STMicroelectronis. Board OPENCMX mang đến giải pháp hoàn hảo cho sự phát triển ngoại vi USB. Tất cả các cổng vi điều khiển có sẵn trên kết nối mở rộng.

Page 46

Một vài ứng dụng của board như : USB Mass Storage device, Audio class device, HID mouse device, CDC Vitural com port device , CAN,……..

Hình III. 10.Hình ảnh thực thế board CMX-STM3210D 2.2.1.2 Đặc điểm chính

 MCU: STM32F103RCT6 ARM 32 bit CORTEX M3™ có 256K Bytes Program Flash, 48K Bytes RAM.

o 1x USB Device 2.0,1x CAN, 2x I2C, 2x I2C, 3x SPI (18 Mbit/s).

o 3x ADC 12 bit, 2x DAC 12 bit, 5x UART, 8x TIMERS, 12x DMA, 2x WDT (Independent và Window).

o 1x SysTick Timer (24 bit downcounter), 1x RTC, tần số hoạt động tối đa 72Mhz.

o Điện áp hoạt động 2.0-5,6V.

o Cổng debug có JTAG, SWD (Serial wire debug) và Cortex-M3 ETM (Embedded Trace Macrocell).

 ADC(đọc từ biến trở, cảm biến nhiệt độ, ánh sáng, ghi âm qua microphone...

 DAC(Audio: chơi nhạc file.wav)

 GPIO (Led, Button...)

 Nút Reset

 I2C (giao tiếp với cảm biến nhiệt độ STLM75M2F...)

 Buzze (dùng PWM để phát nhạc...)

 USB (2.0 full speed)

 RTC (lập lịch điện tử...)

 LCD (kí tự 16x2)

Page 47

 CAN (2.0)

 Power (lấy từ nguồn Adapter 7.5VDC hoặc USB)

 JTAG chuẩn 20 chân, hoàn toàn tương thích với WIGGLER ARM JTAG, ULINK, và JLINK ARM JTAG.

 Đặc biệt hỗ trợ chơi nhạc, ghi âm thông qua jack cắm audio, microphone.

 Kích thước : 131.52 x 103.51mm (5.172 x 4.073").

2.2.1.3 Sơ đồ khối của board OPENCMX

Board OPENCMX-STM3210D được thiết kế dựa trên STM32F103RCT6 với 64 chân dạng đóng gói LQFP. Hình sau mô tả sơ đồ khối kết nối các vi điều khiển với các thiết bị ngoại vi bên ngoài.(Sơ đồ nguyên lý chi tiết của board sẽ được đính kèm trong phần phụ lục).

Hình III. 11.Sơ đồ khối board CMX-STM3210D

 Nguồn cung cấp cho mạch:

Board OPENCMX- STM3210D được cấp nguồn theo 2 cách:

 Sử dụng nguồn thông qua cổng usb.

 Hoặc qua adapter ngoài.

Page 48

Hình III. 12.Cách cung cấp nguồn cho board bằng Jumper 25 2.2.1.4Một số điều cần lưu ý trong quá trình lập trình.

Vì đặc thù của chương trình chỉ sử dụng một phần nhỏ trong rất nhiều các ứng dụng của board OPENCMX chủ yếu là USART1, USART2, lập trình Timer, ngắt và thứ tự của ngắt. Cách thiết lập và cài đăt như sau: trình bày đôi chút về cách thiết lập và cài đặt các phần trên.

Bộ thư viện chuẩn CMSIS.

CMSIS-Cortex Microcontroller Software Interface Standard là chuẩn được đặt ra bởi các nhà sản xuất phần cứng và phần mềm nhằm tạo nên một chuẩn phần mềm được chấp thuận rộng rãi trong công nghiệp.

Dễ dàng sử dụng và dễ dàng học, cung cấp các chuẩn giao tiếp cho các thiết bị ngoài vi, hê điều hành thời gian thực và phần mềm hỗ trợ là mục tiêu chính của CMSIS. Ngoài ra CMSIS cũng tương tích với các trình biên dịch phổ biến hiện nay như GCC, IAR, Keil…

CMSIS bao gồm những thành phần chính:

 Peripheral Register and Interrupt Definitions: một sự liên kết, giao diện ổn định cho thanh ghi ( registers) và ngắt ( interrupts)

 Core Peripheral Functions: những hàm truy cập chuẩn cho từng loại ứng dụng tính toán cụ thể của core cortex M3 và các thiết bị ngoại vi

 DSP Library: những thuật toán tối ưu cho việc xử lý số tín hiệu.

 System View Description(SVD): tập tin XML mô tả những thiết bị ngoại vi và việc sử lý ngắt.

Page 49

Hình III. 13.Sơ đồ các thành phần của thư viện CMSIS

Bộ điều khiển vector ngắt lồng nhau (NVIC)

NVIC (Nested Vectored Interrupt Controller) là thành phần tích hợp của bộ vi xử lý Cortex-M3 có khả năng xử lý ngắt rất linh hoạt và nhanh chóng. Trong cài đặt chuẩn, nó cung cấp một NMI (Non-Maskable Interrupt) và 32 ngắt vật lý đa dụng với 8 mức ưu tiên pre- emption. Nó có thể được cấu hình từ 1 đến 240 ngắt vật lý với tối đa 256 mức độ ưu tiên.

Bộ vi xử lý Cortex-M3 sử dụng một bảng vector có thể tái định vị được, dùng để chứa địa chỉ của hàm xử lý ngắt. Khi nhận một ngắt, bộ xử lý sẽ lấy địa chỉ từ bảng vector thông qua bus chương trình. Bảng vector ngắt được đặt ở địa chỉ 0 khi reset, nhưng có thể được di chyển đến vị trí khác bằng cách lập trình một thanh ghi điều khiển.

NVIC hỗ trợ ngắt lồng nhau, cho phép một ngắt được xử lý trước một ngắt khác dựa trên mức độ ưu tiên. Nó cũng hỗ trợ cấu hình mức ưu tiên động cho các ngắt. Độ ưu tiên có thể được thay đổi bằng phần mềm trong thời gian chạy (run time). Các ngắt đang được xử lý đều bị khóa cho đến khi hàm xử lý ngắt hoàn thành, do đó, độ ưu tiên của ngắt có thể thay đổi mà không cần lo đến chuyện trùng lặp.

Trong trường hợp các ngắt nối đuôi nhau, các hệ thống cũ sẽ lặp lại hai lần việc lưu trạng thái hoàn hành và khôi phục, dẫn đến độ trễ cao. Bộ vi xử lý Cortex-M3 đơn giản hóa việc chuyển đổi giữa các ngắt đang hoạt động và đang chờ bằng cách cài đặt công nghệ tail- chaining trong phần cứng NVIC. Tail-chaining đạt độ trễ thấp hơn nhiều bằng cách thay thế chuỗi các thao tác pop và push vốn mất hơn 30 chu kỳ xung nhịp bằng một thao tác nạp lệnh đơn giản chỉ mất 6 chu kỳ. Trạng thái bộ vi xử lý được tự động lưu khi ngắt bắt đầu được xử

Page 50

lý và phục hồi ngay khi kết thúc, ít chu kỳ hơn so với việc thực thi bằng phần mềm, nâng cao hiệu suất đáng kể ở hệ thống hoạt động dưới 100MHz.

Hình III. 14.Cách thức thực hiên tail-chaining khi có nhiều ngắt xảy ra đồng thời

Việc thiết lập NVIC trên STM32 đã được đơn giản hóa rất nhiều với bộ thư viện chuẩn CMIS.Ta sẽ qui định thứ tự ưu tiên của các loại ngắt cụ thể dựa vào việc thiết lập các giá trị

preemption priority và subpriority.

Hình III. 15.Cách thiết lập NVIC

Page 51

Bảng III. 2.Cách thiết lập các giá trị pre-emption và subpriority theo Priority Group

Timer

Đặc điểm chính :

 Bộ đếm auto-reload 16-bit up,dow,up/dow.

 Giá trị prescaler 16-bit có thể được thay đổi bằng phần mềm để chia xung clock cho counter.

 Có 4 kênh không phụ thuộc được thiết kế cho: o Ghi nhận giá trị đầu vào.

o So sánh giá trị đầu ra o Tạo xung PWM  Tạo ngắt / DMA theo sự kiện.

Việc thiết lập giá trị cho timer cũng được thực hiện khá dễ dàng với thư viện chuẩn CMSIS

Bảng III. 3.Thiết lập giá trị cho Timer 2-100ms

Có 3 giá trị cần quan tâm khi thiết lập cho Timer. Đó chính là TIM-Period, TIM_Prescaler, TIM_ClockDivision . Ngoài ra cũng phải config để biết chính xác giá trị xung clock cung cấp cho Timer.

Page 52

Hình III. 16.Sơ đồ cây CLOCK cho STM32RD

Ở đây các giá trị prescaler ( AHB Prescaler , APB1 Prescaler, APB2 Prescaler) sẽ được dùng để chia xung clock chính hệ thống ( SYSCLK=722Mhz) thành các clock cho AHB, APB1(low-speed), APB2(high-speed) nhằm phù hợp với từng loại ứng dụng cụ thể.Việc thiết lập trên sẽ có thể được lập trình dựa vào các hàm trong thư viện CMSIS.

TIM2,3,4,5,6,7,12,13,14 thuộc APB1(Low Speed) được cung cấp clock từ PCLK1 nên để thiết lập được xung clock cho Tim2 ta phải thiết lập PCLK1. Cụ thể ở đây dòng lệnh:

Hình III. 17.Thiết lập clock cho APB1 và TIM2

PCLK1=HCLK/16=72MHz/16=4,5MHz ( AHB1 Prescaler =16#1) Nên TIM2 CLK = PCLK1x2 = 9MHz

Vậy đã thiết lập xong TIM2 CLK. Xác đinh các giá trị TIM_Period, TIM_Prescaler, TIM_ClockDivision bởi công thức sau:

Bảng III. 4.Công thức tính thời gian đếm TIMER

Ví dụ trên :

Page 53

Tính năng chính :

 Chế độ truyền full-duplex, không đồng bộ.

 Truyền theo chuẩn NRZ ( Mark/Space).

 Có thể tạo ra tốc độ baud một cách chi tiết chính xác lên đến 4,5Mbps

 Có thể lập trình kiểu kí tự truyền ( 8 hay 9bits, 1 hay 2 stop bit).

 Hỗ trợ clock truyền cho việc truyền đồng bộ.

 Tương tích với các loại SmartCard

 Truyền thông halp-duplex trên 1 dây.

 Thiết lập bit cho việc truyền và nhận một cách độc lập.

 Các cờ ( flag ) hỗ trợ việc truyền nhận dữ liệu: o Cờ báo buffer nhận đầy.

o Cờ báo buffer phát rỗng.

o Cờ báo kết thúc việc truyền dữ liệu.

 Kiểm tra Parity

 10 nguồn ngắt có thể được tạo ra trong quá trình truyền nhận dữ liệu

 Hỗ trợ truyền thông multiprocessor

Thiết lập USART:

Một kết nối với một thiết bị khác cho việc truyền nhận dữ liệu phải có ít nhất 3 chân : Rx(Receive Data Input), Tx(Transmit Data Output), GND. Đối với từng USART khác nhau thì các chân này được quy định khác nhau.

USART 1 USART 2

Rx GPIOA-pin10 GIOA-pin3

Tx GPIOA-pin9 GPIOA-pin2

Bảng III. 5.Quy định Pin cho các USART

Việc thiết lập các thông số đối với USART như tốc độ baud, kiểu dữ liệu truyền, chân Tx, Rx, ….sẽ được thực hiện tương đối đơn giản trong KeilC với bộ thư viện chuẩn CMSIS. Cụ thể như sau:

Page 54

Bảng III. 6.Cách thiết lập USART 2.2.2 BOARD STM32F103ZET6

Với mục đích hiển thị,chúng em sử dụng thêm Board STM32F103ZET6 .Về cơ bản,lập trình cho Board này tương tự Board OPENCMX STM3210D,chỉ thay đổi một vài thông số nho nhỏ.Sau đây là các thông số và tính năng cơ bản của Board STM32F103ZET6 :

Page 55

o STM32 là sự phát triển board cơ bản dựa trên STMicroelectronics (ST) đã giới thiệu loạt cao nhất của ARM CORTEX M3 như các thành phần cốt lỗi STM32F103ZET6 o Màn hình LCD 3,2" TFT-module

o ARM Cortex-M3, 512KB FLASH, 72MHz, 3,2" TFT-module

o CPU: STM32F103ZET6; (LQFP144-pin, tích hợp trên chip nhớ 512K., 64KRAM, 12Bit A / D, D / A; PWM, CAN, USB, SDIO, FSMC và các nguồn tài nguyên khác. o Ngoài ra board 512K SRAM, 2M NOR FLASH (trên board hỗ trợ lớn nhất cho

SRAM 1024k, 16 triệu cho NOR FLASH)

o Bề mặt board có 256M NAND FLASH mở rộng để đáp ứng màu sắc phong phú của việc lưu trữ hình ảnh, hình thức lưu trữ dữ liệu, các ứng dụng quản lý tài liệu

o Với mô-đun màu 2,8-inch TFT màn hình thật sự cảm ứng hoặc màu sắc trung thực 3,2 inch màn hình TFT cảm ứng mô-đun (người sử dụng lựa chọn), FSMC kiểm soát, mô- đun cấu hình màu cảm ứng ADS7843 (hoặc RSM1843 thay vào đó) điều khiển, hỗ trợ thẻ SD (SPI chế độ) có thể được sử dụng để lưu trữ hình ảnh, hỗ trợ của AT45DBxxx của một FLASH dữ liệu (có thể được sử dụng để lưu trữ).

o Giao tiếp RS232,RS485,CAN,lập trình

SDIO,EEPROM,FLASH,SD,ADC,PWA,DAC,I/O

3. MẠNG RS485

3.1Giới thiệu chuẩn RS485

Các nhà sản xuất máy tính đã chuẩn hoá giao tiếp cho cổng nối tiếp(cổng COM) là chuẩn RS-232. Vào năm 1962 Hiệp hội các nhà Công Nghiệp Điện Tử (EIA) đã cho ban hành chuẩn RS-232 áp dụng cho cổng nối tiếp. Các chữ RS được viết tắt từ Recommended Standard (Tiêu chuẩn được đề nghị). Ghép nối qua cổng nối tiếp theo chuẩn RS-232 là một trong những kỹ thuật được sử dụng rộng rãi nhất để ghép nối các thiết bị ngoại vi với máy tính giữa các máy tính với nhau. Qua cổng nối tiếp có ghép nối chuột, modem, bộ biến đổi AD, các thiết bị đo lường, ghép hai máy tính…Số lượng và chủng loại các thiết bị ngoại vi ghép nối qua cổng nối tiếp đứng hàng đầu trong số các khả năng ghép nối với máy tính.

Page 56

Tuy nhiên chuẩn RS-232 chỉ cho phép ghép nối một-một, do đó không thể áp dụng cho mạng cần thiết kế. Việc chọn một chuẩn truyền thông khác là cần thiết, và sử dụng Chuẩn RS- 485 là chọn lựa hợp lí.

Mạng sử dụng chuẩn RS-485 rất đa dạng: ta có thể ghép nối các PC với nhau, hoặc giữa PC với các Vi xử lí, hoặc bất kì thiết bi truyền thông nối tiếp bất đồng bộ nào. Khi so sánh với Ethernet và những giao diện truyền thông theo những chuẩn khác thì giao diện RS-485 đơn giản và giá thành thấp hơn nhiều.

Đối với một mạng Multi-network thực sự gồm nhiều mạch phát và nhận cùng nối vào một đường dây bus chung, mỗi node đều co thể phát và nhận data thì RS485 đáp ứng cho yêu cầu này. Chuẩn RS-485 cho phép 32 mạch truyền và nhận cùng nối vào đường dây bus (với bộ lặp Repeater tự động và các bộ truyền nhận trở kháng cao,giới hạnh này có thể mở rộng lên đến 256 node mạng). Bên cạnh đó RS-485 còn có thể chịu được các xung đột data và các điều kiện lỗi trên đường truyền.

Một số ưu điểm của RS-485:

 Giá thành thấp:

Các bộ điều khiển Driver và bộ nhận Receiver không đắt và chỉ yêu cầu cung cấp nguồn đơn +5V để tạo ra mức điện áp vi sai tối thiểu 1.5V ở ngõ ra vi sai.

 Khả năng nối mạng :

RS485 là một giao diện đa điểm, thay vì giới hạn ở hai đơn vị, RS-485 là giao diện có thể cung cấp cho việc kết nối có nhiều bộ truyền và nhận. Với bộ nhận có trở kháng cao kết hợp với bộ repeater, RS-485 có thể cho kết nối lên đến 256 node.

 Khả năng kết nối:

RS-485 có thể truyền xa 1200m, tốc độ lên đến 10Mbps.Nhưng 2 thông số này không xảy ra cùng lúc. Khi tốc độ truyền tăng thì tốc độ baud giảm. Ví dụ: khi tốc độ là 90Kbps thì khoảng cách là 1200m, 1Mbps thì khoảng cách là 120m, còn tốc độ 10Mbps thì khoảng cách lá 15m.

Sở dĩ, RS-485 có thể truyền trên một khoảng cách lớn là do chúng sử dụng đường truyền cân bằng. Mỗi một tín hiệu sẽ truyền trên một cặp dây, với mức điện áp trên một dây là điện áp bù (trái dâú ) với điện áp trên dây kia. Receiver sẽ đáp ứng phần hiệu giữa các mức điện áp, được minh hoạ ở hình dưới:

Page 57

Hình III. 19.Đường truyền cân bằng.

Hình III. 20.Đường truyền không cân bằng.

Một thuật ngữ khác của đường truyền tín hiệu dạng này là vi sai tín hiệu.

Khi thực hiện trao đổi thông tin ở tốc độ cao, hoặc qua một khoảng cách lớn trong môi trường thực, phương pháp đơn cực (single-ended) thường không thích hợp. Việc truyền dẫn dữ liệu vi sai (hay tín hiệu vi sai cân bằng) cho kết quả tốt hơn trong phần lớn trường hợp. Tín hiệu vi sai có thể loại bỏ ảnh hưởng do sự thay đổi khi nối đất và giảm nhiễu có thể xuất hiện như điện áp chung trên mạng. Khi đường dây qua môi trường nhiễu, nhiễu tác động lên hai dây là như nhau. Vì Receiver nhận tín hiệu bằng cách lấy chênh lệch áp giữa hai đường dây (vi sai), nên nhiễu được tự động triệt tiêu. Ngược lại, RS-232 dùng dây bất cân bằng hay đơn cực, bộ nhận đáp ứng theo sự khác biệt mức điện áp tín hiệu và đường dây đất dùng chung (một giao diện bất cân bằng có thể có nhiều dây đất nhưng tất cả đều được nối lại với nhau). Do đó tín hiệu nhận được ở Receiver là tín hiệu từ bộ Transmitter cộng với nhiễu và sụt áp trên đường dây, điều này có thể làm cho dữ liệu mà Receiver đọc được bị sai lệch.

Một thuận lợi khác trên đường dây cân bằng là chúng tránh được (trong một giới hạnh nào đó) sự chênh lệch điện thế trên dây đất giữa bộ truyền và bộ nhận. Trong một liên kết dài, điện thế đất giữa bộ truyền và bộ nhận có thể chênh lệch nhau. Đối vối đường dây bất cân bằng, điều này có thể làm bộ nhận đọc sai tín hiệu vào, nhưng đối với đường dây cân bằng, sự chênh lệch này không ảnh hưởng gì bởi bộ nhận chỉ phân biệt mức logic trên đầu vào dựa vào

Một phần của tài liệu Ứng dụng công nghệ RFID xây dựng hệ thống quản lý nhân sự (Trang 58)