− Lệnh bắt đầu kết nối TCP hay UDP
AT+CIPSTART=<mode>,[<IPaddress>,<domain name>],<port> Trong đó:
<mode> : tham số báo kiểu kết nối TCP hay UDP <IP address> : địa chỉ IP của người điều khiển từ xa <port> :
<domain name> : tên miền của người điểu khiển từ xa Nếu lệnh thực hiện đúng thì lệnh trả về : CONNECT OK Nếu lệnh thực hiện 2.3.4.6. Các lệnh khác − Lệnh nghỉ AT+CFUN
Ví dụ muốn tắt hết chức năng liên quan đến truyền nhận sóng RF và các chức năng liên quan đến sim thì gõ lệnh:
AT+CFUN=0 <cr> OK
− Lệnh chuyển từ chế độ nghỉ sang chế độ hoạt động bình thường AT+CFUN
Ví dụ sim đang ở chế độ nghỉ ta muốn chuyển sang chế độ hoạt động bình thường thi gõ lệnh:
AT+CFUN=1 <cr> OK
ATZ <cr> OK
− Lệnh tắt chế độ echo ATE0 <cr>
2.3.4.7. Các lệnh kiểm tra ban đầu
- Lấy thông tin cơ bản về điện thoại di động hay modem GSM/GPRS. Ví dụ như tên của nhà sản xuất (AT+CGMI), số model (AT+CGMM), số IMEI (International Mobile Equipment Identity) (AT+CGSN) và phiên bản phần mềm (AT+CGMR).
- Lấy các thông tin cơ bản về những người kí tên dưới đây. Thí dụ, MSISDN (AT+CNUM) và số IMS (International Mobile Subscriber Identity) (AT+CIMI).
- Lấy thông tin trạng thái hiện tại của điện thoại di động hay modem GSM/GPRS. Ví dụ như trạng thái hoạt động của điện thoại (AT+CPAS), trạng thái đăng kí mạng mobile (AT+CREG), chiều dài sóng radio (AT+CSQ), mức sạc bin và trạng thái sạc bin (AT+CBC).
- Đọc (AT+CPBR), viết (AT+CPBW) hay tìm kiếm (AT+CPBF) cá mục về danh bạ điện thoại (phonebook).
- Thực thi các nhiệm vụ liên quan tới an toàn, chẳng hạn như mở hay đóng các khóa chức năng (AT+CLCK), kiểm tra xem một chức năng được khóa hay chưa (AT+CLCK) và thay đổi password (AT+CPWD).
- Điều khiển hoạt động của các mã kết quả/các thông báo lỗi của các lệnh AT. Ví dụ, bạn có thể điều khiển cho phép hay không cho phép kích hoạt hiển thị thông báo lỗi (AT+CMEE) và các thông báo lỗi nên được hiển thị theo dạng số hay theo dạng dòng chữ (AT+CMEE=1 hay AT+CMEE=2).
- Thiết lập hay thay đổi cấu hình của điện thoại di dộng hay modem GSM/GPRS. Ví dụ, thay đổi mạng GSM (AT+COPS), loại dịch vụ của bộ truyền tin (AT+CBST), các thông số protocol liên kết với radio (AT+CRLP), địa chỉ trung tâm SMS (AT+CSCA) và khu vực lưu trữ các tin nhắn SMS (AT+CPMS).
CHƯƠNG 3
GIỚI THIỆU VỀ PSOC
3.1. GIỚI THIỆU TỔNG QUÁT VỀ PSOC
3.1.1. GIỚI THIỆU VỀ PSOC
PSoC là một từ viết tắt của cụm từ tiếng anh Programmable System on Chip, nghĩa là hệ thống khả trình trên một chíp. Các chíp chế tạo theo công nghệ PSoC cho phép thay đổi được cấu hình đơn giản bằng cách gán chức năng cho các khối tài nguyên có sẵn trên chíp. Hơn nữa nó còn có thể kết nối tương đối mềm dẻo các khối chức năng với nhau hoặc giữa các khối chức năng với các cổng vào ra. Chính vì vậy mà PSoC có thể thay thế cho rất nhiều chức năng nền của một số hệ thống cơ bản chỉ bằng một đơn chíp. Thành phần của chíp PSoC bao gồm các khối ngoại vi số và tương tự có thể cấu hình được, một bộ vi xử lý 8 bit, bộ nhớ chương trình (EEROM) có thể lập trình được và bộ nhớ RAM khá lớn. Để lập trình hệ thống, người sử dụng được cung cấp một phần mềm lập trình, ví dụ như cho các chíp PSoC của Cypress người lập trình phải có phần mềm PsoC Designer. Ngoài ra để cài được chương trình điều khiển vào chíp thì người lập trình phải có một kit phát triển do hãng chế tạo chip cung cấp (hoặc một bộ nạp). Phần mềm thiết kế được xây dựng trên cơ sở hướng đối tượng với cấu trúc module hóa. Mỗi khối chức năng là một module mềm. Việc lập cấu hình cho chíp như thế nào là tùy thuộc vào người lập trình thông qua một số thư viện chuẩn. Người lập trình thiết lập cấu hình trên chíp chỉ đơn giản bằng cách muốn chíp có những chức năng gì thi kéo chức năng đó và thả vào khối tài nguyên số hoặc tương tự, hoặc cả hai tùy theo từng chức năng (Phương pháp lập trình kéo thả). Việc thiết lập ngắt trên chân nào, loại ngắt là gì, các chân vào ra được hoạt động ở chế độ như thế nào đều tùy thuộc vào việc thiết lập của người lập trình khi thiết kế và lập trình cho PSoC. Với khả năng đặt cấu hình mạnh mẽ này, một thiết bị điều khiển, đo lường có thể được gói gọn trên một chip duy nhất. Chính vì lý do đó, hãng
truyền thống, mà gọi là “thiết bị PSoC” (PSoC device), và họ hy vọng rằng, với khả năng đặt cấu hình mạnh mẽ, người sử dụng sẽ có được những thiết bị điều khiển, những thiết bị đo có giá rẻ, kích thước nhỏ gọn, và sản phẩm PSoC của họ sẽ thay thế được các thiết bị dựa trên vi xử lý hoặc vi điều khiển đã có từ trước đến nay. Chíp PSoC (CY8C29xxx) cung cấp:
¾ Bộ vi xử lý với cấu trúc Harvard. - Tốc độ của bộ vi xử lý lên đến 24 MHz
- Lệnh nhân 8 bit x 8 bit, thanh ghi tích lũy là 32 bit - Hoạt động ở tốc độ cao mà năng lượng tiêu hao ít - Dải điện áp hoạt động từ 3.0 tới 5.25V
- Điện áp hoạt động có thể giảm xuống 1.0 V sử dụng chế độ kích điện áp - Hoạt động trong dải nhiệt độ -400C đến 850C.
¾ Các khối ngoại vi có thể được sử dụng độc lập hoặc kết hợp.
• 12 khối ngoại vi tương tự có thể được thiết lập để làm các nhiệm vụ:
- Các bộ ADC lên tới 14 bit - Các bộ DAC lên tới 9 bit.
- Các bộ khuếch đại có thể lập trình được hệ số khuếch đại. - Các bộ lọc và các bộ so sánh có thể lập trình được.
• 8 khối ngoại vi số có thể được thiết lập để làm các nhiệm vụ:
- Các bộ định thời đa chức năng, đếm sự kiện, đồng hồ thời gian thực, bộ điều chế độ rộng xung có và không có dải an toàn (deadband)
- Các modun kiểm tra lỗi (CRC modunles)
- Hai bộ truyền thông nối tiếp không đồng bộ hai chiều
- Các bộ truyền thông SPI Master hoặc Slave có thể cấu hình được - Có thể kết nối với tất cả các chân vào ra.
¾ Bộ nhớ trên Chip:
- Không gian bộ nhớ chương trình Flash từ 4K đến 16K, phụ thuộc vào từng loại chíp với chu kỳ ghi xóa cho bộ nhớ Flash là 50.000 lần
- Chíp có thể lập trình thông qua chuẩn nối tiếp (ISSP) - Bộ nhớ Flash có thể được nâng cấp từng phần
- Chế độ bảo mật đa năng, tin cậy
- Có thể tạo được không gian bộ nhớ Flash trên chíp lên tới 2,304 byte
¾ Có thể lập trình được cấu hình cho từng chân của chíp. - Các chân vào ra ba trạng thái sử dụng Trigger Schmitt
- Đầu ra logic có thể cung cấp dòng 25mA với điện trở treo cao hoặc thấp bên trong
- Thay đổi được ngắt trên từng chân
- Đường ra tương tự có thể cung cấp dòng tới 40mA
- Đường ra đa chức năng có từ 6 đến 44 tùy thuộc vào từng loại chíp
¾ Xung nhịp của Chip có thể lập trình được.
- Bộ tạo dao động 24/48MHz ở bên trong (độ chính xác là 2,5%, không cần thiết bị ngoài)
- Có thể lựa chọn bộ dao động ngoài lên tới 24MHz - Bộ dao động thạch anh 32,768 kHz bên trong
- Bộ tạo dao động tốc độ thấp bên trong sử dụng cho Watchdog và Sleep
¾ Các khối ngoại vi được thiết lập sẵn.
- Bộ định thời Watchdog và Sleep phục vụ chế độ an toàn và chế độ nghỉ - Module truyền thông I2C Master và I2C Slave tốc độ lên tới 400kHz - Module phát hiện điện áp thấp được cấu hình bởi người sử dụng.
Hình 3.1. Sơđồ khối cấu trúc của PSoC (CY8C27443).
3.2. CẤU TRÚC VI XỬ LÝ
3.2.1. BỘ XỬ LÝ
Các họ chíp của PSoC dựa trên bộ vi xử lý mạnh mẽ 8 bit với cấu trúc Harvard (Cấu trúc Harvard là cấu trúc mà bus dữ liệu, bus địa chỉ và tín hiệu điều khiển của bộ nhớ chương trình và bộ nhớ dữ liệu độc lập với nhau). Nó có 5 thanh ghi điều khiển hoạt động chính của CPU. Những thanh ghi này bị tác động bởi những lệnh khác nhau. Người sử dụng không thể truy cập trực tiếp vào các thanh ghi này thông qua không gian bộ nhớ các thanh ghi. Các thanh ghi của CPU được cho trong bảng sau:
Bảng 3.2. Các thanh ghi của CPU.
Thanh ghi Mã gợi nhớ
Flags (thanh ghi cờ) CPU_F
Program Counter (thanh ghi đếm
chương trình) CPU_PC
Accumulator (thanh ghi chứa) CPU_A Stack Pointer (thanh ghi con trỏ Stack) CPU_SP
Bộ đếm chương trình là một thanh ghi16 bit (CPU_PC), nó cho phép người lập trình truy cập trực tiếp vào toàn bộ không gian bộ nhớ chương trình trên chíp (16 Kbytes đối với thành viên lớn nhất). Đây là một không gian nhớ liên tục và không cần phải tạo thành trang (no paging).
Thanh ghi chứa (Accumulator) là một thanh ghi đa mục đích, nó thường được sử dụng để lưu giữ kết quả của bất cứ một lệnh nào sử dụng chế độ địa chỉ nguồn.
Thanh ghi chỉ số được dùng để lưu giữ giá trị Offset (độ lệch) trong chế độ địa chỉ chỉ số. Tiêu biểu là nó được dùng để địa chỉ một khối dữ liệu bên trong không gian nhớ dữ liệu.
Thanh ghi Con trỏ Stack (Stack Pointer) lưu giữ địa chỉ của đỉnh Stack trong không gian nhớ dữ liệu. Nó bị tác động bởi những lệnh như PUSH, POP, LCALL,RETI và RET. Nói chung là tất cả những lệnh có liên quan đến stack của phần mềm. Nó cũng có thể bị ảnh hưởng bởi lệnh SWAP và lệnh ADD.
Thanh ghi cờ (Flags) có ba bit trạng thái: bit cờ không - Zero Flag bit[1]; bit cờ nhớ -Carry Flag bit[2]; bit Supervisory State[3]. Bit cho phép ngắt toàn cục – Global Interrupt enable bit[0] được dùng để cho phép hoặc cấm toàn bộ các ngắt. Các cờ trên bị ảnh hưởng bởi những lệnh toán học, những lệnh logic. v.v…
3.2.2. ĐỊNH DẠNG LỆNH
¾ Lệnh 1 byte: lệnh 1 byte là lệnh không dùng địa chỉ hay dữ liệu như toán hạng. lệnh 1 byte sử dụng một mã lệnh 8 bit ví dụ như RET,ASR,DEC,…
¾ Lệnh 2 byte: lệnh 2 byte là lệnh dùng duy nhất một toán hạng là dữ liệu hay địa chỉ. Lệnh 2 byte sử dụng byte đầu tiên để chứa mã lệnh, byte thứ hai để chứa dữ liệu hoặc địa chỉ. Hoặc nó sử dụng 4 bit đầu cho mã lệnh và 12 bit sau cho địa chỉ
¾ Lệnh 3 byte: Lệnh này sử dụng 3 byte bởi vì nó được sử dụng để di chuyển dữ liệu giữa hai địa chỉ trong không gian địa chỉ mà người sử dụng có thể truy nhập. Hoặc nó dùng để lưu giữ một giá trị địa chỉ tuyệt đối 16 bit trong các lệnh LCALL và LJMP
3.2.3. CÁC CHẾĐỘĐỊA CHỈ
Trong Psoc có các chế độ đánh địa chỉ sau:
¾ Chế độ nguồn địa chỉ tức thời (Source Immediate)
¾ Chế độ địa chỉ nguồn trực tiếp (Source Direct)
¾ Chế độđịa chỉ nguồn chỉ số (Source Indexed)
¾ Chế độ địa chỉ đích chỉ số (Destination Indexed)
¾ Chế độ địa chỉ đích trực tiếp, nguồn tức thời tức thời (Destination Direct,Source Immediate)
¾ Chế độ Chế độ địa chỉ đích chỉ số, nguồn tức thời (Destination Indexed, SourceImmediate)
¾ Chế độ địa chỉ đích trực tiếp, nguồn trực tiếp (Destination Direct, Source Direct)
¾ Chế độ địa chỉ sử dụng con trỏ tự động tăng địa chỉ
3.3. NGẮT VÀ BỘ ĐIỀU KHIỂN NGẮT
Bảng 3.2 Các thanh ghi của Bộ điều khiển ngắt.
Bộ điều khiển ngắt cho phép một đoạn mã của người lập trình được thực hiện mỗi khi có một ngắt sinh ra từ các khối chức năng trong chip PSoC. Mỗi một khối số có một ngắt riêng và mỗi một cột khối tương tự cũng có một ngắt riêng. Mỗi một ngắt cho nguồn cấp, chế độ ngủ, xung nhịp thay đổi, và một ngắt toàn cục cho các chân vào ra đa chức năng.
Bộ điều khiển ngắt cùng với những thanh ghi của nó cho phép các ngắt có thể bị vô hiệu hóa đồng thời hoặc độc lập với nhau. Các thanh ghi cung cấp một cách thức để người sử dụng có thể xóa tất cả những ngắt đang chờ và thông báo
ngắt, hoặc có thể xóa một cách độc lập hay riêng biệt thông báo ngắt và ngắt chờ. Một kỹ thuật phần mềm được cung cấp để cho phép người lập trình thiết lập ngắt một cách riêng biệt. Thiết lập một ngắt bằng kỹ thuật này rất mạnh mẽ và hữu ích cho việc phát triển mã nguồn, khi mà nó không có đủ hệ thống phần cứng hoàn chỉnh để sinh ra một ngắt thực
Bảng 3.3 Bảng vector ngắt.
3.4. CÁC CỔNG VÀO RA ĐA CHỨC NĂNG
Cổng vào ra đa chức năng cung cấp cho CPU một giao diện với bên ngoài. Chúng đòi hỏi một số lượng lớn thanh ghi cấu hình để hỗ trợ cho nhiều hoạt động vào/ra bao gồm cả số và tương tự.
Nhưng để dễ hiểu thì ta chỉ xét chung cho trường hợp tổng quát:
Các cổng vào ra đa chức năng đều có độ rộng là 8 bit/ 1 cổng. Mỗi một cổng vào/ra bao gồm 8 khối GPIO giống hệt nhau. Mỗi một khối GPIO đều được kết nối với bit có số thứ tự tương ứng trong địa chỉ và thanh ghi. Bởi vậy, những thanh ghi trong bảng 4-22 thực sự chỉ dành cho một cổng (bao gồm 8 khối GPIO). Trong đó thì vị trí của bit sẽ chỉ rõ là khối GPIO nào trong 8 khối được điều khiển với cổng vào ra.
Mỗi một khối GPIO có thể được sử dụng cho những kiểu vào ra sau: - Vào ra số (Vào ra số điều khiển bởi phần mềm)
- Vào ra toàn cục (Vào ra cho các khối PSoC số) - Vào ra tương tự (Vào ra cho các khối PSoC tương tự)
Mỗi một chân vào ra đều có vài chế độ hoạt động cũng như là khả năng tạo ngắt. Trong khi tất cả các chân đều được nối đường vào ra số thì một vài chân lại không được kết nối với chức năng vào ra của khối tương tự hoặc bus toàn cục.
¾ Vào ra số
Một trong những chức năng hoạt động cơ bản của cổng vào ra đa chức năng là cho phép CPU gửi thông tin ra ngoài chip và lấy thông tin từ bên ngoài vào. Điều này được thực hiện nhờ thanh ghi dữ liệu cổng (Port Data Register – PRTxDR). Việc viết dữ liệu vào thanh ghi PRTxDR sẽ lưu lại trạng thái dữ liệu, mỗi bit cho một chân GPIO. Trong chế độ thường (standard non-bypass) thì mỗi chân GPIO sẽ lặp lại bit dữ liệu đó. Nghĩa là khi ta viết một giá trị vào trong thanh ghi dữ liệu PRTxDR thì ở đầuMột trong những chức năng hoạt động cơ bản của cổng vào ra đa chức năng là cho phép CPU gửi thông tin ra ngoài chip và lấy thông tin từ bên ngoài vào. Điều này được thực hiện nhờ thanh ghi dữ liệu cổng (Port Data Register – PRTxDR). Việc viết dữ liệu vào thanh ghi PRTxDR sẽ lưu lại trạng thái dữ liệu, mỗi bit cho một chân GPIO. Trong chế độ thường (standard non-bypass) thì mỗi chân GPIO sẽ lặp lại bit dữ liệu đó. Nghĩa là khi ta viết một giá trị vào trong thanh ghi dữ liệu PRTxDR thì ở đầu sẽ có giá trị giống như trong thanh ghi dữ liệu. Điện
Điện áp thực ở chân ra phụ thuộc vào chế độ hoạt động của chân và tải bên ngoài được nối vào chân đó.
CPU có thể đọc giá trị của một cổng bằng cách đọc giá trị của thanh ghi PRTxDR. Khi CPU đọc giá trị của PRTxDR thì giá trị điện áp hiện thời của chân vào ra sẽ được chuyển đổi sang giá trị logic và được trả về cho CPU. Hoạt động này sẽ đọc giá trị điện áp của chân vào ra chứ không phải là đọc về giá trị chốt của thanh ghi PRTxDR.
¾ Vào ra toàn cục( Global IO)
Các cổng vào ra đa chức năng cũng được nối liền với các khối số thông qua các vào ra toàn cục. Tính năng vào ra toàn cục của mỗi cổng được mặc định ở trạng thái tắt. Để sử dụng tính năng này thì có 2 thông số cần phải được thay đổi. Thứ nhất để cấu hình cho một chân GPIO hoạt động như là một đầu vào toàn cục thì bit lựa chọn cổng toàn cục cần phải được set để yêu cầu GPIO sử dụng thanh ghi PRTxGS. Thứ