... qua cổng USB • Lập trình giao tiếp ADC Lập trình nhúng ARM-Linux 81 Nội dung học 3. 1 Giới thiệu chuẩn RS 232 3. 2 Lập trình giao tiếp chuẩn RS 232 3. 3 Giới thiệu chuẩn USB 3. 4 Lập trình giao tiếp... dùng nhấn c|c nút Lập trình nhúng ARM-Linux 118 QT Joystick Demo Lập trình nhúng ARM-Linux 119 3. 5 Lập trình giao tiếp ADC Giới thiệu ADC Minh họa lập trình ADC Lập trình nhúng ARM-Linux 120... điện áp) 88 Lập trình nhúng ARM-Linux Chuẩn RS 232 Kịch truyền Ghép nối không bắt tay hai thiết bị (Khác mức điện áp) 89 Lập trình nhúng ARM-Linux 3. 2 Lập trình giao tiếp chuẩn RS 232
Chương 3 Lập trình vào ra nâng cao Lập trình nhúng ARM-Linux 80 Mục tiêu chương 3 Sau khi kết thúc chương n{y, sinh viên có thể • Nắm được chuẩn RS232 • Lập trình giao tiếp chuẩn RS232 trên kit nhúng Micro2440 • Nắm được chuẩn giao tiếp USB • Lập trình ghép nối USB Joystick qua cổng USB • Lập trình giao tiếp ADC Lập trình nhúng ARM-Linux 81 Nội dung bài học 3.1. Giới thiệu chuẩn RS232 3.2. Lập trình giao tiếp chuẩn RS232 3.3. Giới thiệu chuẩn USB 3.4. Lập trình giao tiếp USB Joystick 3.5. Lập trình giao tiếp ADC Lập trình nhúng ARM-Linux 82 3.1. Giới thiệu chuẩn RS232 Mức điện |p đường truyền Chuẩn đầu nối trên m|y tính PC Khuôn dạng khung truyền Tốc độ truyền Kịch bản truyền Lập trình nhúng ARM-Linux 83 Chuẩn RS232 Mức điện |p đường truyền (Chuẩn RS-232C) 84 Lập trình nhúng ARM-Linux Chuẩn RS232 Chuẩn đấu nối trên PC UART UART UART (Universal Asynchronous receiver/transmitter) 85 Lập trình nhúng ARM-Linux Chuẩn RS232 Chuẩn đầu nối trên PC • Chân 1 (DCD-Data Carrier Detect): ph|t hiện tín hiệu mang dữ liệu • Chân 2 (RxD-Receive Data): nhận dữ liệu • Chân 3 (TxD-Transmit Data): truyền dữ liệu • Chân 4 (DTR-Data Terminal Ready): đầu cuối dữ liệu sẵn s{ng • Ch}n 5 (Signal Ground): đất của tín hiệu • Chân 6 (DSR-Data Set Ready): dữ liệu sẵn s{ng • Chân 7 (RTS-Request To Send): yêu cầu gửi • Chân 8 (CTS-Clear To Send): Xóa để gửi • Chân 9 (RI-Ring Indicate): báo chuông 86 Lập trình nhúng ARM-Linux Chuẩn RS232 Khuôn dạng khung truyền • PC truyền nhận dữ liệu qua cổng nối tiếp RS-232 thực hiện theo kiểu không đồng bộ (Asynchronous) • Khung truyền gồm 4 th{nh phần 1 Start bit (Mức logic 0): bắt đầu một gói tin, đồng bộ xung nhịp clock giữa DTE v{ DCE Data (5,6,7,8 bit): dữ liệu cần truyền 1 parity bit (chẵn (even), lẻ (odd), mark, space): bit cho phép kiểm tra lỗi Stop bit (1 hoặc 2 bit): kết thúc một gói tin 87 Lập trình nhúng ARM-Linux Chuẩn RS232 Kịch bản truyền • Không có bắt tay (none-handshaking): m|y thu có khả năng đọc c|c ký tự thu trước khi m|y ph|t truyền ký tự tiếp theo Kết nối không cần bắt tay giữa hai thiết bị (cùng mức điện áp) 88 Lập trình nhúng ARM-Linux Chuẩn RS232 Kịch bản truyền Ghép nối không bắt tay giữa hai thiết bị (Khác nhau về mức điện áp) 89 Lập trình nhúng ARM-Linux 3.2. Lập trình giao tiếp chuẩn RS232 Khởi tạo: Khai b|o thư viện Bước 1: Mở cổng Bước 2: Thiết lập tham số Bước 3: Đọc, ghi cổng Bước 4: Đóng cổng Lập trình nhúng ARM-Linux 90 Khai báo thư viện #include #include #include #include // UNIX standard function #include // File control definitions #include // Error number definitions #include // POSIX terminal control #include // time calls Lập trình nhúng ARM-Linux 91 Bước 1: Mở cổng Sử dụng lệnh mở file int fd = open ("/dev/ttySAC0", O_RDWR); Fd >0 nếu mở file th{nh công Fd[...]... lẻ tẻ cũng không g}y ảnh hưởng đ|ng kể Lập trình nhúng ARM-Linux 108 3. 4 Lập trình giao tiếp USB Joystick Lập trình nhúng ARM-Linux 109 Cấu trúc JOYINFO trên Windows Windows định nghĩa cấu trúc JOYINFO để lưu c|c thông tin về tình trạng c|c nút bấm trên Joystick Nút trái, phải Nút lên, xuống Các nút chức năng: 1, 2, 3, 4, L1, L2, R1, R2, Select, Start Lập trình nhúng ARM-Linux 110 Cấu trúc JOYINFO... th{nh công) Lập trình nhúng ARM-Linux 95 Demo Lập trình nhúng ARM-Linux 96 3. 3 Giới thiệu chuẩn USB Năm 1995: USB 1.0 • Tốc độ Low-Speed: 1.5 Mbps • Tốc độ tối đa (Full-Speed): 12 Mbps Năm 1998: USB 1.1 (Sửa lỗi của USB 1.0) • Tốc độ tối đa (Full-Speed): 12 Mbps Năm 2001: USB 2.0 • Tốc độ tối đa (High-Speed): 480 Mbps Năm 2008: USB 3. 0 • Tốc độ tối đa (Super-Speed): 4.8 Gbps Lập trình nhúng ARM-Linux... include/linux/joystick.h Lập trình nhúng ARM-Linux 112 Cấu trúc js_event Nội dung c|c trường dữ liệu • Time: nh~n thời gian ph|t sinh sự kiện • Value: gi| trị, phụ thuộc v{o nút chức năng hay nút chỉnh hướng Nút chức năng: 0/1 Nút chỉnh hướng: -32 768 -> 32 767 • Type: loại sự kiện Khởi tạo thiết bị: 0x80 Nút chỉnh hướng: 0x02 Nút chức năng: 0x01 • Number: x|c định nút được nhấn Lập trình nhúng ARM-Linux 1 13 Lập trình. .. truyền nhận dữ liệu chung -> Hệ điều h{nh có thể cung cấp driver chung cho c|c nhóm, c|c nh{ sản xuất thiết bị không cần viết driver riêng C|c nhóm thiết bị đ~ được định nghĩa • • • • • • • Audio Communication devices Human interface (HID) IrDA Bridge Mass Storage Cameras and scanners Video Lập trình nhúng ARM-Linux 105 Quá trình trao đổi dữ liệu C|c thiết bị USB có thể trao đổi dữ liệu với Host theo.. .3. 2 Lập trình giao tiếp chuẩn RS 232 Khởi tạo: Khai b|o thư viện Bước 1: Mở cổng Bước 2: Thiết lập tham số Bước 3: Đọc, ghi cổng Bước 4: Đóng cổng Lập trình nhúng ARM-Linux 90 Khai báo thư viện #include #include #include #include... vi sai Lập trình nhúng ARM-Linux 98 Mô hình bus USB Lập trình nhúng ARM-Linux 99 Vai trò của các thành phần Vai trò của USB host: • Trao đổi dữ liệu với c|c thiết bị ngoại vi • Điều khiển USB bus: Quản lý được c|c thiết bị kết nối v{o đường bus v{ khả năng của mỗi thiết bị đó: sử dụng cơ chế điểm danh (Enumeration) Ph}n xử, quản lý luồng dữ liệu trên bus, đảm bảo c|c thiết bị đều có cơ hội trao đổi... chỉ đọc ở chế độ NONBLOCK Lập trình nhúng ARM-Linux 114 Lập trình kết nối joystick Đọc dữ liệu từ thiết bị (khi có phát sinh sự kiện) bytes = read(joystick_fd, jse, sizeof(*jse)); joystick_fd: con trỏ file có được khi mở file jse: biến cấu trúc js_event bytes: Tổng số file đọc được, nếu số n{y bằng kích thước của cấu trúc js_event thì qu| trình đọc th{nh công Lập trình nhúng ARM-Linux 115 ... kiểu ho{n to{n kh|c nhau, cụ thể: • Truyền điều khiển (control transfer) • Truyền ngắt (interrupt transfer) • Truyền theo khối (bulk transfer) • Truyền đẳng thời (isochronous transfer) Lập trình nhúng ARM-Linux 106 Các kiểu truyền Truyền điều khiển: để điều khiển phần cứng, c|c yêu cầu điều khiển được truyền Chúng l{m việc với mức ưu tiên cao v{ với khả năng kiểm so|t lỗi tự động Tốc độ truyền lớn vì... CS8; tcsetattr(fd, TCSANOW, &port_settings); Lập trình nhúng ARM-Linux 93 Bước 3: Đọc, ghi cổng Đọc cổng: sử dụng lệnh đọc file n=read(fd,&result,sizeof(result)); N: số ký tự đọc được Result: chứa kết quả Ghi cổng: sử dụng lệnh ghi file n=write(fd,“Hello World\r",12); N:số ký tự đ~ ghi Fd: file id (có được từ thao t|c mở file th{nh công) Lập trình nhúng ARM-Linux 94 Bước 4: Đóng cổng Đóng... Pipes Pipes: kết nối Endpoint của thiết bị tới Host • Phải thiết lập pipe trước khi muốn trao đổi dữ liệu • Host thiết lập pipe trong qu| trình điểm danh (Enumeration) • C|c Pipe sẽ được hủy khi thiết bị ngắt kết nối khỏi bus • Tất cả c|c thiết bị đều có một đường ống điều khiển (control pipe) mặc định sử dụng Endpoint 0 Lập trình nhúng ARM-Linux 104 Device Classes C|c thiết bị ngoại vi cùng chức