linux串口无法配置波特率

linux串口无法配置波特率,第1张

我们用一条交叉网线把NPort5110 和PC机的网口连接起来,并把NPort上电。

首先,打开控制面板,网络连接。

在本地连接上点右键,选择属性。

双击进入 Internet协议(TCP/IP),点击“使用下面的IP地址”

写入 IP 地址和子网掩码,记住要和NPORT 的IP 地址在同一子网段内。如NPORT 默认IP

为192.168.127.254,255.255.255.0;就需要把PC 机的IP 地址设为192.168.127.XXX,

255.255.255.0,最后一个数字不同即可。

点击确定。

第二章:网络和串口参数配置

搜索 NPort

打开NPort Administrator(可以在光盘的对应位置找到这个软件,安装好),点击Search,此

时请确认网络防火墙已经关闭。

会搜索到我们的NPort5110,点击stop,停止搜索。

网络参数配置

双击右边空白处的NPort 设备,会出现以下界面,点击选择Network 选项卡,点击Modify

修改。可以看到以下界面:

我们可以在里面修改NPort的以下参数:

IPAddress:IP地址。

Netmask:子网掩码。

Gateway:网关。

IP Configuration:可以配置为静态IP(Static),或者为DHCP(动态IP)。

DNS Server1和2:DNS,域名解析服务器。

串口参数配置

点击 Serial选项卡,点击Modify修改,双击端口进去,可以看到以下界面:

我们可以在里面修改以下参数:

Baud Rate:波特率,NPort5000 系列只能支持标准波特率,如9600,115200bps 等。

Parity:校验。

None:无校验

Even:偶校验。

Odd:奇校验。

Space:空。

Mark:标志。

Data Bits:数据位。

Stop Bits:停止位。

Flow Control:流量控制。

None:无流量控制。

XON/XOFF:软件流控。

RTS/CTS:硬件流控。

FIFO:64bit先进先出,为了降低CPU负载,提高设备性能。可以选择Enable启用,或Disable

禁用。

Interface:可选择RS232,RS422,RS485 2线,或者RS485 4线。(NP5110 只能为RS232)

设置好后,点击OK,设置保存,设备重新启动。

第三章: *** 作模式设置

Real COM映射端口

打开 NPort Administrator(可以在光盘的对应位置找到这个软件,安装好),点击Search,此

时请确认网络防火墙已经关闭。

会搜索到我们的NPort5110,点击stop,停止搜索。

双击右边的5110,选择Operating Mode选项卡,确认为Real COM模式:

点击左边的第四项:COM MAPPING,

再点击Add

点击“OK”,

点击“Apply”保存

点击“Yes”,点击“OK”。

这样,端口就映射好了。

TCP Server模式的设置(用软件)

打开 NPort Administrator(可以在光盘的对应位置找到这个软件,安装好),点击Search,此

时请确认网络防火墙已经关闭。

会搜索到我们的NPort5110,点击stop,停止搜索。如果打开防火墙,可以使用Search IP,

在下面选项框里输入NPort的IP地址,

点击 OK,就可以搜索到NPort设备。

双击右边的NP5110,切换到OperatingMode选项卡,点击Modify,双击进去。可以把模式

修改成TCP Server 模式。

里面的名词解释:

Local TCP Port:本地数据端口,指的是NP5110 的数据端口。

Command Port:NP5110 的命令端口。

Max Connection:最大连接数,也就是说同时最大可以有几台上位机采集到下面串口设备

的数据,NPort5000 系列最大是4 个,NPort6000 和CN2600 系列是8 个。

当最大连接数为2 或以上的时候,右边的选项Allow Driver Control 和Ignore Jammed IP会开

启。

Allow Driver Control:当最大连接数为2 或以上时,且此功能打开时,上位机A 需要以

4800bps打开串口,上位机B需要以9600bps打开串口,是可以的。如果此功能关闭,则波

特率需以固件中的设置一致。

Ignore Jammed IP:当最大连接数为2 或以上时,且此功能打开时,其中一台上位机A死

机,上位机B 依然可以正常接收数据。如果此功能关闭,则上位机B 也不能收到串口的数

据了。

CAN位时间特性寄存器 (CAN_BTR)

地址偏移量: 0x1C

复位值: 0x0123 0000

注: 当CAN处于初始化模式时,该寄存器只能由软件访问。

图2

位31SILM: 静默模式(用于调试)

0: 正常状态;

1: 静默模式。

位30LBKM: 环回模式(用于调试)

0: 禁止环回模式;

1: 允许环回模式。

位29:26保留位,硬件强制为0。

位25:24SJW[1:0]: 重新同步跳跃宽度

为了重新同步,该位域定义了CAN硬件在每位中可以延长或缩短多少个时间单元的上限。

tRJW = tCAN x (SJW[1:0] + 1)。

位23保留位,硬件强制为0。

位22:20TS2[2:0]: 时间段2

该位域定义了时间段2占用了多少个时间单元

tBS2 = tCAN x (TS2[2:0] + 1)。

位19:16TS1[3:0]: 时间段1

该位域定义了时间段1占用了多少个时间单元

tBS1 = tCAN x (TS1[3:0] + 1)

位15:10保留位,硬件强制其值为0。

位9:0BRP[9:0]: 波特率分频器

该位域定义了时间单元(tq)的时间长度

tq = (BRP[9:0]+1) x tPCLK

3 如何在代码中配置波特率

配置波特率是在CAN模块初始化时配置,代码示例如下:

//CAN1 register init

CAN_DeInit(CAN1)

CAN_StructInit(&CAN_InitStructure)

//CAN cell init

CAN_InitStructure.CAN_TTCM = DISABLE

CAN_InitStructure.CAN_ABOM = DISABLE

CAN_InitStructure.CAN_AWUM = DISABLE

CAN_InitStructure.CAN_NART = DISABLE

CAN_InitStructure.CAN_RFLM = DISABLE

CAN_InitStructure.CAN_TXFP = ENABLE

CAN_InitStructure.CAN_Mode = CAN_Mode_Normal

CAN_InitStructure.CAN_SJW = CAN_SJW_1tq

CAN_InitStructure.CAN_BS1 = CAN_BS1_6tq//tBS1=6个tCAN时钟周期

CAN_InitStructure.CAN_BS2 = CAN_BS2_8tq//tBS2=8个tCAN时钟周期

CAN_InitStructure.CAN_Prescaler = 4//ABP总线时钟时钟4分频

//CANbps= Fpclk/((BRP+1)*((Tseg1+1)+(Tseg2+1)+1)

//所以这里CANbps=30000000/4/(8+6+1))=500k bps

//总体配置方向: Tseg1>=Tseg2 Tseg2>=tqTseg2>=2TSJW

if (CAN_Init(CAN1,&CAN_InitStructure) == CANINITFAILED)

{

return _ERROR

}

CAN_ITConfig(CAN1,CAN_IT_FMP0, ENABLE)//打开FMP0中断

总体配置保持tBS1>=tBS2 tBS2>=1个CAN时钟周期 tBS2>=2tSJW

如果是自己写的驱动,先检查驱动是否支持波特率的修改。

如果支持:

stty -F /dev/ttyS0 speed 115200 cs8 -parenb -cstopb  -echo 修改 波特率115200 8 N 1

下位机采用相同的配置,并在linux终端输入echo "hello" >/dev/ttyS0 看看是否能通信。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8527589.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-17
下一篇 2023-04-17

发表评论

登录后才能评论

评论列表(0条)

保存