控制串口上的各个引脚

时间:2010-05-08 19:51:02

标签: c++ hardware serial-port

我知道串行端口通过串行发送单个数据流来工作。我可以编写程序来发送和接收来自该引脚的数据。

然而,串口连接上还有很多其他引脚没有使用正常但是从文档中看起来都有某种信号功能而不是数据传输。

是否有可能以任何方式导致未用于直接数据传输的其他引脚单独控制?如果是这样,我将如何做到这一点?

编辑:更多信息

我正在使用在intel核心i7 870处理器上运行Windows 7 64位的现代CPU。我正在使用串口到usb端口,因为它不能直接用usb端口做任何事情而我的电脑没有配备串口,而且由于一些莫名其妙的原因我有一堆这些usb到串口端口适配器。

我的目标是控制mutipul步进电机(每转200步,4相电机)。我的简单电路接受单个高脉冲并将其解释为使电机旋转一步的命令。电路本身将处理电源和相位切换。我希望使用数据传输引脚发送旋转信号(我们可以通过改变高脉冲的数量和通过引脚的高脉冲频率来控制位置和速度,但是没有真正的脉冲宽度调制)。

我有许多电机可以控制,但不需要同时控制它们。我希望使用其余的引脚并通过一个简单的组合逻辑电路运行它们,以确定哪个电机正在移动以及它将被移入的方向。这是电源开关电路的一部分。

数据传输引脚将在某个低端频率下正常工作。但是,我想控制其他引脚以允许我给出一个稳定的开或关信号(它们不会很快翻转,只有当我切换到控制另一个电机时才会改变)。

7 个答案:

答案 0 :(得分:2)

根据Hans Passant的建议,我建议您使用Arduino而不是USB转串口转换器。 "Duemilanove"是一个基于Arduino的板,提供6个PWM输出(以及8个其他数字I / O和6个模拟)。一些更专业的电路板可能更便宜(Arduino Pro Mini,体积15美元,需要一些焊接)。

答案 1 :(得分:1)

使用握手引脚发送数据可以很好地工作,虽然可能不是在多任务操作系统上,但它只是处理器非常密集(因为端口需要不断轮询)并且需要一些自定义电缆。事实上,在当天,这正是Laplink如何通过串行连接获得如此高的传输速率(以及为什么要获得这些速率,您需要一个特殊的'Laplink'电缆)。而且你需要双方链接来了解正在发生的事情并能够处理自定义通信。 Laplink将通过两个普通UART引脚发送数据包,同时尝试通过握手引脚从数据包的另一端发送数据。如果没有使用正确的电缆(或者通过握手引脚发出其他问题)没有问题 - 所有数据都会正常发送。

嵌入式开发人员可能会将此视为“位敲击” - 通常在小型嵌入式系统上没有专用的UART电路 - 要使串行通信正常工作,他们必须以正确的时序切换通用I / O引脚。在UART的握手引脚上也可以这样做。但就像我说的那样,如果需要做其他工作,它可能对系统有害。

答案 2 :(得分:1)

您只能使用DTR和RTS,但这是四种可能的状态。您需要注意另一端的设备使用TTL电平。在此链接的末尾Serial,如果您需要,可以提供有关硬件的提示。

当您说高频率时,您在考虑什么样的数据速率?你有什么样的串口?使用计算机背面的旧9针连接器,您可以做的最好是大约115Kbps。使用USB适配器,我已经完成了测试,我可以通过该端口接近1Mbps。

答案 3 :(得分:1)

以下是Microsoft的一篇文章,详细介绍了如何使用串行端口:

http://msdn.microsoft.com/en-us/library/ms810467.aspx

它提到EscapeCommFunction直接控制DTR线。

在您查看此信息之前,我正在加入其他人,他们说串口不适合您的应用。

答案 4 :(得分:1)

我一直试图找到你的问题的答案3个小时,似乎没有“简单的方法”从计算机获得一个简单的布尔信号... 但是,总有一种方式,喷射,简单(甚至可能是愚蠢),因为这可能听起来,你考虑使用音频插孔连接器作为输出吗?它是立体声所以你有2个输出可用,编程会并不难。而且你不需要购买昂贵的狗屎来使其发挥作用。 如果您还需要输入,只需拆卸鼠标......并将传感器连接到伺服系统,这可能是最便宜,最简单的方法......

另一种方法是使用LED上的Num-lock,大写锁定和dspl-lock,这些可以使用软件激活,你只需要拿一个便宜的外接键盘,并使用连接器对于这3个LED。

答案 5 :(得分:0)

您正在描述可能是并行端口 - 您可以在其中同时设置位模式 - 然后切换xmit线以将其全部发送...

答案 6 :(得分:0)

让我们从“自下而上”的角度来看:

串口端口
串行端口上的引脚可以连接到“控制器”或直接连接到处理器。为了使处理器能够访问(控制)引脚,必须存在从引脚到处理器的电连接。如果没有,处理器和程序可以控制引脚。

使用串行控制器
诸如USART的控制器将连接在串行端口和处理器之间。控制器可以用于将8个并行数据位转换为串行比特流。从大图来看,控制器必须提供对端口引脚的访问,以便对它们进行控制。如果没有,则无法访问引脚。 控制器必须连接到处理器,以便在连接控制器时控制引脚。

处理器和串口
假设您要控制的引脚连接到处理器,处理器必须能够访问它们。有时它们被映射为物理地址(例如使用ARM处理器),或者它们可能连接到端口(例如intel 8086)。程序将通过指针或使用i / o指令访问引脚。在某些处理器中,必须先启用并初始化I / O端口,然后才能使用它们。

来自操作系统的支持 这是一个big ticket项:如果您的平台有操作系统,操作系统必须提供访问串行端口引脚的服务。服务可以是驱动程序或API函数调用。如果操作系统不提供服务,则无法访问串行端口引脚。

操作系统的权限 假设操作系统支持串行端口,则程序现在必须具有访问端口的权限。在某些操作系统中,只能向root或驱动程序授予权限,而不能授予用户权限。如果您的帐户无权访问这些图钉,则您不会阅读它们。

编程语言的支持 最后,编程语言必须支持端口。如果该语言不支持端口,则可能需要更改语言,甚至可以在汇编中编程。

访问串行端口的“未使用”引脚需要对平台进行大量研究。并非所有平台都有串行端口。串行端口访问取决于平台,可能会在不同平台上发生变化。

提出另一个更详细的问题,您将获得更详细的答案。请提供您正在使用的平台和操作系统。