飞思卡尔11章 S12串行通信模块
飞思卡尔MC9S12XS128串口相关功能函数
} // 返回目标数据长度 returnSrcLength / 2; } // 字节数据转换为可打印字符串 // 如:{0xC8, 0x32, 0x9B, 0xFD, 0x0E, 0x01} --> "C8329BFD0E01" // pSrc: 源数据指针 // pDst: 目标字符串指针 // nSrcLength: 源数据长度 // 返回: 目标字符串长度 int gsmBytes2String(const unsigned char*pSrc, char* pDst, int nSrcLength) { const char tab[]="0123456789ABCDEF"; // 0x0-0xf的字符查找表 for(int i=0; i { // 输出低4位 *pDst++ = tab[*pSrc >> 4]; // 输出高4位 *pDst++ = tab[*pSrc & 0x0f]; pSrc++; } // 输出字符串加个结束符
飞思卡尔嵌入式课件KL25第十一章 SPI-I2C-TSI
4.I2C总线寻址约定 I2C总线规定起始信号后的第一个字节为寻址字节, 用来寻址被控器件,并规定数据传送方向。寻址字节由 被控器的7位地址位(D7~D1位)和一位方向位(D0位) 组成。方向位为0时,表示主控器将数据写入被控器,为 1时表示主控器从被控器读取数据。 5.主机向从机读/写1个字节数据的过程 1)主机向从机写1个字节数据的过程
12
(4)接收一字节数据:uint_8 SPI_receive1(uint_8 SPI_No); (5)接收N字节数据:uint_8 SPI_receiveN(uint_8 SPI_No,uint_8 n,uint_8 data[]); (6)使能SPI中断:void SPI_re_enable_int(uint_8 SPI_No); (7)关闭SPI中断:void SPI_disablere_int(uint_8 SPI_No); 2.SPI驱动构件头文件及源程序 具体代码见书P294
15
3.I2C总线的硬件相关术语与典型电路 1)I2C总线硬件相关术语 (1)主机(主控器):在I2C总线中,提供时钟信 号,对总线时序进行控制的器件。 (2)从机(被控器):在I2C系统中,除主机外的 其它设备均为从机。 (3)地址:每个I2C器件都有自己的地址,以供自 身在从机模式下使用。 (4)发送器:发送数据到总线的器件。 (5)接收器:从总线接收数据的器件。 (6)SDA(Serial DAta):串行数据线。 (7)SCL(Serial CLock):串行时钟线。
11.1.2 KL25的SPI模块概述
KL25内部具有两个SPI模块,分别是SPI0和SPI1。 这两个模块除了时钟源不一样之外,其他的地方完全相 同。SPI0的时钟源是总线时钟,SPI1的时钟源是系统时 钟。下表为KL25的SPI引脚及 SD-FSL-KL25-EVB实际 使用的引脚。
飞思卡尔MC9S12XS128单片机各模块使用方法及寄存器配置
飞思卡尔MC9S12XS128单片机各模块使用方法及寄存器配置手把手教你写S12XS128程序--PWM模块介绍该教程以MC9S12XS128单片机为核心进行讲解,全面阐释该16位单片机资源。
本文为第一讲,开始介绍该MCU的PWM模块。
PWM 调制波有8个输出通道,每一个输出通道都可以独立的进行输出。
每一个输出通道都有一个精确的计数器(计算脉冲的个数),一个周期控制寄存器和两个可供选择的时钟源。
每一个P WM 输出通道都能调制出占空比从0—100% 变化的波形。
PWM 的主要特点有:1、它有8个独立的输出通道,并且通过编程可控制其输出波形的周期。
2、每一个输出通道都有一个精确的计数器。
3、每一个通道的P WM 输出使能都可以由编程来控制。
4、PWM 输出波形的翻转控制可以通过编程来实现。
5、周期和脉宽可以被双缓冲。
当通道关闭或PWM 计数器为0时,改变周期和脉宽才起作用。
6、8 字节或16 字节的通道协议。
7、有4个时钟源可供选择(A、SA、B、SB),他们提供了一个宽范围的时钟频率。
8、通过编程可以实现希望的时钟周期。
9、具有遇到紧急情况关闭程序的功能。
10、每一个通道都可以通过编程实现左对齐输出还是居中对齐输出。
1、PWM启动寄存器PWMEPWME 寄存器每一位如图1所示:复位默认值:0000 0000B图1 PWME 寄存器每一个PWM 的输出通道都有一个使能位P WMEx 。
它相当于一个开关,用来启动和关闭相应通道的PWM 波形输出。
当任意的P WMEx 位置1,则相关的P WM 输出通道就立刻可用。
用法:PWME7=1 --- 通道7 可对外输出波形PWME7=0 --- 通道7 不能对外输出波形注意:在通道使能后所输出的第一个波形可能是不规则的。
当输出通道工作在串联模式时(PWMCTL 寄存器中的CONxx置1),那么)使能相应的16位PWM 输出通道是由PWMEx 的高位控制的,例如:设置PWMCTL_CON01 = 1,通道0、1级联,形成一个16位PWM 通道,由通道 1 的使能位控制PWM 的输出。
飞思卡尔MC9S12G系列芯片之【GPIO】模块总结
位数 8 8 8 8 2
小注: a. 由上表可知,这五个寄存器通过同一个电阻控制寄存器 PUCR 的 0~4 位分别
对应控制端口 A~D;
b. 在学习板中(这是前提,以下模块与寄存器的连接仅限此开发板):
LED 灯是通过 PORTA 寄存器控制,LED1~LED8 分别对应 PORTA 的 P0~P7 位(注意
置 0:输入 置 1:输出 置 0:上拉设备禁止 置 1:上拉设备使能 置 0:下降沿触发 置 1:上升沿触发 置 0:中断禁止 置 1:中断使能 置 0:无极性沿发生 置 1:有极性沿发生
位数 8
8
端口 P 和 J 都含有 7 个寄存器,其中与中断有关的寄存器有两个:
中断使能寄存器 PIEx 及中断标志寄存器 PIFx。
置 0:低电平 置 1:高电平 用于检测过载或输出 引脚短路条件 置 0:输入 置 1:输出 置 0:上拉设备禁止 置 1:上拉设备使能 置 0:下降沿触发 置 1:上升沿触发
WOMN 寄存器为 PORTS 和 PORTM 特有的寄存器,不常用。
位数 8
8
端口名称
寄存器种类 数据寄存器(PTT)
PORTT (PT)
GPIO 模块总结(以 MC9S12G128 为例)
一、常见功能
功能 设置输入/输出端口 设定 I/O 口的高低电平 选择内置上拉/下拉电阻 中断输入方式的选择 驱动能力的设置
需配置寄存器 DDRx(置 0 为输入,置 1 时为输出) PORTx(置 0 低电平、置 1 高电平) PERx PIEX XS128 芯片具有
EnableInterrupt;
// 定义主函数
// 禁止中断 // 设置 I/O 方向为输出 / *对 data 取反后为 0111 1111,因 LED 在低
飞思卡尔单片机S12使用方法及程序
飞思卡尔单片机S12使用方法及程序单片机简介:9S12XS128MAA单片机是16位的单片机80个引脚,CPU是CPU12X,内部RAM 8KB,EEPROM:2KB,FLASH:128KB,外部晶振16M,通过内部PLL可得40M总线时钟。
9S12XS128MAA单片机拥有:CAN:1个,SCI:2个,SPI:1个,TIM:8个,PIT:4个,A/D:8个,PWM:8个下面介绍下我们项目用到的几个模块给出初始化代码1、时钟模块初始化单片机利用外部16M晶振,通过锁相环电路产生40M的总线时钟(9S12XS128系列标准为40M),初始化代码如下:view plaincopy to clipboardprint?/******************系统时钟初始化****************/void Init_System_Clock(){asm { // 这里采用汇编代码来产生40M的总线LDAB #3STAB REFDVLDAB #4STAB SYNRBRCLR CRGFLG,#$08,*//本句话含义为等待频率稳定然后执行下一条汇编语句,选择此频率作为总线频率BSET CLKSEL,#$80}}/******************系统时钟初始化****************/void Init_System_Clock(){asm { // 这里采用汇编代码来产生40M的总线LDAB #3STAB REFDVLDAB #4STAB SYNRBRCLR CRGFLG,#$08,*//本句话含义为等待频率稳定然后执行下一条汇编语句,选择此频率作为总线频率BSET CLKSEL,#$80}上面的代码是汇编写的,这个因为汇编代码量比较少,所以用它写了,具体含义注释已经给出,主函数中调用此函数即可完成时钟初始化,总线时钟为40M.2、SCI模块初始化单片机电路做好了当然少不了和PC之间的通信,通信通过单片机串口SCI链接到PC 端的COM口上去。
飞思卡尔单片机课件-第十一章
RS232 driver keypad SPI
I2C Connect points switch Pulse generator Analog voltage generator 8 LED
与PC机连接 机连接
第十一章 单片机软件开发工具使用入门
• • • • 11.1 安装 11.2 创建工程编写汇编程序 11.3 编写汇编程序 11.4 汇编调试程序 *文件管理树介绍 文件管理树介绍 *调试窗口介绍 调试窗口介绍 *调试方法介绍 调试方法介绍 *Run菜单中 菜单中control points 菜单中
汇编 反编译文件
映射文件
*.map
Page 2
最小系统板
Signal connector Power socket S12DG128
3.2.2 最小系统板
Reset button
Power socket
BDM connector RS232 DB9 MAX232 LED Crystal
实验目标板
Computer C{ return(0); }
build
010010001 110010010 001010010
USB cable 用于调试
RS232 cable 用于串行通信
BDM
platform
Page 1
第十一章 单片机软件开发工具使用入门
*.h *.c *.c++ C源文件 源文件 汇编源文件
File process tree
*.asm *.inc
链接配 置文件
*.prm
C编译器 汇编编译器
飞思卡尔MC9S12XS128功能模块驱动
用了一年多飞思卡尔MC9S12XS128这款处理器,现在总结下各个功能模块的驱动.//锁相环时钟的初始化总线频率为40MHz(总线时钟为锁相环时钟的一半)//晶振为11.0592MHzvoid PLL_init(void) //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1) { //锁相环时钟= 2*11.0592*(39+1)/(10+1)=80MHz 总线时钟为40MHzREFDV=0x0A;SYNR=0x67; //0110_0111 低6位的值为19,高两位的值为推荐值while(CRGFLG_LOCK != 1);CLKSEL_PLLSEL = 1; //选定锁相环时钟//FCLKDIV=0x0F; //Flash Clock Divide Factor 16M/16=1M}//周期中断定时器的初始化-// //周期中断通道1用于脉冲累加器的定时采样,定时周期为: 10ms= (199+1)*(1999+1)/(40M) (没有使用)//周期中断通道0用于控制激光管的轮流发射,定时周期为: 2000us= (399+1)*(199+1)/(40M)//2011/4/4 15:24 定时时间改为1msvoid PIT_init(void){PITCFLMT_PITE = 0; // 禁止使用PIT模块 PITCFLMT :PIT 控制强制加载微计数器寄存器。
PITCE_PCE0 = 1; // 使能定时器通道0//PITCE_PCE1 = 1; //使能定时器通道1PITMUX = 0; //通道0,和通道1均选择8位微计数器0//修改时间只需要改下面四行PITMTLD0 = 199; //向8位微计数器中加载的值PITLD0 = 199; //向16位计数器中加载的值//PITMTLD1 = 39; //向8位微计数器中加载的值 8位,最大值不要超过255//PITLD1 = 1999; //向16位计数器中加载的值PITINTE |= 0x01; //使能定时器通道0的中断PITCFLMT_PITE = 1;//使能PIT模块}//脉冲累加器的初始化, PT7口外接光电编码器//最新修改: 2011/3/25 16:53void PT7_PulAcc_Init(void){DDRT &= 0x77;//设置PT7,PT3口为输入(硬件上PT7,PT3通过跳线联到了一块)PERT |= 0x80; //使能通道7的上拉电阻PPST &= 0x7f; //电阻设为上拉电阻TCTL4 &= 0x3f; //禁止PT3的输入捕捉功能PACTL = 0x50; //启动脉冲累加计数器,上升沿触发,禁止触发中断和溢出中断,主定时器禁止}//通道1用于控制舵机1 PWM 高电平有效,//通道3用于控制电机1 PWM 低电平有效,这与前两代车高电平有效有区别!!!!!//通道7用于给上排激光管提供PWM信号 PWM高电平有效!!!!!//通道6用于给下排激光管提供PWM信号 PWM高电平有效!!!!!// 2011-03-17 7:56 增加了A端口的使用新增通道6//2011-6-9 23:03 //增加了通道4,5的联合使用,用于控制下排方向舵机 void PWM_init(void){PWME = 0x00;//PWM禁止PWMPRCLK = 0x03; // ClockA=40M/8=5M, Clock B = 40M/1=40M PWMSCLB = 10; // Clock SB= 40/2*10= 2MHz(供电机)PWMSCLA = 5; // SA = Clock A/2*5 = 5M/10 = 500K = SA 用于控制舵机PWMPOL = 0xe2; //1110_0010通道7,通道6与通道1、通道5先输出高电平然后输出低电平,POLx=1先输出高电平后输出低电平; PPOLx=0先输出低电平)PWMCAE = 0x00; // 左对齐输出(CAEx=0为左对齐,反之为中心对齐)//PWMCLK = 0010_1010 (0 1 4 5位控制SA_1;或A_0; 2 3 6 7位控制SB_1 或B_0)//为PWM通道1选择时钟 SA(500KHz),//为PWM通道5选择时钟 SA(500KHz),//为通道3选择时钟 SB(10MHz)//为通道7选择时钟B(40MHz)//为通道6选择时钟B(40MHz)PWMCLK = 0x2A; //0010_1010PWMCTL = 0x70; //0111_0000 CON45=1,把通道4,5联合使用。
飞思卡尔MC9S12XS128各模块初始化程序--超详细注释
飞思卡尔MC9S12XS128各模块初始化程序--超详细注释//**************************************************************************// 武狂狼2014.5.1 整理// 新手入门的助手////***************************************************************************注释不详细/*********************************************************/函数名称:void ATD0_init(void)函数功能:ATD初始化入口参数:出口参数:/***********************************************************/void ATD0_init(void){ATD0DIEN=0x00; //使用模拟输入功能|=1;数字输入功能// ATD0CTL0=0x07; //Bit[3:0]WRAP[3:0] 反转通道选择位ATD0CTL1=0x40; // 12位精度,采样前不放电 Bit[7]ETRIGSEL(外部触发源选择位。
=0选择A/D通道AN[15:0] |=1选择 ERTIG3~0)和Bit[3:0]ETRIGCH[3:0]选择外部触发通道// Bit[6:5]SRES[1:0]A/D分辨率选择位。
Bit[4]SMP_DIS =0采样前不放电|=1采样前内部电容放电,这会增加2个A/D时钟周期的采样时间,有助于采样前进行开路检测ATD0CTL2=0x40; // 快速清零,禁止中断,禁止外部触发ATD0CTL3=0x90; // 右对齐,转换序列长度为2,非FIFOATD0CTL4=0x03; // 采样时间4个周期,PRS=31,F(ATDCLK)=F(BUS)/(2(PRS+1))// ATD0CTL5=0x30; //启动AD转换序列//:对每项数据采集时,用到哪个通道采样可在相应子函数内设置某一通道(见Sample_AD.c)while(!ATD0STAT2L_CCF0);/*********************************************************/函数名称:void PIT_init(void)函数功能:初始化PIT 设置精确定时时间(1s)入口参数:无出口参数:无说明:无/***********************************************************/void PIT_init(void){PITCFLMT=0x00; //禁止PIT模块Bit[7] PITE:PIT模块使能位,0禁用|1使能// Bit[6] PITSWAI:等待模式下PIT停止位,0等待模式下,PIT模块正常运行| 1等待模式下,PIT模块停止产生时钟信号,冻结PIT模块// Bit[5] PITFRZ: 冻结模式下PIT计数器冻结位。
第11章 MC9S12XS系列串行通信接口模块及其应用实例
11.3 SCI模块寄存器
11.3.5 SCI可选控制寄存器2(SCIACR2)
如果AMAP=1时,读:任何时刻;如果AMAP=1时,写:任何时刻。 BERRM1~BERRM0:位错误模式,这两位组合确定位错误模式的探测 特性,详见表11-4。
BKDFE:间隔探测特性使能位,该位使能允许使用间隔探测电路。 0表示禁用间隔探测电路; 1表示使用间隔探测电路。
接收器帧错误检测;
地址标志唤醒;
奇偶校验检测;
1/16位时间噪声检测。
《MC9S12XS单片机原理及嵌入式系统开发》
11.3 SCI模块寄存器
MC9S12XS128的SCI模块共有11个寄存器,详见表11-1。对于 112引脚的MC9S12XS128,内部有2个SCI模块,分别是SCI0和SCI1, 表11-1中分别列出了SCI0和SCI1两个模块中各寄存器地址。
《
11.3.1 SCI波特率寄存器(SCIBDH,SCIBDL)
SCI波特率寄存器(SCI Baud Rate Registers)用来设置SCI波特率,同 时还用于控制红外调制/解调子模块,由SCI波特率高字节寄存器(SCIBDH) 和SCI波特率低字节寄存器(SCIBDL)组成。该寄存器如图11.2和图11.3所示。 波特率计算公式为
《MC9S12XS单片机原理及嵌入式系统开发》
11.3 SCI模块寄存器
11.3.5 SCI可选控制寄存器2(SCIACR2)
SCI可选控制寄存器2(SCI Alternative Control Register 2,SCIACR2), 如图11.9所示。
《MC9S12XS单片机原理及嵌入式系统开发》
MC9S12XS128内置的SCI模块是全双工、波特率 可编程设置、可编程选择8位数据或9位数据格式的串 行通信接口(简称串口)。本章着重介绍SCI模块的 特性、寄存器功能及设置,并通过一些应用实例和 SCI模块在自主寻迹智能车上的应用,让读者掌握 SCI模块的应用及编程方法。
飞思卡尔s12单片机-ATD模块
Page 6
二、ATD模块简介
•
• • • • • • •
第十章 单片机片内外模块 ——ATD
S12单片机ADC特性如下:
8/10/12位可选
转换速度较高,8位、8MHz、单次转换时间为2us 采样时间可编程设置 多种转换模式:数据对齐方式、单次/连续转换、转换结果比较 外触发控制 转换序列结束可产生中断,能够使能比较中断 模拟输入引脚与通用I/O口复用 多通道扫描, 1~16 转换序列长度。
ETRIGLE –外部信号触发条件选择位 ETRIGP -
ACMPIE - Internal Clock in Stop Mode Bit 0 = 禁止比较中断 1 = 使能比较中断
ATD Registers 4/12 第十章 单片机片内外模块 ——ATD
ATD Control Register 3 (ATDCTL3)
Page 10
ATD Registers 1/12 第十章 单片机片内外模块 ——ATD
ATD Control Register 0 (ATDCTL0)
WRAP[3-0] - Wrap Around Channel Select
0 = Reserved
X = WRAP[3:0]; 多通道转换模式下,从ANx回绕到AN0 1≤x ≤ 15 仅在ATDCTL5的MULT=1时有效
S8C, S4C,S2C, S1C - Conversion Sequence Length
ATD Registers 5/12 第十章 单片机片内外模块 ——ATD
ATD Control Register 4 (ATDCTL4)
注:写ATDCTL4会终止当前转换序列
SMP[2:0] - Sample Time Select, 采样时间包含的ATD时钟周期
飞思卡尔MC9S12XET256 SCI串口寄存器说明
串口寄存器说明该模块指南提供了串行通信接口(SCI)模块概述。
SCI的允许与外围设备和其他CPU异步串行通信。
1.1 SCI包括这些特征:•全双工或单线运行•标准标记/空间不归零(NRZ)格式•可选的IrDA1.4返回到零倒置(RZI)与可编程脉冲宽度格式•13位的波特率选择•可编程8位或9位数据格式•分别使能发射机和接收机•可编程极性对发射机和接收机•可编程发送器输出校验•两个接收器唤醒的方法:-唤醒空闲线- 地址标志唤醒•中断驱动的操作有八个标志:-发送器空- 传输完成- 接收器满- 空闲接收器输入- 接收器溢出-噪声误差-帧错误- 奇偶错误- 接收有效边缘唤醒- 发送冲突检测支持LIN-间隔检测支持LIN•接收帧错误检测•硬件奇偶校验•1 / 16位时间噪声检测1.2 操作模式SCI的功能相同在正常、特殊和仿真模式。
它有两种低功耗模式,等待和停止模式。
•运行模式•等待模式•停止模式1.3 寄存器说明1、波特率控制寄存器(SCIBDH、SCIBDL)SCIBDH和SCIBDL一起构成了一个16位的波特率控制寄存器。
SBR12~~SBR0为波特率常数。
IREN:红外调制模式使能位1 使能0 禁止TNP[0..1]:窄脉冲发射位,这些位使能SCI是否能发送一个1 / 16,3 /16,1/ 32或1 / 4的窄脉冲。
见表20-3。
SBR[0..12]:波特率设置位When IREN = 0 then,SCI baud rate = SCI bus clock / (16 x SBR[12:0])When IREN = 1 then,SCI baud rate = SCI bus clock / (32 x SBR[12:1])【说明】波特率发生器在复位后是禁止的,在设置TE、RE(在SCICR2寄存器中)后才会工作。
当(SBR[12:0] = 0 and IREN = 0) 或者(SBR[12:1] = 0 andIREN = 1),波特率发生器不工作。
飞思卡尔半导体 如何在M68HC08、HCS08和HCS12 微控制器上应用IIC模块 说明书
飞思卡尔半导体文件编号:AN3291 应用笔记第1版,03/2007Specifications and information herein are subject to change without notice. ©Freescale Semiconductor,Inc., 2007. All rights reserved.General Business Information如何在M68HC08、HCS08和HCS12微控制器上应用IIC模块作者: Stanislav Arendarik应用工程师捷克共和国,罗斯诺夫1 简介此应用笔记是如何在飞思卡尔的微控制器上应用IIC模块的一个示例。
IIC模块可以分别在主模式或从模式下使用。
在这种情况下,由于IIC 总线主要用于在微控制器(MCU)和IIC外设之间的通信,因此在主模式时与串行EEPROM进行通信。
IIC总线可以在两个微控制器(MCU)之间直接进行通信,然而SPI总线却更适用于这种应用。
此应用笔记总结了通用IIC总线状态和定义,并提供了如何与串行EEPROM进行通信的示例(24C16和24C512)。
您可以轻松地用另外一个IIC器件取代EEPROM,但是必须改变将其标识为从器件的IIC地址字节。
目录1 简介…………… . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . 12 IIC 总线摘要………….. . . . …. . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.1 IIC总线术语.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22.2 位传输. ………….. . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . 22.3 起始条件和停止条件(START and STOP Conditions)...... . 32.4 总线通信. . ……………………….. . . . . . . . . . . . . . . . . . . . 32.5 控制字节………………………. . . . . . . . . . . . . . . . . . . . .. . . 32.6 地址字节……….... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.7 应答………… . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . 42.8 读/写格式………………………………......…..…... . . . . . . .. 53 用于微控制器的IIC软件程序. ………. . . . . . . . . . . . . . . . . . . . . . . 53.1 IIC的初始化. … . . . …….. . . . . . . . . .. .. . . . .. .. .. . . . . . . . 63.2 写入功能. . . . . . . . . . . . . . . . . . . . . .. . . . . . .. . . . . . . . . . . 73.3 读取功能 .. . . . . . . . . . . . . . . . . . . . .. . .. . . . . .. . . . . . . . . 93.4 中断应用举例. . . . . . ……………. . . . . . . . . . . .. . . . . . . . . 133.4.1 MCU作为主机.. . . . . . . . . . . .. .. . . . . . . . . . . . . . . 133.4.2 MCU作为从机. . . . . . .. . . . . . . .. . . . . . .. . . . . . . 164 结论. . . ……... . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . .. . . . . . . .. . . 17IIC总线摘要2 IIC 总线摘要IIC总线是基于主机和从机间线与(开漏)连接的双向、两线式总线。
飞思卡尔单片机 MC9S12 单片机应用系统开发平台下实时操作
计算机方向嵌入式计算机应用正在计算机领域迅速崛起,虽然该技术还不很成熟,但是它 的应用已经深入到社会各个领域,像办公自动化、民用消费品、计算机外设、机器人和武 器系统等等。
嵌入式系统,属于电子系统,包括微处理器或微控制器,嵌入式系统不是一般的计算 机,是隐藏或嵌入在各种系统中的计算机。主要用于控制领域,兼顾数据处理。而微控制 器即 MCU,MCU 的基本含义,在一片芯片上集成了中央处理单元(cpu)、存储器(RAM/ROM 等)、 定时器/计数器及多种输入\输出(I/O)接口的比较完整的数字处理系统。
飞思卡尔S12系列寄存器和中断讲解
S12的输入/输入端口(I/O 口)I/O端口功能可设置为通用I/O 口、驱动、内部上拉/下拉、中断输入等功能。
设置I/O口工作方式的寄存器有:DDR、10、RDR、PE、IE 和 PS。
DDR :设定I/O 口的数据方向。
IO :设定输出电平的高低。
RDR :选择I/O 口的驱动能力。
PE:选择上拉/下拉。
IE:允许或禁止端口中断。
PS: 1、中断允许位置位时,选择上升沿/下降沿触发中断;2、中断禁止时且PE有效时,用于选择上拉还是下拉。
I/O端口设置1、A 口、B 口、E 口寄存器(1)数据方向寄存器 DDRA、DDRB、DDREDDRA、DDRB、DDRE均为8位寄存器,复位后其值均为 0。
当 DDRA=0、DDRB=0、 DDRE=0 时 A 口、B 口和 E 口均为输入口。
否则,A 口、B口、E 口为输出口。
当 DDRA、DDRB、DDRE的任何一位置1时,则该位对应的引脚被设置为输出。
例如,将A 口设置为输出口,则其 C语言程序的语句为:DDRA=0xff ;(2) A 口、B 口、E 口上拉控制寄存器PUCRPUCR 初:PUPKE —— ----- --------- -——RUPEE ——-————-——PUPBE PUR\EWrite: | | |PUCR为8位寄存器,复位后的值为 0。
当PUPAE、PUPBE、PUPEE被设置为1时,A 口、B 口、E 口具有内部上拉功能;为0时,上拉无效。
当A 口、 B 口、E 口为地址/数据总线时,PUPAE和PUPBE无效。
(3)A 口、B 口、E 口降功率驱动控制寄存器RDRIVRDRIV 篇眾?RDPK 口| | 良DPE 口口| 嵐DPB RDPARDRIV为8位寄存器,复位后的值为 0,此时,A 口、B 口、E 口驱动保持全功率;当 RDPA、RDPB、RDPE为1时,A 口、B 口、E 口输出引脚的驱动功率下降(4)数据寄存器PORTA、PORTB、PORTEPORTA、PORTB、PORTE均为8位寄存器,复位后的值为 0,端口引脚输出低电平;要使引脚输出高电平,相应端口对应位应该置1。
飞思卡尔MC9S12XS128单片机重点模块讲解
基于飞思卡尔 MC9S12XS128MCU 的模块讲解及测试
安徽工业大学 自动化系 刘昌元 } /*--------------------- 主函数------------------------------------*/ void main(void) { DDRB=0x3f; LED=0x01; EnableInterrupts; while(1) { delay(time); LED<<=1; delay(time); //延时 //高电平信号左移一位 //定义 B0-B5 口为输出 // 点亮第一只灯 //允许中断
基于飞思卡尔 MC9S12XS128MCU 的模块讲解及测试
安徽工业大学 自动化系 刘昌元 � 概述:
飞思卡尔单片机的端口名称和 51 系列单片机有区别, 51 单片最经典的通用 I/O 口名称是 P0 口、P1 口、 P2 口、P3 口。而飞思卡尔 128 单片机是由 A 口、B 口、 K 口、E 口等标称的, 熟悉 51 单片的同学在此学习飞思卡尔单片时要知道变通,同样的对于学习其他单片机也是 一样的,先熟悉端口名称,再熟悉其端口功能,再熟悉其寄存器。C 语言的编程语法和算法 思路是通用的。 现在功能强悍一点的单片都在内部集成了很多现成的模块, 我们可以通过对 其模块寄存器编程配置我们需要的功能即可, 此处的 128 单片机就是这样一款单片机, 在此 我就我个人学习的一些心得写出来, 仅供交流与参考, 同时我也希望帮助新手能够很快得上 手。 具体更深层的内容大家还需要去参考芯片的技术手册和其他参考书。 以下我就分模块来 讲解, 大家在学习的过程中也需要一个模块一个模块的来学习和测试。 其实我个人觉得买过 来的开发板用途不是很大,因为很多端口被其在 PCB 设计时固化了,留给我们的端口并不 多,使用起来极不方便,所以我个人建议大家可以买个带有最小系统的模块,自己用排针和 插槽焊一个程序调试板,再焊一排共阴极的发光二极管(最好能发不同颜色光的) ,再焊几 个开关电路和按键电路即可。 我们在代码的各个位置通过点亮发光二极管来知道程序走到哪 一步了。下面我提供的测试例程也是这么来的,节省硬件就是节省开支啊,多动脑子,多想 办法可以克服很多困难的。 注: 一个寄存器的多个位可以一次性写入配置的, 但是为了使大家读程序理解方便我对寄存 器的每一位几乎一位一位配置的,我麻烦了,不过可以给大家读程序带来方便。
飞思卡尔智能车S12XS128PWM控制程序编写
飞思卡尔智能车S12XS128PWM控制程序编写SeptStringS原创,转载请注明。
对于飞思卡尔智能车,电机和舵机的控制通常使⽤的都是以PWM脉冲宽度调制的⽅法实现的,其可⾏性基于电机可以由占空⽐控制转速,⽽舵机也由脉宽控制摆动。
PWM 调制波有 8 个输出通道,每⼀个输出通道都可以独⽴的进⾏输出。
每⼀个输出通道都有⼀个精确的计数器(计算脉冲的个数),⼀个周期控制寄存器和两个可供选择的时钟源。
每⼀个 PWM 输出通道都能调制出占空⽐从 0—100% 变化的波形。
PWM控制程序的编写⼀般按照以下的⼀种流程:1,禁⽌PWM模块;//这是由于改变周期和脉宽等操作需要在PWM禁⽌的情况下才能被设置2,PWM级联选择,是否级联通道67,45,23,01;//最多单独使⽤8个8位和级联使⽤4个16位3,给通道选择时钟源控制位;//0,1,4,5通道可选择ClockA和ClockSA;2,3,6,7通道可选择ClockB和ClockSB4,给时钟源A\B预分频;//可对总线时钟进⾏预分频,确定ClockA和ClockB,满⾜1,2,4,8,16,32,64,128这8个分频量5,根据时钟源A\B确定时钟源SA\SB;//由ClockA和ClockB、分频设值来确定ClockA和ClockB,满⾜1-255的分频量6,输出极性的选择;//也就是选择输出极性先低后⾼还是先⾼后低7,对齐⽅式的选择;//可设置为左对齐或者中间对齐⽅式8,实际通道频率的计算;//也就是周期的设定9,占空⽐寄存器的设置;//占空⽐常数的设定,可以以此决定占空⽐10,使能PWM模块。
//你已经⾸尾呼应了,有⽊有接下来通过寄存器的介绍,以上⾯流程为⼤纲,详细地说明⼀下该如何操作~~【PWME】寄存器PWME = (PWME~7 | PWME~6 | PWME~5 | PWME~4 | PWME~3 | PWME~2 | PWME~1 | PWME~0)将每⼀位设置为1即可使能该位,0对应的既是禁⽌。
飞思卡尔单片机 S12SPIV2
DOCUMENT NUMBERS12SPIV2/DSPIBlock User GuideV02.07Original Release Date: 21 JAN 2000Revised: 11 Dec 2002Motorola, Inc.Motorola reserves the right to make changes without further notice to any products herein to improve reliability,function or design.Motorola does not assume any liability arising out of the application or use of any product or circuit described herein; neither does it convey any license under its patent rights nor the rights of others.Motorola products are not designed,intended, or authorized for use as components in systems intended for surgical implant into the body,or other applications intended to support or sustain life,or for any other application in which the failure of the Motorola product could create a situation where personal injury or death may occur.Should Buyer purchase or use Motorola products for any such unintended or unauthorized application,Buyer shall indemnify and hold Motorola and its officers,employees,subsidiaries,affiliates,and distributors harmless against all claims,costs,damages,and expenses,and reasonable attorney fees arising out of,directly or indirectly,any claim of personal injury or death associated with such unintended or unauthorized use,even if such claim alleges that Motorola was negligent regarding the design or manufacture of the part.SPI Block User Guide — S12SPIV2/D V02.07 Revision HistoryVersion Number RevisionDateEffectiveDate Author Description of Changes0.121 Jan2000This spec is based on the Barracuda, with modifications to changethe module from 16 bit to 8 bit.0.21 Mar2000Template of this document changed as per Version 2.0 SRS.0.314 Jun2000- Signal names are changed as per the SRS2.0- SPE bit remains set in the Mode Fault error case- Slave SPI does not support div2 and div4 cases0.431 Aug2000- Electrical spec added- SPIF flag is cleared by a read access to the status registerfollowed by read access to the data register.0.513 Mar200113 Mar2001- Incorporated feedback regarding format of the document.0.613 Mar200119 Mar2001- Incorporated changes as a result of internal discussions andclarification of SRS20.76 July20016 July2001- Line is added with respect to SPTEF bit to make spec more clear.- Landscape pages have been removed from pdf.- Extra blank pages have been removed.0.819 July200119 July2001- Line is added with respect to SPE bit to make spec more clear.V02.0226 July2001-Added Document Names-variable definitions and Names have been hidden-Changed chapter 3.9 Errata to NoteV02.0328 Sept2001- Corrected the status of SPE when MODF is setV02.0411 Dec2001- Added a note for slave operation for MUCts00531- Updated Block DiagramV02.0513 Feb200213 Feb2002- Cleaned up revision history, summarized three entries withVersion Number V2.04 into one- Section 4.6.2 Cleaned up Figures in Table 4-1- Removed note 4.9, because in slave mode baud rates DIV2 andDIV4 are not supportedV02.0606 Mar200206 Mar2002- Document format updateV02.0711 Dec200211 Dec2002Section 3.3.5 - Added NoteSPI Block User Guide — V02.07 Table of ContentsSection 1 Introduction1.1Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 1.2Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 1.3Modes of Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 1.4Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10Section 2 Signal Description2.1Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 2.2Detailed Signal Descriptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 2.2.1MOSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 2.2.2MISO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 2.2.3SS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 2.2.4SCK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11Section 3 Memory Map and Registers3.1Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 3.2Module Memory Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 3.3Register Descriptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 3.3.1SPI Control Register 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14 3.3.2SPI Control Register 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 3.3.3SPI Baud Rate Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16 3.3.4SPI Status Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19 3.3.5SPI Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20Section 4 Functional Description4.1General. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21 4.2Master Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21 4.3Slave Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22 4.4Transmission Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23 4.4.1Clock Phase and Polarity Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23 4.4.2CPHA = 0 Transfer Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24 4.4.3CPHA = 1 Transfer Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 4.5SPI Baud Rate Generation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27SPI Block User Guide — V02.074.6Special Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27 4.6.1SS Output. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27 4.6.2Bidirectional Mode (MOMI or SISO). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 4.7Error Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 4.7.1Mode Fault Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29 4.8Low Power Mode Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29 4.8.1SPI in Run Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29 4.8.2SPI in Wait Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29 4.8.3SPI in Stop Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30Section 5 Reset5.1General. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31Section 6 Interrupts6.1Interrupt Operation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33 6.1.1MODF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33 6.1.2SPIF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33 6.1.3SPTEF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33SPI Block User Guide — V02.07 List of FiguresFigure 1-1SPI Block Diagram. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 Figure 3-2SPI Control Register 1 (SPICR1). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14 Figure 3-3SPI Control Register 2 (SPICR2). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 Figure 3-4SPI Baud Rate Register (SPIBR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16 Figure 3-5SPI Status Register (SPISR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19 Figure 3-6SPI Data Register (SPIDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 Figure 4-1Master/Slave Transfer Block Diagram. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23 Figure 4-2SPI Clock Format 0 (CPHA = 0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 Figure 4-3SPI Clock Format 1 (CPHA = 1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26 Figure 4-4Baud Rate Divisor Equation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27SPI Block User Guide — V02.07SPI Block User Guide — V02.07 List of TablesTable 3-1Module Memory Map. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 Table 3-2SS Input / Output Selection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 Table 3-3Bidirectional Pin Configurations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16 Table 3-4SPI Baud Rate Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17 Table 4-1Normal Mode and Bidirectional Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28SPI Block User Guide — V02.07SPI Block User Guide — V02.07 Section 1 Introduction1.1 OverviewThe SPI module allows a duplex, synchronous, serial communication between the MCU and peripheral devices. Software can poll the SPI status flags or the SPI operation can be interrupt driven.1.2 FeaturesThe SPI includes these distinctive features:•Master mode and slave mode•Bi-directional mode•Slave select output•Mode fault error flag with CPU interrupt capability•Double-buffered operation•Serial clock with programmable polarity and phase•Control of SPI operation during wait mode1.3 Modes of OperationThe SPI functions in three modes, run, wait, and stop.•Run ModeThis is the basic mode of operation.•Wait ModeSPI operation in wait mode is a configurable low power mode. Depending on the state of internal bits, the SPI can operate normally when the CPU is in wait mode or the SPI clock generation can be turned off and the SPI module enters a power conservation state during wait mode.During wait mode, any master transmission in progress stops if the SPISWAI bit is set in the SPI controlregister2.Reception and transmission of a byte as slave continues so that the slave is synchronized to the master.•Stop ModeThe SPI is inactive in stop mode for reduced power consumption. The STOP instruction does not affect or depend on SPI register states. Again, reception and transmission of a byte as slavecontinues to stay synchronized with the master.This is a high level description only,detailed descriptions of operating modes are contained in section4.8 Low Power Mode Options.SPI Block User Guide — V02.071.4 Block DiagramFigure 1-1 is a general block diagram of the SPI.Figure 1-1 SPI Block DiagramPIN CONTROL LOGIC8-BIT SHIFT REGISTERCLOCK LOGICSPI CONTROLSPI STATUS REGISTERSPI DATA REGISTERDIVIDERSELECTSPI BAUD RATE REGISTER248163264128256S P I I N T E R R U P T S M M S MSR E Q U E S TSPI CONTROL REGISTER 1BAUD RATE GENERATORMISOMOSISPI CONTROL REGISTER 2SSSCKBUS CLOCKM O D FS P I FS P T E FS P P R 2S P P R 1S P R 1S P R 0S P P R 0S P R 2M S T RC P H AC P O LL S B F EBIDIROESPC0BAUD CLOCK IPBUSMUXED CLOCKSection 2 Signal Description2.1 OverviewThis section lists the name and description of all ports including inputs and outputs that do,or may,connect off chip.The SPI module has a total of 4 external pins.2.2Detailed Signal Descriptions2.2.1MOSIThis pin is used to transmit data out of the SPI module when it is configured as a Master and receive data when it is configured as slave.2.2.2 MISOThis pin is used to transmit data out of the SPI module when it is configured as a Slave and receive data when it is configured as Master.2.2.3SSThis pin is used to output the select signal from the SPI module to another peripheral with which a data transfer is to take place.2.2.4 SCKThis pin is used to output the clock with respect to which the SPI transfers data or receive clock in case of Slave.Section 3 Memory Map and Registers3.1 OverviewThis section provides a detailed description of all memory and registers accessible to the end user.3.2 Module Memory MapThe memory map for the SPI is given below in Table3-1.The address listed for each register is the sum of a base address and an address offset.The base address is defined at the SoC level and the address offset is defined at the module level. Reads from the reserved bits return zeros and writes to the reserved bits have no effect.Table 3-1 Module Memory MapAddress Use Access$___0SPI Control Register 1 (SPICR1)Read / Write$___1SPI Control Register 2 (SPICR2)Read / Write1$___2SPI Baud Rate Register (SPIBR)Read / Write1$___3SPI Status Register (SPISR)Read2$___4Reserved—23$___5SPI Data Register (SPIDR)Read / Write$___6Reserved—23$___7Reserved—23NOTES:1. Certain bits are non-writable.2. Writes to this register are ignored.3. Reading from this register returns all zeros.3.3 Register DescriptionsThis section consists of register descriptions in address order.Each description includes a standard register diagram with an associated figure number. Details of register bit and field function follow the register diagrams, in bit order.3.3.1 SPI Control Register 1Figure 3-2 SPI Control Register 1 (SPICR1)Read:anytime Write:anytimeSPIE — SPI Interrupt Enable BitThis bit enables SPI interrupts each time the SPIF or MODF status flag is set.1 = SPI interrupts enabled.0 = SPI interrupts disabled.SPE — SPI System Enable BitThis bit enables the SPI system and dedicates the SPI port pins to SPI system functions.1 = SPI port pins are dedicated to SPI functions.0 = SPI disabled (lower power consumption).SPTIE — SPI Transmit Interrupt EnableThis bit enables SPI interrupt generated each time the SPTEF flag is set.1 = SPTEF interrupt enabled.0 = SPTEF interrupt disabled.MSTR — SPI Master/Slave Mode Select Bit1 = Master mode 0 = Slave modeCPOL — SPI Clock Polarity BitThis bit selects an inverted or non-inverted SPI clock.To transmit data between SPI modules,the SPI modules must have identical CPOL values.1 = Active-low clocks selected; SCK idles high 0 = Active-high clocks selected; SCK idles low CPHA — SPI Clock Phase BitThis bit is used to shift the SCK serial clock.1 = The first SCK edge is issued at the beginning of the 8-cycle transfer operation 0 = The first SCK edge is issued one-half cycle into the 8-cycle transfer operationRegister Address: $___0Bit 7654321Bit 0R SPIE SPE SPTIE MSTR CPOL CPHA SSOE LSBFE W Reset:1SSOE — Slave Select Output EnableThe SS output feature is enabled only in the master mode by asserting the SSOE as shown in Table 3-2.LSBFE — SPI LSB-First EnableThis bit does not affect the position of the msb and lsb in the data register.Reads and writes of the data register always have the msb in bit 7.1 = Data is transferred least significant bit first.0 = Data is transferred most significant bit first.3.3.2 SPI Control Register 2Figure 3-3 SPI Control Register 2 (SPICR2)Read:anytimeWrite:anytime; writes to the reserved bits have no effectMODFEN — Mode Fault Enable BitThis bit when set allows the MODF flag to be set.If the MODF flag is set,clearing the MODFEN does not clear the MODF flag.If the SPI is enabled as master and the MODFEN bit is low,then the SS pin is not used by the SPI.When the SPI is enabled as a slave, the SS is available only as an input regardless of the value of MODFEN.1 = Enable setting the MODF error 0 = Disable the MODF errorTable 3-2SS Input / Output SelectionMOD FENSSOE Master ModeSlave Mode00SS not used by SPI SS input 01SS not used by SPI SS input 10SS input with MODF featureSS input 11SS outputSS inputRegister Address: $___1Bit 7654321Bit 0R 000MODFENBIDIROE0SPISWAISPC0W Reset:00= ReservedBIDIROE — Output enable in the Bidirectional mode of operationThis bit along with the MSTR bit of SPCR1 is used to enable the output buffer when the SPI is configured in bidirectional mode.1 = Output buffer enabled 0 = Output buffer disabled SPISWAI — SPI Stop in Wait Mode BitThis bit is used for power conservation while in wait mode.1 = Stop SPI clock generation when in wait mode 0 = SPI clock operates normally in wait modeSPC0 — Serial Pin Control Bit 0With the MSTR control bit, this bit enables bidirectional pin configurations as shown in Table 3-3.3.3.3 SPI Baud Rate RegisterFigure 3-4 SPI Baud Rate Register (SPIBR)Read:anytimeWrite:anytime; writes to the reserved bits have no effectNOTE:Writing to this register during data transfers may cause spurious results.Table 3-3 Bidirectional Pin ConfigurationsPin ModeSPC0MSTRMISO 1NOTES :1. Slave output is enabled if BIDIROE bit = 1,SS = 0, and MSTR = 0 (C)MOSI 22. Master output is enabled if BIDIROE bit = 1 and MSTR = 1 (D)SCK 33. SCK output is enabled if MSTR = 1 (B, D)SS 44.SS output is enabled if MODFEN bit = 1, SSOE = 1, and MSTR = 1 (B, D).A Normal 00Slave Out Slave In SCK in SS inB 1Master InMaster OutSCK out SS I/O C Bidirectional10Slave I/O—SCK in SS In D1—Master I/OSCK outSS I/ORegister Address: $___2Bit 7654321Bit 0R 0SPPR2SPPR1SPPR00SPR2SPR1SPR0W Reset:00= ReservedSPPR2–SPPR0 — SPI Baud Rate Preselection Bits SPR2–SPR0 — SPI Baud Rate Selection BitsThese bits specify the SPI baud rates as shown in the table below The baud rate divisor equation is as followsBaud Rate = Bus clock / BaudRateDivisorTable 3-4 SPI Baud Rate SelectionSPPR2SPPR1SPPR0SPR2SPR1SPR0SPI Module Clock Divisor00000020000014000010800001116000100320001016400011012800011125600100040010018001010160010113200110064001101128001110256001111512010000601000112010010240100114801010096010101192010110384010111768011000801100116011010320110116401110012801111256BaudRateDivisor SPPR 1+()2•SPR 1+()=NOTE:DIV2 and DIV4 are not supported in slave mode of SPI.0111105120111111024100000101000012010001040100011801001001601001013201001106401001111280101000121010012410101048101011961011001921011013841011107681011111536110000141100012811001056110011112110100224110101448110110896110111179211100016111001321110106411101112811110025611110151211111010241111112048Table 3-4 SPI Baud Rate SelectionSPPR2SPPR1SPPR0SPR2SPR1SPR0SPI Module Clock DivisorFigure 3-5 SPI Status Register (SPISR)Read:anytimeWrite:has no effectSPIF — SPIF Interrupt FlagThis bit is set after the eighth SCK cycle in a data transfer and is cleared by reading the SPISR register (with SPIF set) followed by a read access to the SPI data register.1 = New data Copied to SPIDR 0 = Transfer not yet complete SPTEF — SPI Transmit Empty Interrupt FlagThis bit is set when there is room in the transmit data buffer.It is cleared by reading SPISR with SPTEF set, followed by writing a data value to the transmit buffer at SPIDR.SPISR must be read with SPTEF=1 before writing data to SPIDR or the SPIDR write will be ignored. SPTEF generates an SPTEF CPU interrupt request if the SPTIE bit in the SPICR1 is also set.SPTEF is automatically set when a data byte transfers from the transmit buffer into the transmit shift register.For an idle SPI (no data in the transmit buffer or the shift register and no transfer in progress), data written to SPIDR is transferred to the shifter almost immediately so SPTEF is set within two bus cycles allowing a second 8-bit data value to be queued into the transmit buffer.After completion of the transfer of the value in the shift register,the queued value from the transmit buffer will automatically move to the shifter and SPTEF will be set to indicate there is room for new data in the transmit buffer.If no new data is waiting in the transmit buffer, SPTEF simply remains set and no data moves from the buffer to the shifter.1 = SPI Data register empty 0 = SPI Data register not emptyNOTE:Do not write to the SPI data register unless the SPTEF bit is high. Any such write to the SPI Data Register before reading SPTEF=1 is effectively ignoredMODF — Mode Fault FlagThis bit is set if the SS input becomes low while the SPI is configured as a master.The flag is cleared automatically by a read of the SPI status register (with MODF set) followed by a write to the SPI control register 1. The MODF flag is set only if the MODFEN bit of SPICR2 register is set. Refer to MODFEN bit description in 3.3.2 SPI Control Register 2.1 = Mode fault has occurred.0 = Mode fault has not occurred.Register Address: $___3Bit 7654321Bit 0R SPIF 0SPTEF MODF 0000W Reset:10= ReservedFigure 3-6 SPI Data Register (SPIDR)Read:anytime; normally read only after SPIF is set Write:anytime; see SPTEFThe SPI Data register is both the input and output register for SPI data.A write to this register allows a data byte to be queued and transmitted. For a SPI configured as a master, a queued data byte is transmitted immediately after the previous transmission has completed. The SPI Transmitter empty flag in SPISR indicates when the SPI data register is ready to accept new data.NOTE:Do not write to the SPI data register unless the SPTEF bit is high.Reading the data can occur anytime from after the SPIF is set to before the end of the next transfer.If the SPIF is not serviced by the end of the successive transfers, those data bytes are lost and the data within the SPIDR retains the first byte until SPIF is serviced.NOTE:After reset the content of the SPI Shift Register is undefined until a data byte is stored into SPIDR.Register Address: $___5Bit 7654321Bit 0R Bit 7654322Bit 0W Reset:Section 4 Functional Description4.1 GeneralThe SPI module allows a duplex, synchronous, serial communication between the MCU and peripheral devices. Software can poll the SPI status flags or SPI operation can be interrupt driven.The SPI system is enabled by setting the SPI enable(SPE)bit in SPI control register1.While SPE is set, the four associated SPI port pins are dedicated to the SPI function as:•Slave select (SS)•Serial clock (SCK)•Master out/slave in (MOSI)•Master in/slave out (MISO)The main element of the SPI system is the SPI data register. The 8-bit data register in the master and the 8-bit data register in the slave are linked by the MOSI and MISO pins to form a distributed16-bit register. When a data transfer operation is performed,this16-bit register is serially shifted eight bit positions by the SCK clock from the master;data is exchanged between the master and the slave.Data written to the master SPI data register becomes the output data for the slave, and data read from the master SPI data register after a transfer operation is the input data from the slave.A write to the SPI data register puts data into the transmit buffer if the previous transmission was complete. When a transfer is complete, received data is moved into a receive data register. Data may be read from this double-buffered system any time before the next transfer is complete. This 8-bit data register acts as the SPI receive data register for reads and as the SPI transmit data register for writes.A single SPI register address is used for reading data from the read data buffer and for writing data to the shifter.The clock phase control bit(CPHA)and a clock polarity control bit(CPOL)in the SPI control register1 select one of four possible clock formats to be used by the SPI system. The CPOL bit simply selects a non-inverted or inverted clock. The CPHA bit is used to accommodate two fundamentally different protocols by shifting the clock by a half cycle or by not shifting the clock (see4.4 Transmission Formats).The SPI can be configured to operate as a master or as a slave.When MSTR in SPI control register1is set, the master mode is selected; when the MSTR bit is clear, the slave mode is selected.4.2 Master ModeThe SPI operates in master mode when the MSTR bit is set. Only a master SPI module can initiate transmissions. A transmission begins by writing to the master SPI data register. If the shift register is empty, the byte immediately transfers to the shift register. The byte begins shifting out on the MOSI pin under the control of the serial clock.The SPR2, SPR1, and SPR0 baud rate selection bits in conjunction with the SPPR2, SPPR1, and SPPR0 baud rate preselection bits in the SPI baud rate register control the baud rate generator and determine thespeed of the shift register. The SCK pin is the SPI clock output. Through the SCK pin, the baud rate generator of the master controls the shift register of the slave peripheral.In master mode,the function of the serial data output pin(MOSI)and the serial data input pin(MISO)is determined by the SPC0 and MSTR control bits.The SS pin is normally an input which should remain in the inactive high state. However, in the master mode, if both MODFEN bit and SSOE bit are set, then the SS pin is the slave select output.The SS output becomes low during each transmission and is high when the SPI is in the idling state.If the SS input becomes low while the SPI is configured as a master,it indicates a mode fault error where more than one master may be trying to drive the MOSI and SCK lines simultaneously. In this case, the SPI immediately clears the output buffer enables associated with the MISO,MOSI(or MOMI),and SCK pins so that these pins become inputs.This mode fault error also clears the MSTR control bit and sets the mode fault(MODF)flag in the SPI status register.If the SPI interrupt enable bit(SPIE)is set when the MODF bit gets set, then an SPI interrupt sequence is also requestedWhen a write to the SPI data register in the master occurs,there is a half SCK-cycle delay.After the delay, SCK is started within the master.The rest of the transfer operation differs slightly,depending on the clock format specified by the SPI clock phase bit, CPHA, in SPI control register 1 (see4.4 Transmission Formats).4.3 Slave ModeThe SPI operates in slave mode when the MSTR bit in SPI control register1is clear.In slave mode,SCK is the SPI clock input from the master,and SS is the slave select input.Before a data transmission occurs, the SS pin of the slave SPI must be at logic 0.SS must remain low until the transmission is complete.In slave mode, the function of the serial data output pin (MISO) and serial data input pin (MOSI) is determined by the SPC0bit in SPI control register2and the MSTR control bit.While in slave mode,the SS input controls the serial data output pin; if SS is high (not selected), the serial data output pin is high impedance,and,if SS is low the first bit in the SPI data register is driven out of the serial data output pin. Also,if the slave is not selected(SS is high),then the SCK input is ignored and no internal shifting of the SPI shift register takes place.Although the SPI is capable of duplex operation,some SPI peripherals are capable of only receiving SPI data in a slave mode. For these simpler devices, there is no serial data out pin.NOTE:When peripherals with duplex capability are used,take care not to simultaneously enable two receivers whose serial outputs drive the same system slave’s serial dataoutput line.As long as no more than one slave device drives the system slave’s serial data output line,it is possible for several slaves to receive the same transmission from a master, although the master would not receive return information from all of the receiving slaves.If the CPHA bit in SPI control register1is clear,odd numbered edges on the SCK input cause the data at the serial data input pin to be latched. Even numbered edges cause the value previously latched from the serial data input pin to shift into the LSB of the SPI shifter.。
第11章MC9S12XS系列串行通信接口模块与其应用实例
11.3 SCI模块寄存器
11.3.6 SCI控制寄存器2(SCICR2)
RIE:接收器满中断使能位,该位使能允许SCISR1寄存器中的接收数据 寄存器满标志位RDRF或者溢出标志位OR产生中断请求。
0表示禁止RDRF或OR中断请求; 1表示允许RDRF或OR中断请求。 ILIE:空闲线中断使能位,该位使能允许SCISR1寄存器中的空闲线标志 位IDLE产生中断请求。 0表示禁止IDLE中断请求; 1表示允许IDLE中断请求。 TE:发送器使能位,该位使能允许使用SCI发送器,TXD引脚由SCI控制 ,TE位能够用于发送空闲报头。 0表示SCI禁用发送器; 1表示SCI使用发送器。
11.3 SCI模块寄存器
11.3.1 SCI波特率寄存器(SCIBDH,SCIBDL)
SBR12~SBR0:SCI波特率选择位,SCI波特率由这13位确定。根据 IREN位的设定值,有以下2种方法计算波特率。
波特率计算公式如下,当IREN=0时: SCI波特率=SCI总线时钟/ (16×SBR[12:0])
11.3 SCI模块寄存器
11.3.1 SCI波特率寄存器(SCIBDH,SCIBDL)
SCI波特率寄存器(SCI Baud Rate Registers)用来设置SCI波特率,同 时还用于控制红外调制/解调子模块,由SCI波特率高字节寄存器(SCIBDH) 和SCI波特率低字节寄存器(SCIBDL)组成。该寄存器如图11.2和图11.3所示 。波特率计算公式为
传送完成; 接收器满;
13位波特率; 可编程8位或9位数据格式; 独立使能发送器和接收器; 可编程的发送器和接收器极性; 可编程的发送器奇偶校验; 两种接收器唤醒模式:
线路空闲唤醒;
空闲接收器输入; 接收器溢出错误; 噪声错误; 帧错误; 奇偶校验错误; 支持LIN发送冲突检测; 支持LIN间隔检测;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 1 2 3 4 5 6 7 8
11.2 SCI串行通信接口 SCI串行通信---异步通信,最常用;SCI基本概念: 1、异步串行通信的格式(NRZ,8位或9位,异步通信:每一数据块的字符以起
始位“0”表示开始;停止位 “1”表示结束)
开始位 第0位 第1位 第2位 第3位 第4位 第5位 第6位 第7位 停止位
SBR7 SBR6 SBR5 SBR4
SBR3 SBR2 SBR1
波特率计算公式:波特率=总线频率/(16xBR),编程时按16位送数,如: LDX #13 STX SCI0BD ; 2MHz/(16x13)=9600bps
重庆大学通信工程学院 任勇
(2) SCI控制寄存器---SCIxCR1、SCIxCR2
P
P
0
1
2
3
4
5
6
7
L
1
1
1
1
1
3
4
5
6
2
1
1
0
1
2
3
4
5
1
1 6
2
1 5
3
1 4
4
1 3
5
1 2
6
1 1
7
1 0
【实例】SPI输入的开关检测。(74LS165:并入串出)
8
9
1
1
1
1
1
1
1
6
5
4
3
2
1
0
9
1
R
VCC
0
1
SW-DIP8
S K
使用SPI,节省MCU的引脚,但须增加外接移位寄存器。
SPI接口还方便于:对一些具有SPI接口能力的芯片可以直接连接 通信,如AD采集芯片TLC2543。
第11章 S12串行通信模块
MCU与外设进行数据交换称为通信,方法: 并行---多位同时传输。速度快,距离近,占引脚多 串行---逐位顺序传输。速度慢,距离远,占引脚少 串行通信须遵守通信协议,S12集成:SPI、SCI、CAN、I2C等
11.1 SPI串行通信接口
SPI(Serial Peripheral Interface)---串行外设接口,一种同步串行 通信系统,即收、发双方共享同一个时钟信号。 SPI通信原理:
U
0
MOSI
MISO
TXD
RXD
SCK
S
S
VCC
VCC
1
R
0
9
K
9
8
2
1
74LS164
U
M
B
A
1
CLK
R
Q
Q
Q
Q
Q
Q
Q
Q
7
6
5
4
3
2
1
0
1
1
1
1
6
5
4
3
【实例】SPI输出控制的跑马灯。(74LS164:串入并出)
2、发送或接收1个字节
3
2
1
0
SPI寄存器具体定义见书,不确定时用默认;用时查对。
重庆大学通信工程学院
LED8
LED7
LED6
LED5
LED4
LED3
LED2
LED1
任勇
1 0 0
R
1
R
1
R
1
R
1
R
1
R
1
R
1
R
0
0
0
0
0
0
0
8
7
6
5
4
3
2
1
0
0
0
0
0
0
0
程序略…
MCU
Freescale
U
0
MOSI
MISO
TXD
RXD
SCK
S
S
VCC
9
7
74LS165
U
Q
Q
2
7
Hale Waihona Puke 7CLK1CLK2
SER
P
P
P
P
P
P
P
2.串行通信的波特率
定义:每秒内传送的位数 单位:b/s或bps 常用:1200bps、4800bps、9600bps……
3.奇偶校验
奇校验:校验位为0或1,使得1的数目是奇数 偶校验:校验位为0或1,使得1的数目是偶数
4.串行通信的传输方式
单工:1根数据线 全双工:2根数据线;常用 半双工:1根数据线
重庆大学通信工程学院 任勇
(4) SCI数据寄存器---SCIxDRH、SCIxDRL
高位SCIDRH
Bit7 R8 Bit6 T8 Bit5 \ Bit4 \ Bit3 \ Bit2 \ Bit1 \ Bit0 \
低位SCIDRL
Bit7 R7/T7
Bit6 R6/T6
Bit5 R5/T5
Bit4 R4/T4
重庆大学通信工程学院
任勇
SCI串行通信接口的应用程序 基本编制方法: 1、初始化:设置波特率、设置2个控制寄存器 2、发送数据:先判断是否可以发送数据,可以时再发送 3、接收数据:先判断是否可以接收数据,可以时再接收
【实例】查询方式的SCI串行口收发数据。(可连接PC机)
重庆大学通信工程学院
任勇
读/写 设置传输格式、中断使能 只读 中断标志、发送与接收状态 读/写 设置波特率 只读 读取各个状态标记位 读/写 收发的数据
注:由于有两个串行外设接口(SPI0/SPI1),编程使用时, 寄存器名称中SPI改为SPIx,x=0,1。
重庆大学通信工程学院 任勇
编程基本方法: 1、初始化
MCU
Freescale
U 1 VCC C 1 1 6 5 1 u C1+ VCC F C MCU 1 C 1 u F 3 2 3 1 u C1V 4 + C2+ V C 2 6 C 1 u F 1 u 4 F F
PC-
串
口
连
接
5
1
C2-
G
N
D
5
TXD
1
1
1
4
RXD
2
6
1
1
T1IN
T1OUT
1
2
1
3
TXD
3
7
1
R1OUT
RXD
举例:设置禁止中断、允许发送、允许接收,查询方式收发 SCI0CR2=0x0C;
(3) SCI状态寄存器---SCIxSR1
Bit7
TDRE
Bit6
TC
Bit5
RDRF
Bit4
IDLE
Bit3
OR
Bit2
NF
Bit1
FE
Bit0
PF
常用: TDRE:发送寄存器空标志。1=可以发送数据;0=不可以发送数据,需等待 RDRF:接收数据满标志。 1=可以取出数据;0=不可以取出数据,需等待
重庆大学通信工程学院 任勇
11.1.1 SPI工作模式 3种: 主机模式 从机模式 双工模式 11.1.2 SPI寄存器
地址
SPI0
$00D8 $00D9 $00DA $00DB $00CD
SPI1
寄存器名称与缩写
访问 权限
基本功能
$00F0 控制寄存器1(SPICR1) $00F1 控制寄存器2(SPICR2) $00F2 波特率寄存器(SPIBR) $00F3 状态寄存器(SPISR) $00F5 数据寄存器(SPIDR)
主 MCU 移位寄存器 MISO MOSI SPSCK 波特率发生器 MISO MOSI SPSCK 从 MCU 移位寄存器
1个时钟(SCK)
2个数据信号(MISO,MOSI) 1个从机选择信号(SS)
重庆大学通信工程学院
任勇
SPI模块的内部组成 如图11-1,主要包括: 8位移位寄存器、时钟控制逻辑、引脚控制逻辑、SPI控制逻 辑、分频器、波特率寄存器、状态寄存器、SPI控制寄存器。 其中:总线时钟经波特率寄存器进行分频选择后作为SPI时钟 源,核心是8位移位寄存器,在SCK的作用下,数据寄存器的 数据从8位移位寄存器移出或移入。控制寄存器负责控制SPI工 作方式,状态寄存器负责记录SPI工作状态。 SPI模块的外部引脚 当SPI模块使能时,S口的PS7~PS4变为SPI的MISO、MOSI、 SS、SCK引脚:
重庆大学通信工程学院 任勇
5. RS-232C串行通信标准
采用负逻辑:逻辑“1”:-15V~-3V ;逻辑“0”:+3V~+15V 传输距离≤30m,通信速率≤20Kbps 接口:9芯;常用3线:地(GND)、发送数据(TXD)、接收数据(RXD)
6. SCI的电平转换电路(MCU与MCU之间无需)
R1IN
1
0
7
T2IN
T2OUT
9
8
G
N
D
R2OUT
MAX232
R2IN
5
9
4
8
7. SCI通信的基本工作原理
MCU与PC机串行通信电路
接收时,把外部单线输入的串行数据变成1个字节的并行数据送入MCU 发送时,把需要发送的1个字节的并行数据转换为串行数据单线输出
重庆大学通信工程学院 任勇
DB9
11.2.2 SCI的寄存器设置 (1)SCI波特率寄存器---SCIxBDH、SCIxBDL(共16位)
高8位SCIBDH 低8位SCIBDL