当前位置:文档之家› STM32的can总线实验心得

STM32的can总线实验心得

STM32的can总线实验心得
STM32的can总线实验心得

STM32的can总线实验心得

(一) 工业现场总线 CAN 的基本介绍以及 STM32 的 CAN 模块简介

首先通读手册中关于CAN的文档,必须精读。

STM32F10xxx 参考手册Rev7V3.pdf

https://www.doczj.com/doc/a012214269.html,/bbs/redirect.php?tid=255&goto=lastpost#lastpos t

需要精读的部分为 RCC 和 CAN 两个章节。

为什么需要精读 RCC 呢?因为我们将学习 CAN 的波特率的设置,将要使用到RCC 部分的设置,因此推荐大家先复习下这部分中的几个时钟。

关于 STM32 的 can 总线简单介绍

bxCAN 是基本扩展 CAN (Basic Extended CAN) 的缩写,它支持 CAN 协议 2.0A 和 2.0B 。它的设计目标是,以最小的 CPU 负荷来高效处理大量收到的报文。它也支持报文发送的优先级要求(优先级特性可软件配置)。

对于安全紧要的应用,bxCAN 提供所有支持时间触发通信模式所需的硬件功能。

主要特点

· 支持 CAN 协议 2.0A 和 2.0B 主动模式

· 波特率最高可达 1 兆位 / 秒

· 支持时间触发通信功能

发送

· 3 个发送邮箱

· 发送报文的优先级特性可软件配置

· 记录发送 SOF 时刻的时间戳

接收

· 3 级深度的2个接收 FIFO

· 14 个位宽可变的过滤器组-由整个 CAN 共享

· 标识符列表

· FIFO 溢出处理方式可配置

· 记录接收 SOF 时刻的时间戳

可支持时间触发通信模式

· 禁止自动重传模式

· 16 位自由运行定时器

· 定时器分辨率可配置

· 可在最后 2 个数据字节发送时间戳

管理

· 中断可屏蔽

· 邮箱占用单独 1 块地址空间,便于提高软件效率

(二) STM32 CAN 模块工作模式

STM32 的 can 的工作模式分为:

/* CAN operating mode */

#define CAN_Mode_Normal ((u8)0x00) /* normal mode */

#define CAN_Mode_LoopBack ((u8)0x01) /* loopback mode */

#define CAN_Mode_Silent ((u8)0x02) /* silent mode */

#define CAN_Mode_Silent_LoopBack ((u8)0x03) /* loopback combined with silent mode */

在此章我们的 Mini-STM32 教程中我们将使用到CAN_Mode_LoopBack和

CAN_Mode_Normal两种模式。

我们第一步做的就是使用运行在 CAN_Mode_LoopBack 下进行自测试。

在参考手册中 CAN_Mode_LoopBack (环回模式) 的定义如下:

环回模式可用于自测试。为了避免外部的影响,在环回模式下 CAN 内核忽略确认错误 (在数据 / 远程帧的确认位时刻,不检测是否有显性位) 。在环回模式下,bxCAN 在内部把 Tx 输出回馈到 Rx 输入上,而完全忽略 CANRX 引脚的实际状态。发送的报文可以在 CANTX 引脚上检测到。

因此这种模式也特别适合大家做好硬件后自测程序。

下载(37.38 KB)

2009-8-16 11:46

(三) CAN 接口端口映射

STM32 中的 CAN 物理引脚脚位可以设置成三种:

默认模式,重定义地址1模式,重定义地址2模式

下载(28.94 KB)

2009-8-16 11:51

在我们的 Mini-STM32 上面没有接出 CAN 的接口芯片, 所以我们可以利用RealView MDK

的 CAN 软件

模拟

模块来做实验.

-------------------------------------------------------------------------

默认模式

/* Configure CAN pin: RX */

GPIO

_InitStructure.GPIO_Pin = GPIO_Pin_11;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;

GPIO_Init(GPIOA, &GPIO_InitStructure);

/* Configure CAN pin: TX */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOA, &GPIO_InitStructure);

------------------------------------------------------------------------

重定义地址1模式

/* Configure CAN pin: RX */

//GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;

//GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

//GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;

//GPIO_Init(GPIOB, &GPIO_InitStructure);

/* Configure CAN pin: TX */

//GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;

//GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

//GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

//GPIO_Init(GPIOB, &GPIO_InitStructure);

/* Configure CAN Remap 重影射 */

//GPIO_PinRemapConfig(GPIO_Remap1_CAN, ENABLE);

-------------------------------------------------------------------------

重定义地址2模式

/* Configure CAN pin: RX */

//GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;

//GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

//GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;

//GPIO_Init(GPIOD, &GPIO_InitStructure);

/* Configure CAN pin: TX */

//GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;

//GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

//GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

//GPIO_Init(GPIOD, &GPIO_InitStructure);

/* Configure CAN Remap 重影射 */

//GPIO_PinRemapConfig(GPIO_Remap2_CAN, ENABLE);

-------------------------------------------------------------------------

设置完 CAN 的引脚之后还需要打开 CAN 的时钟:

/* CAN Periph clock enable */

RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN, ENABLE);

(四) CAN 波特率设置

4、我们需要搞明白CAN波特率的设置,这个章节也是使用CAN的最重要的部分之一,因为这实际应用中我们需要根据我们实际的场合来选择 CAN 的波特率。

一般情况下面1M bps 的速率下可以最高可靠传输 40 米以内的距离。

在 50K 以下的波特率中一般可以可靠传输数公里远。

对于波特率的设置需要详细学习参考手册对应部分的解释。我们在调试软件的时候可以使用示波器来测试 CANTX 引脚上的波形的波特率,这样可以得到事半功倍的效果,大大的缩短调试学习的时间。

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

// BaudRate = 1 / NominalBitTime

// NominalBitTime = 1tq + tBS1 + tBS2

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

// tPCLK = CAN's clock = APB1's clock

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

也就是BaudRate = APB1 / ((BS1 + BS2 + 1) * Prescaler)

这里注意的是采用点的位置,也就时BS1,BS2的设置问题,这里我也找了一些资料,抄录下来给大家,是 CANopen 协议中推荐的设置。

1Mbps 速率下,采用点的位置在6tq位置处,BS1=5, BS2=2

500kbps 速率下,采用点的位置在8tq位置处,BS1=7, BS2=3

250kbps 速率下,采用点的位置在14tq位置处,BS1=13, BS2=2

125k, 100k, 50k, 20k, 10k 的采用点位置与 250K 相同。

因此我们需要重视的有软件中的这么几个部分:

// 设置 AHB 时钟(HCLK)

// RCC_SYSCLK_Div1 AHB 时钟 = 系统时钟

RCC_HCLKConfig(RCC_SYSCLK_Div8);

// 设置低速 AHB 时钟(PCLK1)

// RCC_HCLK_Div2 APB1 时钟 = HCLK / 2

RCC_PCLK1Config(RCC_HCLK_Div2);

// PLLCLK = 8MHz * 8 = 64 MHz

// 设置 PLL 时钟源及倍频系数

RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_8);

CAN 波特率设置中需要的就是PCLK1 的时钟。

CAN_InitStructure.CAN_Mode=CAN_Mode_LoopBack;

CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;

CAN_InitStructure.CAN_BS1=CAN_BS1_8tq;

CAN_InitStructure.CAN_BS2=CAN_BS2_7tq;

CAN_InitStructure.CAN_Prescaler=5;

通过上面部分的时钟设置我们已经可以算出我们的波特率了

CAN_bps = PCLK1 / ((1 + 7 + 8) * 5) = 25K bps

大家也可以实际测试中修改时钟值来通过示波器测试我们需要的波特率是否正确例如将PLLCLK 设置降低一半:

// PLLCLK = 8MHz * 4 = 32 MHz

// 设置 PLL 时钟源及倍频系数

RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_4);

那么我们得到的CAN_bps也会降低一半。

接下来还可以修改 HCLK 和 PCLK1 ,其实最终这几个分频和倍频值最终影响的都是 PCLK1。

通过几次试验,相信大家应该很容易掌握波特率的设置了。

设置完波特率我们直接测试函数:

/* CAN transmit at 100Kb/s and receive by polling in loopback mode*/ TestRx = CAN_Polling();

if (TestRx == FAILED)

{

/* Turn on led connected to PA.00 pin (LD1) */

GPIO_SetBits(GPIOA, GPIO_Pin_0);

}

else

{

/* Turn off led connected to PA.00 pin (LD1) */

GPIO_ResetBits(GPIOA, GPIO_Pin_0);

}

/* CAN transmit at 500Kb/s and receive by interrupt in loopback mode*/ TestRx = CAN_Interrupt();

if (TestRx == FAILED)

{

/* Turn on led connected to PA.01 pin (LD2) */

GPIO_SetBits(GPIOA, GPIO_Pin_1);

}

else

{

/* Turn off led connected to PA.01 pin (LD2) */

GPIO_ResetBits(GPIOA, GPIO_Pin_1);

CAN 软件仿真模拟器

调用出来.

下载(61.84 KB)

2009-8-16 00:27

大家可以仿真程序,当程序中 Test 等于 Passed 那么说明 Loopback 模式测试通过了。

并且在 CAN 通讯框中我们可以看到发送和接收到的数据:

下载(51.48 KB)

2009-8-16 12:27

回循模式下的源代码, 基于 MDK3.5:

Example7.1-CAN LoopBack Mode.rar

(493.79 KB)

下载次数: 83

阅读权限: 10

2009-8-16 12:35

到此时说明如果大家只有一块CAN模块的时候学习可以告一个段落了,不过这个并不代表大家就已经掌握了 CAN 了,正真要掌握它,大家还是需要看大量的 CAN 部分的资料,参考手册部分的也是不够的,市面上有几本专门介绍现场总线和CAN总线的书,推荐大家买来经常翻翻看看,这样到需要实际应用的时候才可以做到如鱼得水。

(五) 正常模式

完成了 loopback 模式的测试之后接下来我们需要学习的就是多机通讯了,当然由于我们的 Mini-STM32 没有将 CAN 接口引出来, 所以我们没有办法在板子上面做这部分的试验了,只能在 RealView MDK 的软件中进行模拟。

如果您拥有两块带 CAN 硬件的 STM32 的板子,您需要自己构建硬件的物理层的连接, 使用三根线将 CANH,CANL,GND 三根线直连,当然你要接好终端电阻才能保证通讯的正常通讯,当两块板子都跳好后我们使用万用表测量下 CANH和CANL 之间的电阻是否为 60 欧姆。多块板子多机通讯的是否你只需要在总线的主机端和最后一端接上终端电阻就可以了.

下载(24.18 KB)

2009-8-15 23:11

在初始化完成后,软件应该让硬件进入正常模式,以便正常接收和发送报文。软件可以通过对 CAN_MCR 寄存器的INRQ位清 '0',来请求从初始化模式进入正常模式,然后要等待硬件对 CAN_MSR 寄存器的 INAK 位置 '1' 的确认。在跟 CAN 总线取得同步,即在 CANRX 引脚上监测到 11 个连续的隐性位 (等效于总线空闲) 后,bxCAN 才能正常接收和发送报文。

不需要在初始化模式下进行过滤器初值的设置,但必须在它处在非激活状态下完成 (相应的 FACT 位为 '0' ) 。而过滤器的位宽和模式的设置,则必须在初始化模式中进入正常模式前完成。

准备工作做完我们需要设置 CAN 通讯部份软件。

我们把 TestStatus CAN_Polling(void) 函数和 TestStatus

CAN_Interrupt(void) 函数中的 LoopBack 模式修改为 Normal 模式.

//CAN_InitStructure.CAN_Mode=CAN_Mode_LoopBack;

CAN_InitStructure.CAN_Mode=CAN_Mode_Normal;

接下来我们就可以做实验了. 但是由于 RealView MDK 的 CAN 模块没有办法接收, 所以我们只做发送的例子.

我们的例子中分别发送两帧数据:

(1) TestStatus CAN_Polling(void) 查询发送

第一帧数据为: ID 为 0x11, 数据为 8 个字节的一个数据包.

TxMessage.StdId=0x11;

TxMessage.RTR=CAN_RTR_DATA;

TxMessage.IDE=CAN_ID_STD;

TxMessage.DLC=8;

TxMessage.Data[0]=0x01;

TxMessage.Data[1]=0x02;

TxMessage.Data[2]=0x03;

TxMessage.Data[3]=0x04;

TxMessage.Data[4]=0x05;

TxMessage.Data[5]=0x06;

TxMessage.Data[6]=0x07;

TxMessage.Data[7]=0x08;

(2) TestStatus CAN_Interrupt(void) 中断发送

第二帧数据为:ID 为 0x1234, 数据为 8 个字节的一个数据包.

TxMessage.StdId=0x12;

TxMessage.ExtId=0x34;

TxMessage.IDE=CAN_ID_EXT;

TxMessage.RTR=CAN_RTR_DATA;

TxMessage.DLC=8;

TxMessage.Data[0]=0x11;

TxMessage.Data[1]=0x22;

TxMessage.Data[2]=0x33;

TxMessage.Data[3]=0x44;

TxMessage.Data[4]=0x55;

TxMessage.Data[5]=0x66;

TxMessage.Data[6]=0x77;

TxMessage.Data[7]=0x88;

CAN_Transmit(&TxMessage);

在主函数中初始化之后加上这两句发送函数:

/* CAN transmit at 100Kb/s and receive by polling in Normal mode*/ CAN_Polling();

while(i++ < 1000);

/* CAN transmit at 500Kb/s and receive by interrupt in Normal mode*/ CAN_Interrupt();

程序改完了, 我们需要编译通过后, 点软件仿真.

CAN 软件仿真模拟器

调用出来.

接下来我们全速运行到 while(1) 就可以看到结果了.

下载(87.37 KB)

2009-8-16 00:24

基于STM32F103嵌入式实验指导书

实验一、STM32的开发环境与简单工程 一、实验目的 1、熟悉STM32开发板的开发环境; 2、熟悉MDK创建和配置STM32工程项目的基本流程; 3、熟悉STM32官方库的应用; 4、规范编程格式。 二、实验内容 本次实验配置MDK集成开发环境,新建一个简单的工程文件,添加STM32官方库并配置工程,编译运行这个工程文件。下载已经编译好的文件到开发板中运行。学会在程序中设置断点,观察系统内存和变量,为调试应用程序打下基础。 三、预备知识 基本单片机硬件知识、单片机软件编程语言、程序创建和调试的基本方法。 四、实验设备及工具 硬件:STM32开发平台 软件:STM32官方库;PC机操作系统Windows 98、Windows 2000或Windows XP;KEIL MDK 集成开发环境;串口转usb驱动。 五、实验步骤 1、在准备存放工程文件的目录下创建一新文件夹,命名为Proj_GPIO;在Proj_GPIO 文件夹里面分别再创建四个文件夹:CMSIS、USER、LIB、OBJ。如图1。 其中CMSIS(Cortex Microcontroller Software Interface Standard)用于存放Cortex-M 处理器系列的与供应商无关的软件抽象层和启动相关的代码文件; USER用于存放我们自己编写的代码文件(含自己移植的底层驱动),还有MDK工程; LIB存放所有的官方底层驱动库文件; OBJ用于工程输出的过程文件和最终的二进制文件。 图1

2、将官方库STM32F10x_StdPeriph_Lib_V3.5.0.rar解压。 1)把STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport下的所有文件和STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x 下的所有文件都到第一步所创建的CMSIS文件夹中; 2)把STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver目录下的文件(目录inc和scr)复制到第一步创建的LIB文件夹中; 3)把STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template目录下的stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h三个文件复制到USER文件夹中。 3、打开MDK软件,新建一个工程Proj_GPIO保存到Proj_GPIO/USER中。CPU选择STM32F103ZE,如图2; 图2 4、新建一个空文档main.c保存到USER中,然后根 据绝对路径将文件对应添加到工程中,如右图。 5、配置工程属性,右键点击工程文件中的Target 1选择Options for Target ‘Target 1’打开工程选项对话框。做如下修改: 1)Output选项勾选Create HEX File,然后点击Select Folder for Objects按钮定位输出文件保存目录到工程的OBJ文件; 2)Listing选项,同样点击Select Folder for Listings定位输出文件保存目录到工程的OBJ 文件; 3)C/C++选项,Define中填入 STM32F10X_HD, USE_STDPERIPH_DRIVER系统的两个基 本宏定义;配置Include Paths属性,加入工 程中包含头文件的目录;如右图

STM32的can总线实验心得要点

STM32的can总线实验心得 (一) 工业现场总线 CAN 的基本介绍以及 STM32 的 CAN 模块简介 首先通读手册中关于CAN的文档,必须精读。 STM32F10xxx 参考手册Rev7V3.pdf https://www.doczj.com/doc/a012214269.html,/bbs/redirect.php?tid=255&goto=lastpost#lastpos t 需要精读的部分为 RCC 和 CAN 两个章节。 为什么需要精读 RCC 呢?因为我们将学习 CAN 的波特率的设置,将要使用到RCC 部分的设置,因此推荐大家先复习下这部分中的几个时钟。 关于 STM32 的 can 总线简单介绍 bxCAN 是基本扩展 CAN (Basic Extended CAN) 的缩写,它支持 CAN 协议 2.0A 和 2.0B 。它的设计目标是,以最小的 CPU 负荷来高效处理大量收到的报文。它也支持报文发送的优先级要求(优先级特性可软件配置)。 对于安全紧要的应用,bxCAN 提供所有支持时间触发通信模式所需的硬件功能。 主要特点 · 支持 CAN 协议 2.0A 和 2.0B 主动模式 · 波特率最高可达 1 兆位 / 秒 · 支持时间触发通信功能 发送 · 3 个发送邮箱 · 发送报文的优先级特性可软件配置 · 记录发送 SOF 时刻的时间戳 接收 · 3 级深度的2个接收 FIFO · 14 个位宽可变的过滤器组-由整个 CAN 共享 · 标识符列表 · FIFO 溢出处理方式可配置 · 记录接收 SOF 时刻的时间戳 可支持时间触发通信模式 · 禁止自动重传模式 · 16 位自由运行定时器 · 定时器分辨率可配置 · 可在最后 2 个数据字节发送时间戳 管理 · 中断可屏蔽

CAN总线通讯实验

CAN总线通讯实验 一、实验目的 1.掌握UP-NetARM2410经典版上的CAN总线通讯原理。 2.学习编程实现MCP2510的CAN总线通讯。 3.掌握查询模式的CAN总线通讯程序的设计方法。 二、实验内容 学习CAN总线通讯原理,了解CAN总线的结构,阅读CAN控制器MCP2510的芯片文档,掌握MCP2510的相关寄存器的功能和使用方法。编程实现UP-NetARM2410-CL之间的CAN总线通讯: 两个UP-NetARM2410-CL通过CAN总线相连接。ARM监视串行口,将接收到的字符发送给另一个开发板并通过串口显示(计算机与开发板是通过超级终端通讯的)。即按PC 键盘通过超级终端发送数据,开发板将接收到的数据通过CAN总线转发,再另一个PC的超级终端上显示数据。 三、预备知识 1、用EW ARM集成开发环境,编写和调试程序的基本过程。 2、ARM应用程序的框架结构。 3、会使用Source Insight 3 编辑C语言源程序。 4、了解CAN总线。 四、实验设备及工具 硬件:ARM嵌入式开发平台、用于ARM920T的JTAG仿真器、PC机Pentium100以上,CAN通讯电缆。 软件:PC机操作系统Win2000或WinXP、EW ARM集成开发环境、仿真器驱动程序、超级终端通讯程序 五、实验原理及说明 1.CAN总线概述

CAN全称为Controller Area Network,即控制器局域网,是国际上应用最广泛的现场总线之一。最初,CAN总线被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。比如,发动机管理系统、变速箱控制器、仪表装备、电子主干系统中均嵌入CAN控制装置。 一个由CAN总线构成的单一网络中,理论上可以挂接无数个节点。但是,实际应用中节点数目受网络硬件的电气特性所限制。例如,当使用Philips P82C250 作为CAN 收发器时,同一网络中允许挂接110个节点。 CAN可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力。 CAN的主要优点包括: ◆低成本 ◆极高的总线利用率 ◆很远的数据传输距离(长达10公里) ◆高速的数据传输速率(高达1Mbit/s) ◆可根据报文的ID决定接收或屏蔽该报文 ◆可靠的错误处理和检错机制 ◆发送的信息遭到破坏后可自动重发 ◆节点在错误严重的情况下具有自动退出总线的功能 ◆报文不包含源地址或目标地址仅用标志符来指示功能信息优先级 2.CAN总线的电气特性 CAN能够使用多种物理介质进行传输,例如:双绞线、光纤等。最常用的就是双绞线。信号使用差分电压传送,两条信号线被称为CAN_H和CAN_L,静态时均是2.5V左右,此时状态表示为逻辑1也可以叫做“隐性”。用CAN_H比CAN_L高表示逻辑0,称为“显性”。此时,通常电压值为CAN_H=3.5V和CAN_L=1.5V。当“显性”位和“隐性”位同时发送的时候,最后总线数值将为“显性”。这种特性,为CAN总线的总裁奠定了基础。 CAN总线的一个位时间可以分成四个部分:同步段,传播段,相位段1和相位段2,每段的时间份额的数目都是可以通过CAN总线控制器(比如MCP2510)编程控制的,而时间份额的大小tq由系统时钟tsys和波特率预分频值BRP决定:tq=BRP/tsys。如下图所示: 图9-1 CAN总线的一个位时间 上述四个部分的设定和CAN总线的同步、仲裁等信息有关,请读者参考CAN总线方面的相关资料。

课程设计实验报告 北邮

课程设计实验报告 -----物联网实验 学院:电子工程学院班级:2011211204 指导老师:赵同刚

一.物联网概念 物联网是新一代信息技术的重要组成部分。物联网的英文名称叫“The Internet of things”。顾名思义,物联网就是“物物相连的互联网”。这有两层意思:第一,物联网的核心和基础仍然是互联网,是在互联网的基础上延伸和扩展的网络;第二,其用户端延伸和扩展到了任何物体与物体之间,进行信息交换和通信。因此,物联网的定义是:通过射频识别(RFID)、红外感应器、全球定位系统、激光扫描器等信息传感设备,按约定的协议,把任何物体与互联网相连接,进行信息交换和通信,以实现对物体的智能化识别、定位、跟踪、监控和管理的一种网络。 二.物联网作用 现有成熟的主要应用包括: —检测、捕捉和识别人脸,感知人的身份; —分析运动目标(人和物)的行为,防范周界入侵; —感知人的流动,用于客流统计和分析、娱乐场所等公共场合逗留人数预警; —感知人或者物的消失、出现,用于财产保全、可疑遗留物识别等; —感知和捕捉运动中的车牌,用于非法占用公交车道的车辆车牌捕捉; —感知人群聚集状态、驾驶疲劳状态、烟雾现象等各类信息。 三.物联网无线传感(ZigBee)感知系统 ZigBee是一种新兴的短距离、低功耗、低数据速率、低成本、低复杂度的无线网络技术。ZigBee在整个协议栈中处于网络层的位置,其下是由IEEE 802.15.4规范实现PHY(物理层)和MAC(媒体访问控制层),对上ZigBee提供了应用层接口。 ZigBee可以组成星形、网状、树形的网络拓扑,可用于无线传感器网络(WSN)的组网以及其他无线应用。ZigBee工作于2.4 GHz的免执照频段,可以容纳高达65 000个节点。这些节点的功耗很低,单靠2节5号电池就可以维持工作6~24个月。除此之外,它还具有很高的可靠性和安全性。这些优点使基于ZigBee的WSN广泛应用于工业控制、消费性电子设备、汽车自动化、家庭和楼宇自动化、医用设备控制等。 ZigBee的基础是IEEE802.15.4,这是IEEE无线个人区域网工作组的一项标准,被称作IEEE802.15.4(ZigBee)技术标准。ZigBee不仅只是802.15.4的名字。IEEE仅处理低级MAC

计算机组成原理存储器读写和总线控制实验实验报告

信息与管理科学学院计算机科学与技术 实验报告 课程名称:计算机组成原理 实验名称:存储器读写和总线控制实验 学号: 姓名: 班级:实验室:组成原理实验室指导教师:日期: 2013-11-22

一、实验目的 1、掌握半导体静态随机存储器RAM的特性和使用方法。 2、掌握地址和数据在计算机总线的传送关系。 3、了解运算器和存储器如何协同工作。 二、实验环境 EL-JY-II型计算机组成原理实验系统一套,排线若干。 三、实验内容 学习静态 RAM的存储方式,往 RAM的任意地址里存放数据,然后读出并检查结果是否正确。 四、实验操作过程 开关控制操作方式实验 注:为了避免总线冲突,首先将控制开关电路的所有开关拨到输出高电平“ 1”状态,所有对应的指示灯亮。 本实验中所有控制开关拨动,相应指示灯亮代表高电平“ 1”,指示灯灭代表低电平“ 0”。连线时应注意:对于横排座,应使排线插头上的箭头面向自己插在横排座上;对于竖排座,应使排线插头上的箭头面向左边插在竖排座上。 1、按图 3-1 接线图接线: MDJ1MDJ2MAJ1 BD15,,BD8BD7,,BD0 主存储器电路 AD7,,AD0 WE 数据总线 CE地址总线 DIJ2DIJ1 WR CE 微控器接口控 控 DIJ-G 制WE WEI 数据输入电路制 总 开 线LAR LARI 关 fin f/8T3 C-G 脉冲源T3 图 3- 1 实验三开关实验接线 2、拨动清零开关CLR,使其指示灯显示状态为亮—灭—亮。 3、往存储器写数据:

以往存储器的( FF)地址单元写入数据“ AABB”为例,操作过程如下: (操作 )(显示 )(操作 ) 1.C –G=1 https://www.doczj.com/doc/a012214269.html,R=1 2.置数据输入电路绿色数据总线显 D15—D0=示灯显示 2.T3=1 “ 000000001111“ 000000001111(按【单步】)1111”1111” 3.CE=1 4.C-G=0(显示 ) 地址寄存器 电路黄色地 址显示灯显 示 ―11111111 ‖ (操作 ) 1.C-G=1 2.置数据输入电路 D15 —D0= “ 10101010101110 11” https://www.doczj.com/doc/a012214269.html,R=0 4.C-G=0 (显示 )(操作 ) 1.WE=1 绿色数据总线显 2.CE=0 示灯显示 3.T3=1 “ 1010101010111(按【单步】 ) 011” 4 WE=0 4、按上述步骤按表3- 2 所列地址写入相应的数据 地址(二进制)数据(二进制) 000000000011001100110011 011100010011010000110100 010000100011010100110101 010110100101010101010101 101000110110011001100110 110011111010101110101011 111110000111011101110111 111001101001110110011011 表 3-2 5、从存储器里读数据: 以从存储器的( FF)地址单元读出数据“ AABB”为例,操作过程如下: (操作 )(显示 )(操作 ) 1.C-G=1 https://www.doczj.com/doc/a012214269.html,R=1 2. 置数据输入电路绿色数据总线显 D15—D0=示灯显示 2.T3=1 "0000000011111111”―0000000011111(按【单步】) 3.CE=1111” 4.C-G=0 (显示 ) MAR电路黄 色地址显示 灯显示 ―11111111 ‖ (操作 )(显示 ) 1.C-G=1 https://www.doczj.com/doc/a012214269.html,R=0绿色数据总线显 3.WE=0示灯显示 4.CE=0“ 1010101010111 011” 6、按上述步骤读出表3-2 数据,验证其正确性。 五、实验结果及结论 通过按照实验的要求以及具体步骤,对数据进行了严格的检验,结果是正确的,具体数据如图所示:

计算机组成原理实验三-存储器读写和总线控制实验

《计算机组成原理》 实验报告 实验三存储器读写和总线控制实验

一、实验目的 1、掌握半导体静态随机存储器 RAM 的特性和使用方法。 2、掌握地址和数据在计算机总线的传送关系。 3、了解运算器和存储器如何协同工作。 二、实验环境 EL-JY-II 型计算机组成原理实验系统一套,排线若干。 三、实验内容与实验过程及分析(写出详细的实验步骤,并分析实验结果) 实验步骤: 开关控制操作方式实验 注:为了避免总线冲突,首先将控制开关电路的所有开关拨到输出高电平“1”状态,所有对应的指示灯亮。 本实验中所有控制开关拨动,相应指示灯亮代表高电平“1”,指示灯灭代表低电平“0”。连线时应注意:对于横排座,应使排线插头上的箭头面向自己插在横排座上;对于竖排座,应使排线插头上的箭头面向左边插在竖排座上。 1、按图 3-5 接线图接线: 2、拨动清零开关 CLR,使其指示灯显示状态为亮—灭—亮。 3、往存储器写数据: 以往存储器的(FF)地址单元写入数据“AABB”为例,操作过程如下:

4、按上述步骤按表 3-2 所列地址写入相应的数据 5、从存储器里读数据: 以从存储器的(FF)地址单元读出数据“AABB”为例,操作过程如下: 6、按上述步骤读出表 3-2 数据,验证其正确性。 实验线路图如下所示

四、实验总结(每项不少于20字) 存在问题:由于对操作系统不熟悉和本实验对线路需求大,排线出现错误;读取数据时也出现错误。 解决方法:在实验之前检查线路,发现错误及时纠错;将读取错误的数据进行重新存储,再验证查询。 收获:了解了半导体静态随机存储器RAM的特性和使用方法、地址和数据在计算机总线的传送关系。 五、教师批语

单片机STM32实验报告

实验报告 课程名称:单片微机原理与车载系统 学生姓名蒋昭立 班级电科1601 学号16401700119 指导教师易吉良 成绩 2018年12月17日

实验1 GPIO实验 1.1 实验目的 1)熟悉MDK开发环境; 2)掌握STM32单片机的GPIO使用方法。 1.2 实验设备 1)一台装有Keil和串口调试软件的计算机; 2)一套STM32F103开发板; 3)STlink硬件仿真器。 1.3基本实验内容 1)熟悉MDK开发环境,参考《STM32F1开发指南(精英版)-寄存器版本_V1.0》第3章,安装MDK 并新建test工程,运行例程,在串口窗宽观察结果,并记录如下: 从图片可以看出,例程运行成功,没有错误。 2)按键输入实验,《STM32F1开发指南(精英版)-寄存器版本_V1.0》第8章。实现功能:3 个按钮(KEY_UP、KEY0和KEY1),来控制板上的2 个LED(DS0 和DS1)和蜂鸣器,其中KEY_UP 控制蜂鸣器,按一次叫,再按一次停;KEY1 控制DS1,按一次亮,再按一次灭;KEY0 则同时控制DS0 和DS1,按一次,他们的状态就翻转一次。 理解连续按概念及其实现代码。参数mode 为0 的时候,KEY_Scan 函数将不支持连续按,扫描某个按键,该按键按下之后必须要松开,才能第二次触发,否则不会再响应这个按键,这样的好处就是可以防止按一次多次触发,而坏处就是在需要长按的时候比较不合适。当mode 为1 的时候,KEY_Scan 函数将支持连续按,如果某个按键一直按下,则会一直返回这个按键的键值,这样可以方便的实现长按检测。 寄存器方法实现不支持连续按的关键代码,以及程序运行后的效果。

CAN总线实验报告

CAN总线实验报告 实验一SJA1000初始化 一、实验要求: 正确完成对SJA1000初始化,初始化成功后用LED点亮,表示初始化完成;否则LED 不亮。 二、实验内容: 1.实现SJA1000的初始化设置 2.理解SJA1000的相关寄存器的设置。 三、实验系统硬件设计: 图1是89C51与SJA1000连接图。MCU与SJA1000连接图。 选择适合的电阻和电容。此实验选择了51KR电阻与1UF电容,开机后给电容充电,电容电压由0V升至5V,SJA1000可靠复位。 I/O复位,由单片机某一I/O引脚控制SJA1000复位引脚,使单片机在可靠复位之后完成SJA1000的复位,避免时间偏差。

芯片复位,可以通过外围芯片进行复位。 四、实验系统软件设计 程序开始采用宏定义,初始化开始。设置模式寄存器进入复位模式;然后配置时钟分频寄存器(CDR)选择PeliCAN模式,关闭CLKOUT输出;然后是输出控制寄存器(OCR),再设置位定时(BTR0/BTR1)6MHz晶振,波特率30Kbps;然后配置验收滤波;最后再次设置模式寄存器推出复位状态并且设置单验收滤波,然后判断状态寄存器是否位OXOC以确认初始化是否成功,如果成功则点亮LED,否则重新初始化。 图1系统软件设计框图

程序如下: MODE EQU 0DE00H CMR EQU 0DE01H ;命令寄存器 SR EQU 0DE02H ;状态寄存器 IR EQU 0DE03H ;中断寄存器 IER EQU 0DE04H ;中断使能寄存器 BTR0 EQU 0DE06H ;总线定时寄存器一 BTR1 EQU 0DE07H ;总线定时寄存器二 OCR EQU 0DE08H ;输出控制寄存器 ALC EQU 0DE0BH ;仲裁丢失捕捉寄存器 ECC EQU 0DE0CH ;错误代码捕捉寄存器 TXERR EQU 0DE0FH ;发送错误计数器 ACR0 EQU 0DE10H ;验收代码寄存器0 ACR1 EQU 0DE11H ; 1 ACR2 EQU 0DE12H ; 2 ACR3 EQU 0DE13H ; 3

STM32的CAN总线中继器设计及应用_潘铜

*基金项目:西安工程大学研究生创新基金资助(chx100813)。 STM32的CAN 总线中继器设计及应用 * 潘铜,叶小荣,张娜,范建峰 (西安工程大学电子信息学院,西安710048) 摘要:CA N 中继器是系统组网的关键,通过中继器可以扩展节点的数量和实现不同波特率之间的通信。本文充分利用ST M 32F105内部集成双bxCAN 控制器的特性,设计出一款基于ST M 32的单芯片CAN 总线中继器,并将其应用到齐玛印花机上。实践证明该方法有效可行,不仅实现了齐玛印花机的改造,还降低了系统设备的成本。关键词:CA N 总线;中继器;ST M 32F105;齐玛印花机中图分类号:T P336 文献标识码:A Design an d Application of CAN Bus Repeater Based on STM32 Pan Tong ,Ye Xiaorong ,Zhang Na ,Fan Jianfeng (Elect ronic Information College ,Xi 'an Polytechnic University ,Xi an 710048,China ) Abstract :CAN repeater is the key to netw orking .The repeater can expand the num ber of nodes and realize communication betw een dif -ferent baud rates .M aking full use of internal integrated dual CAN controllers of S TM 32f105,the paper designs a single -chip CAN bus repeater based on STM32.The repeater can be applied to the Zimmer printing machine .The result proves that the method is effective and feasible ,not only realizing the transformation of Zimmer printing machine but also reducing the cost of system equipment .Key words :CAN bus ;repeater ;STM32F105;Zimmer printing machine 引 言 CAN 总线是一种多主方式的串行通信总线,具有优良的稳定性、实时性、远程通信能力以及超强的硬件CRC 纠错等特性;CAN 总线技术的应用不再仅限于汽车行业,而是扩展到了机械、纺织、控制等行业,并被公认为是最有前途的现场总线之一。然而由于受制于CAN 收发器,CAN 总线通信距离和网络中节点数被分别限制在10km 和110个之内。但是在稍大型的CAN 总线系统中,这往往是不够的,这时就需要用CAN 总线中继器对CAN 总线网络进行扩展。 CAN 中继器是系统组网的关键技术设备之一,使用中继器可以提高网络设计的灵活性,并且通过中继器还可以连接两个不同波特率的CAN 总线网络;在两个网络间进行数据转发,极大地扩展其使用范围。基于此,本文设计出一款基于ST M 32的CA N 总线中继器,并将其应用到齐玛印花机上,完成圆网印花机通信系统的工程改造。 1 系统整体方案及硬件实现 以往的CAN 中继器设计大多采用M CU 加CAN 控制器的双芯片或多芯片解决方案。例如,参考文献[1]使用1片M CU 加2路CAN 控制器的结构实现中继器;参考文献[2]使用双M CU 结构设计CA N 总线中继器;参考文献[3]使用独立双CAN 控制器作为2路CAN 接口的控制器来设计CA N 中继器。上述方案电路复杂,MCU 与CA N 控制器通过外部总线连接,数据吞吐速度慢,整体可靠性也比较差。 意法半导体的STM 32是以A RM Cortex -M 3为内核的32位微处理器,主频可高达72M H z ,内置Flash 和SRAM ,其容量可分别高达512KB 和64K B ;内部集成双bxCA N 控制器。它支持CAN 协议V2.0A 和V2.0B ,波特率最高可达1M b /s ,具有3个发送邮箱和2个3级深度的FIFO ,能够以最小的CPU 负荷来高效处理大量收到的报文。基于此,选用STM 32F105作为主控制器,设计出一款基于STM 32的CAN 总线中继器。其整体方案如图1所示。 由于STM 32F105内部集成了双路CA N 控制器,CA N 中继器的节点电路变得十分简单,其硬件电路如图

总线控制实验

《计算机组成与结构》课程实验报告 实验名称基本模型机设计与实现实验序号六实验日期2011.11.29 姓名王涛院系计算机班级091041B1 学号0910411113 专业计算机科学与技术指导教师蒯锐成绩 一、实验目的及要求 l、熟悉用微程序控制器控制模型机的数据通路。 2、学习设计与调试计算机的基本步骤及方法。 三、实验内容 l、实验原理 本实验在实验七基本模型机的基础上增加移位控制电路,实现移位控制运算.本实验数据通路如图3- 14所示a ㈥买验机系统中增加设计4条移位运算指令 ①左环移RL; ②带进位左环移RLC; 一——一一 ③右环移RR; ④带进位右环移RRC。 指令格式如下: 助记符操作码 RR 01010000 RRC 01100000 RL 01110000 RLC 10000000 说明: ·以上4条指令都为单字节指令。 ·RR是将RO寄存器的内容循环右移一位,。 ·RRC是将RO寄存器的内容带进位右移一位,它将RO寄存器最低位移入进位,同时将进位位移至RO寄存器的最高位。 ·RL是将RO寄存器的数据循环左移一位。 ·RLC是将RO寄存器中的数据带进位循环左移一位e (2)带移位运算的模型机监控软件的设计 本模型机监控软件主要完成从输入设备读入数据,进行算术运算、移位运算后,将结果存入内存的某个单元,最后通过输出设备输出结果。 监控软件详细如下:

地址内容助记符说明 00000000 00000000 IN ; "输入开关量"->R0 00000001 00010000 ADD[0DH] ; R0[0DH]->R0 00000010 00001101 00000011 10000000 RLC 00000100 00000000 IN ; "输入开关量"->R0 00000101 01100000 RRC 00000110 01110000 RL 00000111 00100000 STA[0EH] 00001001 00110000 ;R0->[0EH] 00001001 00110000 OUT[0EH] 00001010 00001110 ;[0EH]->BUS 00001011 01000000 JMP 00H ; 00H->PC 00001100 00000000 00001101 01000000 ;自定义数据 00001110 ;结果存放单元 (4)根据微程序流程图设计微程序并转化成十六进制文件格式(文件名C8JHE2),具体内容如下: 程序: $ P00 00 $ P01 10 $ P02 0D $ P03 80 $ P04 00 $ P05 60 $ P06 70 $ P07 20 $ P08 0E $ P09 30 $ P0A 0E $ P0B 40 $ P0C 00 $ P0D 40 微程序: $ MO0 088105 $ M01 82ED05 $ M02 50C004 $ M03 04E004 $ M04 058004 $ M05 06A205 $M06 019A95 $ M07 0FE004 $M08 8AED05 $M09 8CED05

接口实验报告

接口实验课程结课报告 学号、专业:控制工程 1508202024 姓名:** 报告题目:基于STM32的实时时钟设计 指导教师:潘明 所属学院:电子工程与自动化学院 成绩评定 教师签名 桂林电子科技大学研究生院 2016年6月4日

摘要 本设计以STM32F103芯片为控制核心,利用其内部的RTC设计了一个实时时钟。本系统主要由以下几个部分组成:微处理器,实时时钟模块,显示模块,调节模块。其中MCU 采用STM32F103芯片,实时时钟采用RTC实时时钟,显示模块为4.3寸的TFTLCD显示屏,采用独立按键调节。另外整个系统是在系统软件控制下工作的,能实现年、月、日、时、分、秒的实时显示及闹钟功能,并增加了温度显示。 关键字:STM32F103;实时时钟(RTC);TFTLCD显示屏

Abstract This design with STM32F103 chip as the control core, using its internal RTC design a real-time clock. The system is mainly composed of the following parts: microprocessor, real-time clock module, display module, control module. MCU using STM32F103 chip, real-time clock using RTC , display module use the 4.3 inch TFTLCD display screen, using independent buttons to adjust . In addition, the whole system is under the control of the system software,and accomplish the year, month, day, hour, minute, second real-time display and alarm clock function,and added to temperature display. Key words: STM32F103;real time clock(RTC); TFTLCD display screen

总线控制实验报告

实验四:总线控制实验报告 一、实验目的: 1.理解总线的概念及其特性; 2.掌握总线传输控制特性; 二、实验设备 TDN-CM+计算机组成原理教学实验系统一台,排线若干。 三、实验内容 1. 总线的基本概念 总线是多个系统内部之间进行数据传输的公共通路,是构成计算机系统的骨架。借助总线连接,计算机在系统各个部件之间实现传送地址、数据和控制信息的操作。因此,所谓总线就是能为多个部件服务的一组公共信息线。 1.实验原理 实验所用总线传输实验框图如图7-1所示,它将几种不同的设备挂至总线上,有存储器、输入设备、输出设备、寄存器。这些设备都需要有三态输出控制,按照传输要求恰当有序的控制它们,就可实现信息传输。 实验要求 根据挂在总线上的几个基本部件,设计一个简单的流程: ⑴输入设备将一个数打入R0寄存器; ⑵输入设备将另一个数打入地址寄存器; ⑶将R0寄存器中的数写入到当前的存储器中; ⑷将当前地址存储器中的数用LED数码管显示。

1.实验步骤 ⑴按照图7-2实验接线图进行接线。 ⑵具体操作步骤如下:

初始状态应设为:关闭所有的三态门(SW-B=1,CE=1,R0-B=1),其他控制信号为:LDAR=0,LDR0=0,W/R(RAM)=1,W/R(LED)=1 第一组数据:(R0)=11H,(AR)=21H LED显示的数据为: 第二组数据:(R0)=A5H,(AR)=22H LED显示的数据为: 第三组数据:(R0)=FCH,(AR)=23H LED显示的数据为: 注意事项: 1、所有导线使用前须测通断; 2、不允许带电接线; 3、“0”——亮“1”——灭; 4、注意连接线的颜色、数据的高低位。 四、实验总结 实验过程出现了很多问题,只有在实验前做好充分准备,才能减少在实验过程中遇到的难题。实验主要是使我们理解总线的概念及其特性,并掌握总线传输控制特性,这对我们深入了解计算机组成原理这门课程更加有利。

基于STM32的CAN通讯,已在实际项目中应用

与本程序代码相关部分的原理图及PCB,基于STM32F103VET6,已在项目中应用。

开头篇:STM32的CAN波特率计算 STM32里的CAN 支持2.0A,2.0B, 带有FIFO,中断等, 这里主要提一下内部的时钟应用。 bxCAN挂接在APB1总线上,采用总线时钟,所以我们需要知道APB1的总线时钟是多少。我们先看看下图,看看APB1总线时钟: APB1时钟取自AHB的分频, 而AHB又取自系统时钟的分频, 系统时钟可选HSI,HSE, PLLCLK, 这个在例程的RC设置里都有的,然后再看看有了APB1的时钟后,如何算CAN的总线速率, 先看下图:

有了上边的这个图,基本就清楚了: 总线时钟MHz (3+TS1+TS2)*(BRP+1) ====================================================================== 下面是我的计算: CAN_InitStructure.CAN_SJW = CAN_SJW_1tq; CAN_InitStructure.CAN_BS1 = CAN_BS1_3tq; 注意//#define CAN_BS1_3tq ((uint8_t)0x02) /*!< 3 time quantum */ CAN_InitStructure.CAN_BS2 = CAN_BS2_5tq; CAN_InitStructure.CAN_Prescaler = 4;//2 nominal bit time(3+5+1)tq=9tq 关于分频系数,查看 system_stm32f10x.c下面的static void SetSysClockTo72(void) 函数:/* HCLK = SYSCLK */ /* PCLK2 = HCLK */ /* PCLK1 = HCLK/2 */ 所以can时钟 72MHZ/2/4=9 Mhz,tq=1/36Mhz 波特率为 1/nominal bit time= 9/9=1MHZ ===================================================================== void CAN_Configuration(void) { CAN_InitTypeDef CAN_InitStructure; CAN_FilterInitTypeDef CAN_FilterInitStructure; /* CAN register init */ CAN_DeInit(); CAN_StructInit(&CAN_InitStructure); /* CAN cell init */ CAN_InitStructure.CAN_TTCM=DISABLE; CAN_InitStructure.CAN_ABOM=DISABLE;

STM32的can总线实验心得

STM32的can总线实验心得 标签: 总线心得实验2010-09-01 21:08 https://www.doczj.com/doc/a012214269.html,/my/space.php?uid=2 29870&do=blog&id=37832 工作模式 bxCAN有3个主要的工作模式:初始化、正常和睡眠模式。 初始化模式 *软件通过对CAN_MCR寄存器的INRQ位置1,来请求bxCAN进入初始化模式,然后等待硬件对CAN_MSR寄存器的INAK位置1来进行确认。 *软件通过对CAN_MCR寄存器的INRQ位清0,来请求bxCAN退出初始化模式,当硬件对CAN_MSR 寄存器的INAK位清0就确认了初始化模式的退出。*当bxCAN处于初始化模式时,报文的接收和发送都被禁止,并且CANTX引脚输出隐性位(高电平)。初始化CAN控制器,软件必须设置CAN_BTR和CAN_MCR寄存器。 正常模式 在初始化完成后,软件应该让硬件进入正常模式,同步CAN总线,以便正常接收和发送报文。软件通过对INRQ位清0来请求从初始化模式进入正常模式,

然后要等待硬件对INAK位清0来确认。在跟CAN总线取得同步,即在CANRX引脚上监测到11个连续的隐性位(等效于总线空闲)后,bxCAN才能正常接收和发送报文。 过滤器初值的设置不需要在初始化模式下进行,但必须在它处在非激活状态下完成(相应的FACT 位为0)。而过滤器的位宽和模式的设置,则必须在进入正常模式之前,即初始化模式下完成。 睡眠模式(低功耗) *软件通过对CAN_MCR寄存器的SLEEP位置1,来请求进入这一模式。在该模式下,bxCAN的时钟停止了,但软件仍然可以访问邮箱寄存器。 *当bxCAN处于睡眠模式,软件想通过对CAN_MCR 寄存器的INRQ位置1,来进入初始化式,那么软件必须同时对SLEEP位清0才行。 *有2种方式可以唤醒(退出睡眠模式)bxCAN:通过软件对SLEEP位清0,或硬件检测CAN总线的活动。 工作流程 那么究竟can是怎样发送报文的呢?

现场总线控制技术实验报告.

课程名称:现场总线实验任课教师:廉迎战 学院:自动化 专业班级: 学号: 学生姓名:

2015 年6月16日 实验一频移键控法仿真实验 一.实验目的 初步掌握通信原理基础知识中频移键控法的基本原理。 能用MATLAB仿真软件,编写并调试简单的仿真程序。 二.实验主要仪器设备和材料 1. 实验用计算机 2. MATLAB仿真软件 三.实验内容 四.实验步骤及结果测试 1.安装部署MATLAB仿真环境,同时根据频移键控法要求,设置仿真环境。 2.在MATLAB环境下,输入频移键控法原理图。 原理图如下:

方法一 方法二 Repeating sequence stair:F3数字信号sine wave :100Hz信号 Sine wave1 :50Hz信号 Scope1:示波器

方法一:Switch1:选通开关//方法二:用乘法器product代替 3.在MATLAB中产生F1=50Hz和F2=100Hz的交流信号,以及需要 发送的数字信号,数字信号为:F3=01101001方波波形。 4.加载输入信号,观察仿真原理图输出信号波形,同时记录并分析。 如下图: 五.思考题 1.数字信号01101001的频移键控法输出波形表示形式如下: 输出的数字信号为10110101时,其频移键控波形如下的OUT:

1~6行输出信号分别为:1.数字信号10110101的输入信号;2. 50Hz 频率sine;3.100Hz频率sine;4. Product输出;5.product1输出; 6.add输出 2.如何实现幅移键控法的信号通讯技术? 通过信号幅值的高低映射到数字信号的1和0从而达到载波传输信号,可利用 现成的电信网,电话网等设施构成信道。

(完整word版)STM32的485最简单例程

485最基本的半双工通信配置 采用STM32F103ZET6串口3连接485芯片通信口,485芯片的A,B通过485转串口模块与电脑相连,完成在串口软件上输入输出功能。 串口3,配置函数: void USART3_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); // USART3_TX -> PB10 , USART3_RX ->PB11 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); USART_https://www.doczj.com/doc/a012214269.html,ART_BaudRate = 115200; // 1200; USART_https://www.doczj.com/doc/a012214269.html,ART_WordLength = USART_WordLength_8b; USART_https://www.doczj.com/doc/a012214269.html,ART_StopBits = USART_StopBits_1; USART_https://www.doczj.com/doc/a012214269.html,ART_Parity = USART_Parity_No; //USART_Parity_Even; USART_https://www.doczj.com/doc/a012214269.html,ART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_https://www.doczj.com/doc/a012214269.html,ART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART3, &USART_InitStructure); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); #ifdef PDU_USART3_DMA

相关主题
文本预览
相关文档 最新文档