常州电工培训

常州电工证

常州变频器培训

常州触摸屏培训

江苏和讯自动化设备有限公司欢迎您!
  • 和讯PLC,电工培训中心优势,名师团队一对一教学.
热门课程
联系方式
  • 常州和讯自动化培训中心
  • 常州市新北区太湖东路府琛大厦2号楼307-1室,307-2室(常州万达广场对面)
  • 电话:0519-85602926
  • 手机:15861139266 13401342299
当前位置:网站首页 > 技术资料 技术资料
如何用C语言在Linux下给cc2530实现一个简单的上位机(上)-常州机器视觉培训-常州PLC培训
日期:2023-6-15 13:54:13人气:  标签:常州机器视觉培训-常州PLC培训

 

环境简介

1. 软硬件环境

下位机:CC2530 OS:vmware + ubuntu

在这里彭老师采用的是CC2530,读者也可以采用其他的板子,我们只需要该板子有串口,可以和PC通信,同时板子上有可设置的led灯、继电器以及可以采集数据的传感器即可。

2. 硬件连接图

硬件连接图如下:

该款CC2530已经集成了CH340芯片,usb线连接电脑,即可被识别。

3. pc下识别串口

如果该串口被PC获取,名字为COMn【n为某整数】。

4. ubuntu下识别串口

首先需要vmware抓取串口【串口在同一时刻要么被windows抓取要么被vmware抓取】,按下图所示,点击连接即可:

但是往往ubuntu中没有ch340的驱动,经过实际测试,ubuntu14及之前的版本都没有这个驱动,ubuntu16以上的版本有这个驱动。

如果没有ch340驱动可以用以下方法安装对应的驱动:

1 make 

2 sudo make load

3 ls /dev/ttyUSB0


按照上述步骤,会生成设备文件**/dev/ttyUSB0**。

大林上位机机器视觉,_常州电工培训_常州PLC培训_常州机器视觉培训_常州上位机培训_常州工业机器人培训,最适合电工及plc编程人员学习的上位机机器视觉课程 大林老师:15861139266(微信同号)

ls /dev/ttyUSB0 -l

crw-rw---- 1 root dialout 188, 0 Jan 15 05:45 /dev/ttyUSB0

c : 字符设备 rw-rw---- :文件操作权限

188, 0 : 主次设备号

3、4节提到的usb转串口驱动和linux下驱动源码后台【GH】回复 ch340 即可获得

【注意】 如果是其他开发板,自行安装其他的串口驱动。

二、模块设计

上位机和下位机的通信往往都是通过串口,linux下往往生成字符设备ttyUSB0【有的是ttyS0】,操作串口设备就只需要操作该字符设备即可。

下面我们设计上下位机的软件模块。

1. 信令

设计上位机,首先需要设计上位机下发给下位机的指令格式,上位机按照该指令格式发送命令给下位机,下位需严格按照该指令格式进行解析指令。

含义如下:


device:要操作的设备

data :对应的设备及其额外的数据

CRC :校验码

# :信令终止符

信令格式可以根据需要扩展或者精简。


其中device定义如下【可以根据实际情况进行扩展】:


#define DEV_ID_LED_ON    0X1

#define DEV_ID_LED_OFF    0X2

#define DEV_ID_DELAY 0X3

#define DEV_ID_GAS  0X4

【注意】 为便于理解,我们暂不考虑效率问题。


2. 上传数据

下位机需要采集传感器的数据并通过串口上传,数据结构定义如下:


struct data{

 unsigned char device;

 unsigned char crc;   

 unsigned short data;

};

device 设备

data 采集的数据

crc 校验码

3. 功能模块

现在就可以开始设计软件的各个功能模块了。


下位机

下位主要任务就是循环接收上位机通过串口下发的数据,然后解析该指令内容,操作对应的硬件。


上位机

上位机主要任务是打印菜单,由用户针对菜单做出选择,然后按照指令格式封装命令,并通过串口将该命令下发给下位机。


三、 下位机功能函数

cc2530的操作原理,本文不讨论,如果是其他开发板,只需要修改串口操作函数。


1. LED初始化

/****************************************************************************

* 名    称: InitLed()

* 功    能: 设置LED灯相应的IO口

* 入口参数: 无

* 出口参数: 无

****************************************************************************/

void InitLed(void)

{

    P1DIR |= 0x01;               //P1.0定义为输出口

    LED1 = 0;   

}

2. 初始化UART

/****************************************************************

* 名    称: InitUart()

* 功    能: 串口初始化函数

* 入口参数: 无

* 出口参数: 无

*****************************************************************/

void InitUart(void)

    PERCFG = 0x00;           //外设控制寄存器 USART 0的IO位置:0为P0口位置1 

    P0SEL = 0x0c;            //P0_2,P0_3用作串口(外设功能)

    P2DIR &= ~0xC0;          //P0优先作为UART0

    

    U0CSR |= 0x80;           //设置为UART方式

    U0GCR |= 11;           

    U0BAUD |= 216;           //波特率设为115200

    UTX0IF = 0;              //UART0 TX中断标志初始置位0

    U0CSR |= 0x40;           //允许接收 

    IEN0 |= 0x84;            //开总中断允许接收中断  

}


本文网址:

相关信息:
  • 没有资料
版权所有 CopyRight 2006-2017 江苏和讯自动化设备有限公司 电话:0519-85602926 地址:常州市新北区太湖东路府琛大厦2号楼307-1室,307-2室
苏ICP备14016686号-2 技术支持:常州鹤翔网络
本站关键词:常州电工培训 常州电工证 常州变频器培训 常州触摸屏培训 网站地图 网站标签
在线与我们取得联系