KEEN SIDE успешно заменяет аналогичные продукты таких известных брендов, как Phoenix Contact, Weidmueller, Degson, Winstar, Hsuan Mao, KLS, G-NOR, Mean Well и др.

Тестирование цифровых схем с помощью последовательного порта

Yury Magda

Последовательный порт ПК имеет сигнальные линии, которые можно использовать для считывания сигналов ТТЛ уровней в цифровых схемах. Для этого необходимо только преобразовать уровни ТТЛ (транзисторно-транзисторной логики) в уровни RS-232 и добавить мультиплексор для увеличения числа каналов, подключаемых к последовательному порту.

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

В схеме на Рис. 1 для трансляции уровней RS-232 в уровни ТТЛ используется микросхема MAX232 фирмы Maxim. Микросхема 74HC4051 от Texas Instruments служит в качестве селектора четырех цифровых входов для подключения их к последовательному порту. Представленное приведенным ниже исходным кодом приложение позволяет линиями RTS и DTR порта RS-232 выбирать входы для тестирования. Линия CTS используется для считывания сигнала в ПК.

F1

Рисунок 1. Эта схема позволяет направлять до 4-х ТТЛ сигналов в порт RS-232

Четыре входных цифровых сигнала A0 … A3, идущие от тестируемого устройства, подключаются к первым четырем входам X0 … X3 мультиплексора. На выход X (выв. 3) всегда может проходить только один сигнал. Установкой соответствующего двоичного кода на линиях RTS и DTR, можно выбирать любой канал. (Таблица 1).

Таблица 1. Выбор входа

 

Сигнал на выводе X

Бит RTS

Бит DTR

A0

0

0

A1

1

0

A2

0

1

A3

1

1

Запускаемое в ПК из Windows XP, приложение последовательно перебирает все двоичные комбинации на линиях порта RTS и DTR и считывает цифровые сигналы по линии CTS. При нажатии кнопки «Проверить статус» («Check-status») состояние тестируемых каналов отображается в главном окне приложения (Рис. 2). Исходный код написан на Microsoft C# 2008, но может исполняться и под версией 2005.
 

F2

Рисунок 2. В главном окне приложения видно, что на входных линиях A0 ... A2
высокие логические уровни, а на линии A3 низкий.

Для создания приложения выберите «Windows Form Application» из шаблонов в мастере проекта. Разместите текстовое окно, метку и кнопку в главной форме проекта и присвойте им заголовки. В области проекта поместите компоненты последовательного порта. Затем установите надлежащие параметры для компонентов последовательного порта, включая номер порта, скорость обмена, биты данных , четности и стоп-биты.

Собирая схему соблюдайте меры предосторожности при обращении с микросхемами MAX232 и 74HC4051 и руководствуйтесь спецификациями изготовителей. Блокировочные конденсаторы располагайте как можно ближе к выводам питания и земли микросхем. Микросхему MAX232 можно заменить на MAX225 или MAX233.

Вот исходный код приложения:

				using System;
using System.Collections.Generic;

using System.ComponentModel;
 using System.Data;
 using System.Drawing;
 using System.Linq;
 using System.Text;
 using System.Windows.Forms;
 namespace Interfacing_74HC4051_to_the_Serial_Port
 {
     public partial class Form1 : Form
     {
         public bool OUT; // needs for checking the state of CTS signal
         public Form1()
         {
             InitializeComponent();
         }
         private void button1_Click(object sender, EventArgs e)
         {
             if (!serialPort1.IsOpen)
                 serialPort1.Open();
            
             textBox1.Text = " ";
            
             // CHANNEL X0 (RTS = 0, DTR = 0)
             serialPort1.RtsEnable = true; //RTS = 0
             serialPort1.DtrEnable = true ; // DTR = 0
             WriteStatus();
             // CHANNEL X1 (RTS = 1, DTR = 0)
             serialPort1.RtsEnable = false; //RTS = 1
             serialPort1.DtrEnable = true; // DTR = 0
            WriteStatus();
             // CHANNEL X2 (RTS = 0, DTR = 1)
             serialPort1.RtsEnable = true; //RTS = 0
             serialPort1.DtrEnable = false; // DTR = 1
             WriteStatus();
             // CHANNEL X3 (RTS = 1, DTR = 1)
             serialPort1.RtsEnable = false; //RTS = 1
             serialPort1.DtrEnable = false; // DTR = 1
				

            WriteStatus();

            serialPort1.Close();          }         public void WriteStatus()         {             OUT = serialPort1.CtsHolding;             if (!OUT) textBox1.Text = textBox1.Text + "1";             else textBox1.Text = textBox1.Text + "0";         }     } }

				 

Исходный код незатейлив. Главная программа запускается обработчиком событий button1_Click (эта функция вызывается при нажатии кнопки «Проверить статус» («Check-status»). Вы без труда сможете усовершенствовать этот исходный код. К примеру, вы можете захотеть считывать код с линий A0 ... A3 периодически. Для этого в форму надо поместить компонент Таймер (Timer), установить соответствующий временной интервал и поместить исходный код  функции WriteStatus внутри обработчика событий, который вы должны определить сами.

Перевод: AlexAAN по заказу РадиоЛоцман

На английском языке: Serial port tests digital circuits

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя