Область техники
Изобретение относится к способу связи с помощью последовательных данных, в частности к способу асинхронной передачи и приема данных с использованием последовательного порта цифрового сигнального процессора (ЦСП).
Предшествующий уровень техники
ЦСП TMS320C30 (цифровой сигнальный процессор от Texas Instrument Company) является специализированным цифровым процессором, который широко применяется в сервоконтроллерах и для обработки изображений. Обычный цифровой сигнальный процессор имеет последовательный порт или параллельный порт для передачи данных к другому процессору и приема данных от другого процессора. ЦСП TMS320C30 имеет синхронный последовательный коммуникационный порт и выполняет асинхронную последовательную связь с другим ЦСП TMS320C30 через последовательный коммуникационный порт.
В общем случае удобно, если последовательный порт ЦСП может подключаться к такой системе общего назначения, как персональный компьютер (ПК) или ноутбук. К примеру, программа, закодированная на ПК, может быть загружена в ЦСП, или данные из ЦСП могут непрерывно регистрироваться персональным компьютером в процессе работы ЦСП системы. Если выходные значения контроллера сервосистемы, использующей ЦСП, регистрируются, а затем анализируются персональным компьютером, можно легко реализовать оптимальный контроллер. Кроме того, ноутбук может выдавать рабочие команды на ЦСП систему, так что эта ЦСП система может выполнять специальные операции, благодаря чему может производиться простая эмуляция, т. е. внешняя система может тестироваться безотносительно к рабочему месту и оборудованию, если последовательный порт может подключаться к системе общего назначения.
Однако ЦСП не может осуществлять передачу данных с такой компьютерной системой общего назначения, как ПК или ноутбук последовательным коммуникационным способом с использованием последовательного порта ЦСП. Поэтому для реализации последовательной связи с компьютерной системой общего назначения требуется специальный асинхронный коммуникационный способ. Однако для асинхронной связи необходимо определенное аппаратное и программное обеспечение вследствие того, что асинхронные данные начинаются стартовым разрядом, который не является частью действительных данных. Т.е. начало приема данных распознается с использованием стартового разряда, и последующие разряды считываются согласно значению регистра таймерного счетчика приема, показанного на фиг. 1Б. Аналогично и при передаче данных разряды передаются один за другим с использованием регистра таймерного счетчика передачи.
Заявителем экспериментальным путем было обнаружено, что таймерные счетчики передачи/приема в ЦСП TMS320C30 выполняют непрерывный подсчет операций синхронно с тактовым импульсом процессора, безотносительно к тому, выполняется или нет последовательная связь. Соответственно, значения таймерных счетчиков передачи/приема не постоянны в момент времени, когда передается или принимается стартовый разряд, что вызывает при длительных связях коммуникационную ошибку.
Сущность изобретения
Задача настоящего изобретения состоит в создании способа передачи и приема данных с использованием последовательного порта ЦСП, обеспечивающего устранение коммуникационной ошибки сбросом значения таймерного счетчика приема на заранее заданную величину, когда бы не принимался стартовый разряд при приеме асинхронных данных через последовательный порт, чтобы данные считывались в середине импульсной части на каждый разряд сигнала данных, а импульсная часть на разряд передаваемого сигнала регулируется и передается сбросом таймерного счетчика передачи до нуля в начальный момент передачи стартового разряда в процессе передачи данных.
Для достижения вышеуказанного результата предлагается способ асинхронного приема последовательных данных через последовательный порт цифрового сигнального процессора TMS320C30, включающего регистр таймерного периода приема для хранения информации импульсной части, показывающей, сколько тактовых импульсов соответствует одному разряду последовательных данных, когда одноразрядная временная часть передаваемых последовательных данных выражается как импульсная часть, составленная из множества тактовых импульсов; и таймерный счетчик приема для подсчета тактовых импульсов до значения, определенного регистром таймерного периода приема, для сброса подсчитанного значения до нуля и подсчета вновь, начиная от нуля, причем данный способ содержит следующие операции: определение того, принят ли стартовый разряд; разрешение работы последовательному порту, когда принятый стартовый разряд переходит от высокого уровня к низкому; установка начального значения таймерного счетчика приема на половину значения в регистре импульсной части приема, когда разрешается работа последовательного порта; прием одного разряда данных, когда значение таймерного счетчика приема ни стало равным значению в регистре таймерного периода приема, пока не будет принят разряд остановки; и запрещение работы последовательного порта, когда принят разряд остановки.
Для достижения вышеуказанного результата предлагается способ асинхронной передачи последовательных данных через последовательный порт цифрового сигнального процессора TMS320C30, включающего регистр таймерного периода передачи для хранения информации импульсной части, показывающей, сколько импульсов соответствует одному разряду последовательных данных, когда одноразрядная временная часть передаваемых последовательных данных выражается как импульсная часть, составленная из множества тактовых импульсов; и таймерный счетчик передачи для подсчета тактовых импульсов до значения, определенного регистром таймерного периода передачи, для сброса подсчитанного значения до нуля и подсчета вновь, начиная с нуля, причем этот способ содержит следующие операции: генерирование передаваемых данных добавлением стартового разряда и разрядов остановки в начало и конец части данных, подлежащих передаче, для создания асинхронных данных инициализации таймерного счетчика передачи в нуль в момент времени, когда передается стартовый разряд; передача одного разряда данных, когда бы значение таймерного счетчика передачи ни стало равным значению в регистре таймерного периода передачи; и повторение операции передачи одного разряда до тех пор, пока не передан разряд остановки.
Краткое описание чертежей
Задача, решаемая изобретением, и его преимущества поясняются в подробном описании его предпочтительного выполнения со ссылками на прилагаемые чертежи.
Фиг. 1А и 1Б - регистры, используемые для асинхронной передачи данных и приема данных с использованием последовательного коммуникационного порта ЦСП TMS320C30.
Фиг. 2 - иллюстрация концепции того, что данные могут приниматься стабильно в средней части импульса путем сброса таймерного счетчика приема на заранее заданное значение, когда принимаются последовательные данные, согласно настоящему изобретению.
Фиг. 3 - блок-схема алгоритма, соответствующего процедуре приема асинхронных данных.
Фиг. 4 - иллюстрация момента времени, когда таймерный счетчик передачи сбрасывается в нуль при передаче асинхронных данных согласно настоящему изобретению.
Фиг. 5 - блок-схема алгоритма, соответствующего процедуре передачи последовательных данных.
Подробное описание изобретения
Последовательные данные стандарта RS232C составлены из одного стартового разряда, восьми разрядов данных и одного разряда остановки. Для обнаружения коммуникационных ошибок может добавляться дополнительный разряд, например разряд четности. Однако представляется обычным, что последовательные данные цифрового сигнального процессора TMS320C30 состоят в целом из 10 разрядов. Обычный последовательный коммуникационный контроллер принимает данные путем распознавания стартового и стопового разрядов. Однако для того, чтобы упростить прием данных в зависимости от значения счетчика приема, как только поступают разряды данных, создан последовательный коммуникационный порт ЦСП.
Здесь стартовый разряд является не информацией, в которой нуждается пользователь, а разрядом, индуцирующим начало приема данных. При асинхронном обмене прием данных возможен лишь в том случае, если начало данных распознается с использованием стартового разряда. Стартовый разряд находится в начале потока данных, так что найти стартовый разряд нетрудно.
Фиг. 1А и 1Б показывают регистры, используемые для асинхронной передачи и приема данных с использованием последовательного коммуникационного порта ЦСП TMS320C30. Фиг. 1А показывает регистр таймерного периода приема/передачи, который хранит информацию импульсной части, показывающую, сколько тактовых импульсов соответствует одному разряду данных, когда одноразрядная часть данных, передаваемая во время последовательной передачи, представлена импульсной частью, составленной из множества тактовых импульсов. Регистр таймерного периода приема/передачи имеет 32-разрядный размер для определения одноразрядной импульсной части последовательной передачи. Младшие 16 разрядов (с разряда 0 до разряда 15) представляют одноразрядную импульсную часть передачи, а старшие 16 разрядов (с разряда 16 до разряда 31) представляют одноразрядную импульсную часть приема.
Фиг. 1Б показывает регистр таймерного счетчика приема/передачи, представляющий выход таймерного счетчика приема/передачи. Этот таймерный счетчик приема/передачи подсчитывает тактовые импульсы, пока не достигает значения, установленного в регистре таймерного периода приема/передачи, сбрасывает подсчитанное значение обратно на нуль и вновь запоминает выходное значение таймерного счетчика приема/передачи, который повторяет операцию подсчета в регистре. Регистр таймерного счетчика приема/передачи представляет собой 32-разрядный регистр, младшие 16 разрядов (с разряда 0 до разряда 15) предназначены для таймерного счетчика передачи, а старшие 16 разрядов (с разряда 16 до разряда 31) предназначены для таймерного счетчика приема.
Вначале будет описан способ приема асинхронных последовательных данных с использованием этих регистров. Согласно фиг. 2 данные стабильно принимаются в средней части импульса путем установки начального значения таймерного счетчика приема при последовательном приеме данных. Значение таймерного счетчика приема устанавливается на половину значения регистра таймерного периода приема в момент времени, когда стартовый разряд переходит от высокого уровня к низкому, чтобы считывать среднюю точку импульсной части, представляющей каждый разряд при определении разрядного значения.
Согласно фиг. 3 ЦСП принимает последовательные данные через последовательный порт, встроенный в ЦСП. Обычный ЦСП распознает, приняты ли данные через приемный регистр или нет. Соответственно, после приема данных ЦСП на шаге 300 обнаруживает, принят ли стартовый разряд или нет, чтобы знать, являются ли данные асинхронными или нет. Присутствие или отсутствие стартового разряда обнаруживается, когда последовательные данные переходят от высокого уровня к низкому. Если обнаружено, что принят стартовый разряд, то на шаге 310 разрешается работа последовательного порта. Т.е., когда сигнал потока данных подан в сигнальную линию прерываний в ЦСП, прерывание возникает, когда обнаружен стартовый разряд. Затем ЦСП информируется о том, что приему подлежат последовательные данные, и разрешается работа последовательного порта.
Далее, после того, как разрешена работа последовательного порта, таймерный счетчик приема инициализируется на шаге 320. Это имеет место вследствие того, что счетчик ЦСП TMS320C30 непрерывно получает приращения посредством тактового сигнала ЦСП, безотносительно к тому, осуществляется ли последовательная передача данных или нет. Кроме того, еще одна причина состоит в том, чтобы разрешить считывание разрядных значений в средней точке импульсной части, представляющей каждый разряд данных. Эта инициализация осуществляется следующим образом. Сначала считывается значение регистра таймерного периода приема/передачи и запоминается во временном переменном регистре, называемом "sett". Затем sett сдвигается на 16 разрядов вправо, потому что значение импульсной части на один разряд принятых данных соответствует старшим 16 разрядам регистра таймерного периода приема/передачи. После этого sett делится на два, сдвигается на 16 разрядов влево и запоминается в регистре, представляющем выходное значение таймерного счетчика приема. Причина выполнения вышеуказанного шага состоит в том, если значение таймерного счетчика приема устанавливается на половину импульсной части на разряд принятых данных в момент времени, когда начинает приниматься стартовый разряд, то операция счета начинается с этого значения, так что средняя точка импульсной части, представляющей один разряд, может быть точно считана. После того, как на шаге 320 выполнена инициализация таймерного счетчика приема, этот счетчик осуществляет подсчет синхронно с тактовыми импульсами ЦСП на шаге 330. Затем на шаге 340 определяется, равно ли получившее приращение значение счетчика одноразрядной импульсной части, определенной в регистре таймерного периода приема. Если обнаружено, что возросшее значение счетчика является таким же, как и одноразрядное значение импульсной части, это время соответствует времени половины импульсной части, представляющей один разряд, т.е. принят один разряд на шаге 350. На шаге 360 таймерный счетчик приема вновь сбрасывается на нуль и определяется, принят ли разряд остановки. Шаги 330, 340, 350 и 360 повторяются до тех пор, пока не будет принят сигнал остановки. Когда все восемь разрядов данных приняты через синхронный последовательный порт ЦСП TMS320C30 и принят разряд остановки, работа последовательного порта запрещается посредством генерирования прерывания приема ЦСП на шаге 370. Таким образом, осуществляется прием асинхронных последовательных данных.
Теперь будет описан способ асинхронной передачи последовательных данных с использованием регистров. Для того, чтобы передавать данные в реальном времени, ЦСП устанавливает очередь передачи для запоминания подлежащих передаче данных и отслеживает эту очередь передачи, используя таймерное прерывание в реальном времени. Если обнаруживается, что очередь передачи не пустая, дается разрешение прерывания передачи, чтобы выделить и передать данные в очереди передачи. Если очередь передачи пустая, прерывание передачи запрещается, чтобы тем самым выполнить квитирование прерывания.
Поскольку система обработки в реальном времени осуществляет управляемую по прерываниям передачу, очередь должна хорошо управляться, чтобы передавать данные другой стороне в реальном времени. Основная операция очереди состоит в том, чтобы записывать данные в заголовочную адресную часть и считывать данные из хвостовой адресной части. Когда данные передаются в очередь с использованием прерываний в реальном времени, прерывание передачи передает все данные в очереди, а затем заново обозначает текущие хвостовые данные корректировкой хвостового адреса с помощью величины переданных данных.
Однако, когда система увеличивает скорость ввода данных в очередь в процессе работы, может иметь место явление, когда заголовочный адрес накладывается на хвостовой адрес. В этих обстоятельствах управление данными выполняется неправильно из-за нарушения очереди, вследствие чего передаются неверные данные. Очередь не может быть просто увеличена для предотвращения этой проблемы. Чтобы решить эту проблему, очередь заранее заданного размера делится на две ступени. Первая очередь передачи хранит данные, подлежащие передаче системой. Если данные находят в первой очереди передачи, то эти данные помещают во вторую очередь передачи. В это время обновляется хвостовой указатель первой очереди. Таким образом, очередь предохраняется от переполнения в процессе длительного времени передачи. Когда первая очередь передачи заполняется (состояние "резервирование"), выполняется извлечение данных, хранящихся в этой очереди, путем считывания памяти, так что очередь опустошается. Тем самым сокращается время резервирования.
Кроме того, когда ЦСП передает данные, используя управляемый прерываниями последовательный контроллер связи, генерируется много прерываний. Когда эти прерывания генерируются, большая их часть подается в ЦСП обслуживать прерывания. Кроме того, в процессе разрешения и запрещения прерываний работа ЦСП усложняется. Тем самым, может случиться отказ в работе. Для того, чтобы решить вышеуказанную проблему, в ЦСП инсталлируется модуль прямого доступа к памяти (ПДП). ПДП способен совмещаться с последовательным портом. Когда выделен буфер передачи памяти, ПДП автоматически записывает порцию данных в последовательный порт. Когда последовательный завершает передачу данных, ПДП автоматически записывает другие данные, чтобы снизить долю в ЦСП.
На фиг. 4 показан момент времени, когда таймерный счетчик передачи очищен, чтобы стандартизировать передаваемую импульсную часть одного разряда до значения, определенного регистром таймерного периода передачи, когда данные передаются асинхронно согласно настоящему изобретению.
Фиг. 5 является блок-схемой алгоритма, соответствующей способу, при котором ЦСП асинхронно передает последовательные данные через последовательный порт. Сначала для асинхронной связи в начало и конец восьми разрядов данных, хранящихся в буфере очереди, добавляются стартовый разряд и разряды остановки, благодаря чему на шаге 500 генерируется кадр передаваемых данных. Затем, на шаге 510 инициализируется таймерный счетчик передачи, т.е. значение таймерного счетчика передачи сбрасывается на нуль во время передачи стартового разряда. После того, как таймерный счетчик передачи инициализирован, этот счетчик выдерживает подсчет синхронно с тактовыми импульсами ЦСП на шаге 520. Вслед за этим на шаге 530 определяется, равно ли получившее приращение значение счетчика значению одноразрядной импульсной части, определенной в регистре таймерного периода передачи. Когда эти два значения одинаковы, на шаге 540 передается один разряд. Затем на шаге 550 таймерный счетчик передачи снова сбрасывается на нуль и определяется, был ли передан разряд остановки. Шаги 520, 530, 540 и 550 повторяются до тех пор, пока не будет передан разряд остановки. Благодаря этому осуществляется асинхронная передача последовательных данных через синхронный последовательный порт ЦСП TMS320C30.
При этом способ асинхронной передачи и приема последовательных данных добавляет простое аппаратное обеспечение, так что он применим к способам как RS232C, так и RS422, соответствующим международным стандартам асинхронной связи.
Согласно настоящему изобретению, как оно описано выше, асинхронная передача и прием данных могут осуществляться через синхронный последовательный порт ЦСП TMS320C30. Кроме того, не происходит никаких ошибок, даже при продолжительной связи. Таким образом, возможна надежная асинхронная последовательная связь.
Изобретение относится к способу связи с помощью последовательных данных, в частности к способу асинхронной передачи и приема данных с использованием последовательного порта цифрового сигнального процессора. Техническим результатом является создание способа, обеспечивающего устранение коммутационной ошибки. Технический результат достигается за счет сброса значения таймерного счетчика приема на заранее заданную величину, когда бы не принимался стартовый разряд при приеме асинхронных данных через последовательный порт, чтобы данные считывались в середине импульсной части на каждый разряд сигнала данных, а импульсная часть на разряд передаваемого сигнала регулируется и передается сбросом таймерного счетчика передачи до нуля в начальный момент передачи стартового разряда в процессе передачи данных. 2 с. и 3 з.п. ф-лы, 5 ил.
US 4773043 A, 20.08.88 | |||
RU 94004853 A1, 20.08.96 | |||
Устройство для программного управления синхронно-асинхронными приемопередатчиками | 1982 |
|
SU1043649A1 |
US 4488226 A, 11.12.84 | |||
СПОСОБ УСТАНОВКИ КОРОМЫСЛА ВЕСОВЫХ УСТРОЙСТВ | 0 |
|
SU258650A1 |
0 |
|
SU154551A1 |
Авторы
Даты
2000-02-20—Публикация
1998-02-19—Подача