Trong bài này chúng ta cùng tìm hiểu kit Nuvoton N76E885, một dòng vi điều khiển 8051 rẻ và hot hiện nay, được rất nhiều người sử dụng. Đây cũng là KIT chúng ta học xuyên xuốt Serie này.
Bài 1 Trong Serie Học Nuvoton từ A tới Z
Tổng quan dòng 8051 của Nuvoton.
Dòng chip 8051 của hãng Nuvoton dựa trên lõi 8051 (kiến trúc Von Neumann) và được tích hợp thêm một số ngoại vi cơ bản mà các vi điều khiển ngày nay đều có như UART, ADC, PWM, SPI, I2C…
Một số chip thuộc dòng 8051 của Nuvoton có thể kể tên như: N76E003, MS51, N76E885, ML51LD1AE, W79E4051, W78E052, W78E052… với mức độ tích hợp ngoại vi phần cứng trải dài từ ít đến nhiều thích hợp cho các ứng dụng từ đơn giản đến phức tạp.
Trong series lập trình 8051 Nuvoton này, mình sẽ sử dụng chip N76E885.
Kiến trúc của Nuvoton N76E885
Bộ nhớ
Về ROM của N76E885, có thể chia thành 2 phần là LDROM (thường dùng lưu Bootloader) và APROM (chứa các chương trình ứng dụng).
- LDROM được cắt ra một phần từ 18 KByte của APROM. Việc này có thể được cấu hình thông qua mạch nạp với 4 tùy chọn dung lượng cho LDROM: 0KB, 1KB, 2KB, 3KB và 4KB.
- APROM của N76E885 được trang bị tối đa 18 KByte (nếu không dùng LDROM), một con số tương đối lớn nếu so với những dòng chip 8-bit của các hãng khác. Không những vậy, bộ nhớ này có thể được lập trình bằng phần mềm thay thế cho ngoại vi EEPROM thường có trên các dòng vi điều khiển 8-bit. Việc vi điều khiển có khả năng tự ghi lên flash sẽ cực kì hữu tích với các ứng dụng có tính năng cập nhật OTA.
Về RAM, ngoài 256 byte RAM nội như MCS-51, N76E885 còn được trang bị thêm 256 byte RAM ngoại.
Phương thức nạp, Nuvoton N76E885 hỗ trợ các phương thức nạp sau:
- ISP ( In-System Programming )
- ICP ( In-Circuit Programming )
- IAP ( In-Application Programming )
Clock
N76E885 có thể nhận clock từ 5 nguồn bao gồm 2 nguồn clock dao động nội và 3 nguồn clock bên ngoài.
- Vi điều khiển này được trang bị sẵn 2 nguồn tạo dao động RC thường trực: 22.118 MHz và 10 kHz. Điều này cho phép ta tiết kiệm được không gian PCB trong các thiết kế, đồng thời tiết kiệm GPIO khi không phải kết nối với nguồn clock ngoài.
- Về nguồn clock ngoài, N76E885 đã tích hợp sẵn 2 bộ cộng hưởng với thạch gắn ngoài: 1 bộ cho thạch anh 32.768 kHz và 1 bộ cho thạch anh từ 2 MHz đến 25 MHz, thạch anh ngoài sẽ kết nối với cặp chân Xin và Xout; ngoài ra, ta cũng có thể cấp một nguồn clock trực tiếp vào chân Xin nếu không muốn dùng thạch anh. Bởi vì kết nối nguồn clock ngoài thông qua cặp chân Xin và Xout, do đó ta chỉ có thể lựa chọn được 1 nguồn clock ngoài thông qua thiết lập phần cứng.
Như vậy trong một thời điểm, vi điều khiển luôn có tối đa 3 nguồn clock thường trực (2 trong và 1 ngoài). Ta có thể chọn 1 trong 3 nguồn này làm clock hệ thống (là clock cấp cho CPU, flash, các ngoại vi), việc chọn lựa này có thể tiến hành bằng phần mềm mà không làm gián đoạn chương trình. Thêm nữa, Self Wake-up Timer cần được cấp clock, ta có thể chọn nguồn clock từ thạch anh 32.768 kHz hoặc bộ dao động nội 10 kHz và tất nhiên cũng thông qua thiết lập phần mềm.
Ngoại vi
N76E885 sở hữu tối đa 26 GPIO (nếu không dùng clock ngoài và bỏ chức năng chân Reset).
N76E885 cũng sở hữu các ngoại vi mà dòng MCS-51 truyền thống có như Timer 0, Timer 1, Timer 2 có chức năng capture, UART 0, 2 pin ngắt ngoài.
Ngoài ra, vi điều khiển này còn được trang bị rất nhiều ngoại vi: ADC, PWM, Timer 3, UART 1, Self Wake-up Timer, Watchdog Timer, SPI, I2C, 8 kênh ngắt pin cho phép ngắt theo cạnh mặc mức logic.
Chúng ta sẽ cùng nhau nghiên cứu chi tiết từng ngoại vi ở các bài sau.
Công cụ nghiên cứu và thực hành
Phần cứng
Để có thể nghiên cứu về bất vi điều khiển nào, ta luôn cần một con vi điều khiển (hoặc một kit chứa vi điều khiển ấy) và một mạch nạp.
Trong xuyên suốt series này, mình sẽ dùng bộ kit 8051 Nutiny.
Bộ kit này bao gồm 2 phần: mạch nạp Nu-Link-Me (bên phải) và mạch ứng dụng (bên trái) sử dụng chip N76E885 mà mình đã nói ở phần trên.
Ngoài bộ kit này ra, các bạn có thể chọn một mạch nạp 8051 Nuvoton rời và một board đã hàn sẵn một chip 8051 Nuvoton nào đó miễn là mạch nạp của bạn hỗ trợ. Tuy nhiên, các tùy chọn này sẽ được thảo luận ở một bài viết khác. Nếu các bạn có hứng thú, mình sẽ dành thời gian cho ra một series khác cũng là lập trình 8051 Nuvoton, nhưng là với những công cụ khác phổ biến hơn dành cho những bạn không thể sở hữu một kit như thế này.
Phần mềm
Phần mềm nạp
Phần mềm nạp cần tương thích với mạch nạp. Do đó, mình sử dụng “NuMicro ICP Programming Tool” để nạp chip.
Các bạn sử dụng mạch nạp khác thì sử dụng phần mềm nạp tương ứng mạch nạp của bạn nhé!
IDE và compiler
Trong series này, mình sử dụng cặp bài trùng CodeBlocks và SDCC dành cho việc viết code và biên dịch.
Ngoài cặp đôi này, các bạn hoàn toàn có vài sự lựa chọn khác như Visual Studio Code và SDCC, Keil C, IAR 8051,… Chúng ta sẽ thảo luận về cách dùng các công cụ này nhưng tất nhiên là ở một bài viết khác.
Các công cụ nạp này sẽ được học trong bài tiếp theo của serie này.
Tại sao là CodeBlocks và SDCC?
Bản thân mình nhận thấy việc sử dụng các công cụ khác đã được hướng dẫn rất nhiều trên internet, riêng CodeBlocks và SDCC để lập trình 8051 nói chung và 8051 Nuvoton nói riêng thì rất ít được đề cập hoặc chia sẻ.
Ngoài ra, CodeBlocks và SDCC đều là các công chạy đa nền tảng và quan trọng hơn là nó miễn phí nên không cần phải crack như ai kia :v. Thế nên mình mong rằng series này sẽ cho bạn thêm một tùy chọn khi bắt đầu học lập trình 8051.
Kết
KIT Nuvoton N76E885 được sử dụng rất nhiều trong các mạch đơn giản, tối ưu chi phí, tiết kiệm năng lượng. Đây là một dòng vi điều khiển giá rẻ, đơn giản mà tính ứng dụng vẫn rất cao. Phù hợp cho những người muốn học sâu về vi điều khiển.
Nếu cảm thấy bài viết có ích hay đánh giá và chia sẻ cho bạn bè. Đừng quên tham gia nhóm Nghiện lập trình để cùng trao đổi và kết nối nhé!