- 博客(78)
- 资源 (30)
- 收藏
- 关注
原创 四、Intouch中MSFlexGrid设置列宽
用MSFlexGrid控件显示数据的时候,在脚本中,不能使用控件自带的#MSFlexGrid1.ColWidth方法进行宽度设置。检测脚本,会提示期待是分号。查了比较多的资料都没有找到方案。后来成功了,分享给大家一个设定该控件初始化列宽的方法。没有用格式化字符串的方法修改列宽前的效果为:使用字符串格式化,对应的效果为:可以看到 列宽已经边宽。...
2020-03-01 21:55:48
1276
原创 三、Intouch 和 PLC进行modbus RTU通讯
上一章成功安装好MBSerial DAServer 2.5 SP2驱动自后,开始配置,intouch通过改驱动和PLC进行modbus通讯。SMC中配置驱动如下图,串口号注意选择自己电脑对应的串口就行。 在SMC中的LOG View会对modbus驱动信息进行打印,如果通讯异常,会显示异常信息。我们可以在安装的手册中,查找问题的原因。(我最早配置也出现问题,就是看手...
2020-02-07 14:55:05
9995
原创 一、INTOUCH开发环境搭建
近期接了一个信息化、自动化的项目,需要将信息化系统生成的工单,同自动化系统对接,控制设备生产。综合考虑,采用信息系统、自控系统用SQL进行数据共享,用INTOUCH做组态软件,对接PLC进行自动控制。由于本人之前主要做电子开发,对自控系统仅有生产维护经验。因此,需尽快更深入的掌握自控系统相关知识点。为了和大家分享学习经验,免去大家去网络寻找零星资料的痛苦,准备对学习过程进行记录,同各网友共享。...
2020-02-06 16:27:09
2833
原创 二、INTOUCH开发环境搭建 之 modbus驱动安装
问题描述安装的时候,会自动检测环境,然后按照必备组件。结果,按照rainbow组件的时候,一直提示错误。安装不能继续。找了很多资料,都没有解决,折腾了一下午,总算搞定。分析原因网上找资料,说是要删除之前安装了的老版本。但是,“控制面板-删除程序”中没有找到对应的程序。 折腾半天,发现在安装包“\MBSerial DAServer 2.5 SP2\Windows\Common\Safe...
2020-02-06 16:21:01
3948
原创 ESP8266 物联网开发 -- 4,AT命令进行项目开发
由于项目进度,直接开发底层比较困难,所以暂时先实现了AT指令的开发。已经实现如下功能。0,能使用微信进行智能配网。1,ESP8266和PC同时能连接到一个路由器。2,连接成功后,通过UDP广播确认对方的IP。3,UDP握手成功后,进行TCP通信。模块和PC能进行TCP通信。具体的功能和实现不走可以看下面的文档。有技术问题欢迎讨论。QQ 236106303
2017-07-23 14:31:39
1481
原创 STM8 I口模拟串口通信
使用普通的IO口,模拟串口协议, 和PC端串口调试软件实现通信。网上找了很多资料,有很多网友有些程序,但是感觉都不是很完整,无意间看到ST官方居然有实现,直接下载代码开始用。针对官方的IO口模拟串口软件,简单介绍下用到资源。由于模拟的串口RX脚,对于电平的输入判断用到定时器的输入捕获功能,所以官方用的是定时器3的通道2。我自己在STM8S003F3P6最小系统上,移植到了T
2017-03-18 14:01:11
4817
原创 ESP8266 物联网开发 -- 3,GPIO控制流水灯
直接上GPIO控制流水灯的代码, GPIO 12 13 14 配置成output,控制3个灯, 用RTOS任务中进行延时100tick进行流水/* * ESPRSSIF MIT License * * Copyright (c) 2015 * * Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 on
2017-03-04 16:39:39
8048
原创 ESP8266 物联网开发 -- 2,编译RTOS SDK 并且下载运行
搭建好环境之后,按照上一章工程移植的方法,导入官方下载的RTOS版本SDK,进行编译。分成FOTA和Non-FOTA两种模式,即是否支持在线升级。接下去直接贴图,自己测试了2种模式。主目录下的MakeFile, 其中BOOT设置成none。编译成功后,提示要下载的文件和下载地址。下载工具选择文件,并且设定下载地址。上电查看串口打印信息,可以看到编译的内容打印成功。 串口波特率在
2017-03-04 13:40:37
3600
原创 ESP8266 物联网开发 -- 1,开发环境搭建 参照安信可的的eclipse+cgwin的方案
一、环境搭建ESP8266 SDK windows平台环境搭建二、官方SDK工程导入官方下载RTOS版本的SDKESP8266_RTOS_SDK按照示例二进行配置SDK包导入具体步骤三、怕上面的连接失效,所以上传了pdf版本,方便以后查看
2017-02-28 19:36:59
2277
转载 浅谈单片机应用程序架
对于单片机程序来说,大家都不陌生,但是真正使用架构,考虑架构的恐怕并不多,随着程序开发的不断增多,本人觉得架构是非常必要的。前不就发帖与大家一起讨论了一下《谈谈怎样架构你的单片机程序》,发现真正使用架构的并不都,而且这类书籍基本没有。 本人经过摸索实验,并总结,大致应用程序的架构有三种: 1. 简单的前后台顺序执行程序,这类写法是大多数人使用的方
2016-08-01 12:44:53
957
原创 holtek bs84c12A 单片机开发总结
由于之前没有接触过holtek的单片机, 所以最近半个多月拼命加班加点项目基本上完成。从零开始到项目完成,期间遇到了一些问题,记录下来一方面方便以后自己查看,二来也方便准备使用holtek的工程师提供方便。由于我自己只负责软件,所以接下去就讲下开发环境的搭建。开发环境搭建编辑编译调试是官方的HT-IDE3000,仿真器用的Elink,单片机的程序用C开发,使用代理商提供的触摸按键库。(这些
2016-08-01 12:19:43
9066
2
原创 一、百度Iot第一印象
之前对应物联网平台比较好奇,在工作上也使用了Tlink物联网平台,实现了设备的联网。但是纠结于云平台服务商是否能提供长久、稳定的服务,所以没有在深入研究。而对于自身能力而已,重头到脚开发一套物联网云平台,能力有限。因此再三选择下,觉定试用百度的IoT物联接入平台。写下博客,一是记录学习实验过程,二是方便以后自己查看。下面主要记录自己按照百度开发者中心的帮助,今天做的实验。https://b
2016-06-04 15:05:11
3519
原创 今天遇到的栈溢出问题
在写LCD的程序,由于函数层数比较多,加上使用了KEIL的字符串处理的库函数,导致出现奇怪的现象。在函数中定义了一个字符串数组, 是局部变量,存放在栈中。程序中,修改了这个字符串数组的字符。调试已经可以确定修改成功。但是只要程序中加上字符串处理函数strcpy 或者 strcat函数, 就会导致字符数组中,的数据混乱。解决办法:可以打开.
2013-11-23 10:43:03
1476
原创 内存溢出问题
上一篇中说到使用内存分配,动态分配二维数组。在后面自己调试中,发现内存溢出问题,调式之后发现自己之前对字符串操作这快存在严重失误。比如:char*p=0;malloc(p,sizeof(20));为P分配20字节空间。分配完成后使用p="1245";这样,把字符串“1245”的首地址赋值给指针P;虽然这样可以P[0]='1',P[
2013-11-08 16:07:34
847
原创 二维数组动态分配大小
准备遍历SD卡目录下的文件,并且在LCD上显示文件名。所以需要动态调整二维字符数组的大小,用来存放文件名。方法如下。//一个二维数组指针u8 **p; //假设有10个文件u8 file_count=10;//假设最长文件名10个字符u8 maxname=10;p=(u8**)malloc(sizeof(u8*)*file_count);//申
2013-11-08 14:53:11
1102
原创 qsort排序文件名
在用FATFS读取SD卡中的文件,需要对文件名按规则排序。文件名存放在了二维字符数组中 u8 fileList[MAX_FILE_COUNT][30];//保存文件名调用stdlib.h中的qsort函数进行排序static int cmp(const void *a,const void *b){ return strcmp(( char * ) a, (const
2013-08-15 09:26:43
1345
原创 STM32 IAP 设计实例 (二)
上一篇介绍了IAP的实现。这里开始介绍主机的一个设计实例。 目标功能:STM32做主机,硬件接口主要包括SD card, USB,CAN, LCD,按键。主要功能:1,通过USB链接到PC,将用于更新的APP程序的BIN文件,放入SD中。2,STM32通过FATFS读写SD卡中的文件。3,通过CAN接口发送数据给从机。4,LCD和按键用于人机交互。 PC通过ST
2013-08-15 09:22:09
4757
原创 STM32 IAP 设计实例 (一)
项目需要,需要开发一款手持设备,对产品进行软件升级。现在的产品都是使用STM32,所以可以很方便的应用STM32的 IAP功能对软件进行在线升级。总体需求就是,主机Master通过CAN接口,发送数据给从机Slave。从机在接收到应用程序APP后,把接收的数据覆盖掉原来的应用程序区。从而实现Master对Slave的在线升级。这里先介绍IAP,对IAP的整体实现有个了解,方便后续开
2013-08-15 08:54:01
13044
1
原创 近阶段工作总结
从4月份跳槽,回到老家工作,进入新的工作环境之后由于项目比较忙,很少像之前的公司一样进行写学习总结。 进入新公司后,把之前接的私活,关于ADC数据采集,与PC通过USB bulk通信的项目了结。就进行新产品的开发。 主要针对公司的液位测量系统,从4月22号到7月13号,做了两款设备的软件。都是基于STM32+ucos的平台。通过对ucos的使用,深刻体会到跑操作系统写应用程序的方便
2013-07-15 16:50:53
1515
原创 基于STM32的USB枚举过程学习笔记(五)
接下来,主机将使用新的设备地址和设备进行通信。 主机需要再次获取设备描述符,配置描述符,字符串描述符,另外HID设备还要获取报告描述符等。根据《圈圈教你玩USB》里面介绍,我们可以使用BUS Hound工具,对主机发送给设备的数据进行抓包,分析数据包,根据USB协议完成相应的主机的请求。 在STM32 USB_HID的例子中,和以上获取描述符相关的主要文件有Usb_desc.c(定义了各
2012-11-14 11:47:10
4300
原创 基于STM32的USB枚举过程学习笔记(四)
前几篇介绍中,USB主机完成了获取设备的描述符,现在进入第二步,设置设备的地址阶段。 该阶段是一个无数据过程的控制传输。首先,在建立过程中USB主机往设备的端点0发出一个设置地址的请求,新地址在建立过程的数据包中。该事务的结构包括:SETUP0令牌包+SET_ADDRESS数据包+握手包。在建立过程之后直接进入到的状态过程,因为设置地址阶段是一个无数据过程的控制传输。在状态过程,设备等待
2012-11-14 10:21:01
5579
原创 基于STM32的USB枚举过程学习笔记(三)
上一篇介绍到了主机上电复位USB设备,在控制传输的建立过程,发送了8个字节的数据给设备,这8个字节为0x80 0x06 0x00 0x01 0x00 0x00 0x40 0x00,该请求为USB标准设备请求中的GET_DESCRIPTOR请求。0x80表示标准设备请求,数据方向是设备到主机。0x60表示请求类型GET_DESCRIPTOR。0x01表示描述符类型是设备描述符。0x40表示描述符长度
2012-11-13 17:08:21
11339
原创 基于STM32的USB枚举过程学习笔记(二)
接下来介绍USB设备的枚举,枚举就是从设备读取各种描述符信息,这样主机就可以根据这些信息来加载合适的驱动,从而知道是什么样的设备,如何进行通信。 枚举过程使用的是控制传输。控制传输可以保证数据的正确性。控制传输分三个过程:建立过程,可选数据过程及状态过程。 下面介绍枚举的详细过程。 USB主机检测到USB设备插入后,就会先对设备复位,并通过一个带数据过程的控制传输完成设备描述符
2012-11-13 11:58:50
10920
原创 基于STM32的USB枚举过程学习笔记(一)
之前使用ST官方的库以及网络的资料,完成了使用USB HID类进行STM32和PC机的通讯。由于其他原因并没有深入的分析,虽然实现了功能,但是关于USB设备的枚举,以及具体的通讯方式都没有清晰的概念,所以现在回头重新学习USB相关知识。主要参考资料是《圈圈教你玩USB》、USB枚举过程图解,ST官方的USB HID例程。一,USB数据包 1. USB数据包分类 US
2012-11-13 10:44:06
10425
转载 KEIL 中 RO RW ZI 段的含义
要了解RO,RW和ZI需要首先了解以下知识:ARM程序的组成此处所说的“ARM程序”是指在ARM系统中正在执行的程序,而非保存在ROM中的bin映像(image)文件,这一点清注意区别。一个ARM程序包含3部分:RO,RW和ZIRO是程序中的指令和常量RW是程序中的已初始化变量ZI是程序中的未初始化的变量由以上3点说明可以理解为:RO就是readonly,RW就
2012-10-25 10:22:50
1980
原创 Linux设备驱动开发学习(1)--字符设备驱动
前段时间开始学习linux设备驱动开发,主要参考资料>和韦东山的视频教程。这篇文章主要总结Linux设备驱动的内核模块和字符设备的驱动结构,同时在驱动程序中使用udev的功能自动创建多个主设备号相同,不同次设备号的设备节点提供应用程序访问设备,最后介绍一个网上找的通用的Makefile模板来编译驱动以及测试程序的编写。一、Linux内核模块介绍 Linux内核模块主要由以下几
2012-08-31 18:18:29
1346
转载 DNW应用程序错误,DNW错误问题解决
三星的USB驱动一直不是很稳定,有时候调2450,6410的时候,经常会把桌面系统搞得蓝屏。严重的时候,DNW都无法打开,提示DNW应用程序错误。很多人被难在这里了,只能重装系统。其实并不用重装系统,只用把C盘的DNW.ini文件删掉就OK了。
2012-08-27 19:16:49
739
原创 TQ2440 Uboot的USB下载修改
准备学习下UBoot,下载了个TQ2440的UBoot,准备使用他的USB下载功能。但是TQ2440的UBoot中usb_slave只给出了编译好的二进制文件,看着极其不爽,所以准备移植下usbslave。下面列出具体步骤,参考了网上的文章。 1,下载usbslave的源代码,上传做个备份。点我下载 下载后将其解压到uboot的driver的目录。使用tar -jvxf 命令解压。解压后
2012-08-20 11:17:44
3299
原创 Cortex-M3 (NXP LPC1788)之IIS应用--UDA1380进行音频数据播放
LPC1788发送到I2S总线上的音频数据要通过音频解码芯片才能输出模拟音频信号。开发板上使用的是UDA1380,对它的寄存器的配置可以通过L3总线或者I2C总线进行,这里使用I2C总线进行控制,对于I2C总线的操作可以参考之前I2C的介绍。UDA1380的寄存器主要分成3类,系统控制、插值滤波(interpolation filter)、抽取滤波(decimator filter)。插值滤波和D
2012-07-25 12:11:55
4169
原创 Cortex-M3 (NXP LPC1788)之IIS控制器
I2S总线为数字音频应用提供了一个标准的通信接口。它是一条3线串行总线,包含串行数据SD、字选择WS、串行时钟SCK。LPC1788的I2S接口提供了彼此独立的发送和接收通道,每个通道可以作为主机或从机,还提供了可选的过采样主机时钟输出MCLK。因此发送和接收通道各有四个引脚,对于发送为I2S_TX_CLK、I2S_TX_WS、I2S_TX_SDA、I2S_TX_MCLK。I2S的时序如图1。
2012-07-25 09:51:49
2335
转载 I2S协议
I2S(InterIC Sound Bus)是飞利浦公司针对数字音频设备之间的音频数据传输而制定的一种总线标准,采用沿独立的导线传输时钟与数据信号的设计,通过分离数据和时钟信号,避免了时差诱发的失真。I2S总线简单有效,可以有效提升输出数据的质量,在各种嵌入式音频系统中有广泛应用。 I2S为三线总线,3个信号分别为: ① 串行时钟SCK,也叫位时钟(BCK)。即每发送
2012-07-25 09:14:35
4524
原创 Cortex-M3 (NXP LPC1788)之IIC应用--PCA9532进行IO扩展和LED亮度控制
PCA9532是一个I2C接口的设备,可以用于IO的扩展和LED的亮度调节。它内部集成了振荡器,可以输出2路用户可编程的PWM波,周期从6.58ms到1.69S。16路的输出,可以设置成输出高低电平以及PWM波输出。 做为从设备,他的8位地址的高四位固定为1100,最低位为数据的方向位,剩下的3位有硬件连线确定他的地址。PCA9532共有10个寄存器来配置他的输出状态。其
2012-07-13 17:29:37
3759
4
原创 Cortex-M3 (NXP LPC1788)之IIC控制器
I2C通信协议在上篇文章中进行了介绍,下面对LPC1788的I2C控制器进行分析。要使用I2C模块,需要配置相应的寄存器,如功率、时钟、管脚等。以I2C0为例,配置P0.27和P0.28管脚分别为SDA和SCL功能,在PCONP中使能I2C0功率控制,根据PCLK和要使用的I2C的频率设置SCLH和SCLL。 I2C模块可以工作在主发送、主接收、从发送、从接收四种工作模式。开发板
2012-07-13 16:40:37
2517
转载 I2C协议
对于嵌入式开发的朋友来说,I2C协议实在是再熟悉不过了,有太多的器件,采用的都是通过I2C来进行相应的设置。今天,我们就随便聊聊这个I2C协议。 I2C协议中最重要的一点是I2C地址。这个地址有7位和10位两种形式。7位能够表示127个地址,而在实际使用中基本上不会挂载如此多的设置,所以很多设备的地址都采用7位,所以本文接下来的说明都是基于此。 I2C还有一个很
2012-07-11 11:44:51
1071
原创 Cortex-M3 (NXP LPC1788)之EEPROM存储器
EEPROM是一种非易失性存储器,主要用于存储相对少量的数据,如存储一些系统的配置信息。通过系统的EEPROM控制模块可以轻松的进行EERPOM的存储控制。 要正确使用EPPROM需要配置掉电寄存器EEPWRDWN确定EEPROM的工作模式,配置EEPROM时钟分频器寄存器,使EPPROM工作在375KHZ。下面对EPPROM的读和写数据进行介绍。 EEPROM
2012-07-09 15:38:40
5385
转载 数字地和模拟地的区别
AVCC:模拟部分电源供电;AGND:模拟地 DVCC:数字部分电源供电;DGND:数字地 这样区分是为了将数字部分和模拟部分隔离 开,减小数字部分带给模拟电路部分的干扰。但这两部分不可能完全隔离开,数字部分和模拟部分之间是有连接的所以,在供电时至少地应该是在一起的,所以 AGND和DGND之间要用0欧姆的电阻或磁珠或电感连接起来,这样的一点连接就能够减小干扰。
2012-07-05 17:03:36
5482
原创 Cortex-M3 (NXP LPC1788)之ADC数模转换器的应用
A/D转换器的功能是将模拟输入信号采样得到可以提供计算机进行处理的数字信号。LPC1788的ADC是一个12位的逐次逼近型模数转换器,有8个复用的输入管脚,它的时钟使用PCLK分频得到。开发板的A/D输入模块电路图如下 要使用ADC转换,也要配置PCONP寄存器,配置ADC的时钟以及管脚和中断等。
2012-07-05 14:21:59
8054
原创 Cortex-M3 (NXP LPC1788)之WDT窗口看门狗定时器
看门狗定时器的用途是在微控制器进入错误状态后的一段合理时间内将其复位。看门狗被是能后,如果用户没有在预先设定的时间内喂狗,那么会产生一个看门狗事件。 看门狗定时器的寄存器有看门狗定时器常数计数器WDTC,每当在喂狗寄存器WDFEED中写入喂狗序列,WDTC中的值就会被写入看门狗定时计数器WDTV,WDTV中的值在看门狗时钟的驱动下递减。我们可以通过设置看门狗定时器报警中断寄存器W
2012-07-03 19:08:30
4765
intouch集成MB驱动.rar
2020-02-06
USB口读取SD卡
2013-08-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人