มอนิเตอร์พอร์ทอนุกรม RS232 ด้วย PSoC

Using the PSoC microcontroller as RS232 Serial Port Monitor

วัตถุประสงค์

แสดงตัวอย่างการสร้างเครื่องมอนิเตอร์พอร์ทอนุกรมแบบ RS-232

ขั้นตอนการสร้าง

1. ให้รันโปรแกรม PSoC Designer แล้วทำการสร้างโปรเจคใหม่ โดยใช้ไมโครคอนโทรลเลอร์เบอร์ CY8C29466-24PXI ส่วน Main file ให้เลือกเป็นภาษา C

2. เมื่อเข้าสู่ PSoC designer ในหน้าแรกจะเป็น User Module Selection View ในหน้าต่างนี้ให้เลือกใช้โมดูล แอลซีดี (LCD) และ UART

3. หลังจากเลือกโมดูลต่างๆแล้ว ให้คลิก (Interconnect View) เพื่อทำการวางอุปกรณ์และกำหนดค่าพารามิเตอร์ ของ LCD และ UART ดังนี้

พารามิเตอร์ของ LCD

อุปกรณ์

    1. PSoC CY8C27443

    2. โมดูลแอลซีดีแบบดอทแมทริก

    3. MAX-232

เครื่องมือ

PSoC Designer 5.2

ความสามารถ

    1. อ่านสัญญาณจากพอร์ทอนุกรมำด้ทั้งแบบ UART และ RS-232 ที่ใช้ Baudrat 4800

    2. แสดงค่าออกทาง LCD ในรูปแบบ HEX

วงจร

พารามิเตอร์ของ Global

พารามิเตอร์ของ UART

อธิบายเพิ่มเติม

การทดลองนี้ต้องการใช้ UART ที่ความเร็ว 4800 บิตต่อวินาที ณ ที่ความเร็วนี้ โมดูล UART ต้องการสัญญาณนาฬิกาที่มีความถี่สูงกว่า 8 เท่า ดังนั้นเมื่อกำหนดให้ใช้สัญญาณนาฬิกาจาก VC3 จึงต้องกำหนดพารามิเตอร์ของ VC3 ดังนี้

VC3 = 8 x Baudrate = 8 x 4800 = 76.8 K

VC3 = VC1/n

VC1 = SysClk/16 = 24 MHz/16 = 1.5 MHz

จากกำหนดพารามิเตอร์ของ Global Resource

VC3 = 76.8 K = 3 MHz/n

n = 3000/76.8 = 39.0625

ดังนั้นจึงกำหนดตัวหารสำหรับ VC3 เป็น 39

4. ทำการเชื่อมต่ออินพุทและเอาท์พุทของโมดูล UART_1 เข้ากับขาไมโครคอนโทรเลอร์ โดยจะสังเกตได้ว่า จากค่าพารามิเตอร์ที่กำหนด สัญญาณ TX Output และ สัญญาณ RX Input จะต่ออยู่กับ Row_0_Output_2 (RO0[2]) และ Row_0_Input_0 (RI0[0])

การต่อสัญญาณ TX Output จากโมดูลออกไปที่ขาให้ใช้เมาส์คลิกขวาที่สัญญาณ TX Output จะปรากฏวงจรแสดงการต่อของสัญาณไปยัง GOE มีทั้งหมด 4 ทางเลือก ให้คลิกขวาที่ทางเลือก ต่อบนสุด แล้วคลิกขวาอีกครั้งเลือกเป็น GlobalOutEven_2 เพื่อต่อออกไปยัง GOE _2 แล้วคลิก Close

ที่สายสัญญาณ GOE_2 นี้สามารถที่จะตรวจสอบได้ว่า จะต่อกับขาใดได้บ้าง โดยให้คลิกขาวที่สัญญาณนั้น จะปรากฏ Pop up ว่าต้องการต่อกับ Pin หรือ Interconnect เมื่อคลิกขวาที่ Pin จะปรากฏตัวเลือกว่าต้องการต่อกับขา Port_0_2 หรือ Port_2_2 หรือไม่ต่อ (None) ให้เลือกเป็น Port_0_2 จะได้ผลดังรูป

5. ส่วนการต่อสัญญาณ RX_Input ก็ทำในทำนองเดียวกัน ให้ต่อออกยังขา Port_0_0

การกำหนดค่าพารามิเตอร์ดังกล่าวทำให้การจัดสัญญาณ Pinout เป็นดังนี้

6. เมื่อเสร็จแล้วให้กด (Generate Application) เพื่อสร้างซอร์ไฟล์ต่างๆ

7. ให้คลิกที่ปุ่ม (Application Editor) เพื่อเปิดหน้าต่าง Application เพื่อเขียน Source file ให้แก้ไขโปรแกรม main.c เป็น ดังนี้

โปรแกรม

//----------------------------------------------------------------------------

// Count-down Timer clock with UART communication

//----------------------------------------------------------------------------

#include <m8c.h> // part specific constants and macros

#include "PSoCAPI.h" // PSoC API definitions for all User Modules

#include <stdlib.h>

//DWORD Time = 0;

char TextBuff[6];

void main(void)

{

BYTE i,j,Number;

LCD_1_Start(); // Initialize LCD

UART_1_CmdReset(); // Reset Command Buffer

UART_1_Start(UART_1_PARITY_NONE); // Start UART

M8C_EnableGInt; //Enable global interrupts

UART_1_DisableInt(); // Disable UART interrupt

LCD_1_Position(0,0);

LCD_1_PrCString("BaudRate = 4800");

i = 0;

LCD_1_Position(1,0);

while(1)

{

Number = UART_1_cGetChar();

UART_1_CmdReset();

if(i>4)

{

LCD_1_Position(0,0);

for (i=0;i<5;i++)

{

LCD_1_PrHexByte(TextBuff[i]);

LCD_1_PrCString(" ");

}

i = 0;

LCD_1_Position(1,0);

LCD_1_PrCString(" ");

LCD_1_Position(1,0);

}

LCD_1_PrHexByte(Number);

LCD_1_PrCString(" ");

TextBuff[i] = Number;

i++;

}

}

แล้วทำการบันทึกไฟล์

8. ให้ทำการแปลโปรแกรมโดยคลิกที่ปุ่ม (Build) เพื่อแปลโปรแกรม หากไม่มีข้อผิดพลาด

จะได้ไฟล์ Hex ที่มีชื่อเหมือนกับชื่อของโปรเจค อยู่ในโฟดเดอร์ Output สำหรับใช้ดาว์นโหลดลงชิพไมโครคอนโทรลเลอร

9. ทำการติดตั้ง LCD เข้ากับบอร์ด และสัญญาณระหว่าง Port_0 กับขั้วต่อ สัญญาณของ RS-232 ดดำพโดยต่อสายจาก P00 เข้ากับขา RX และ P02 เข้ากับขา TX