DSPF28335---SPI模块
DSP28335的调试总结,这是一份总结很全面的资料,我在学

DSP28335的调试总结,这是一份总结很全面的资料,我在学习开发板的一些总结,希望能得到同行的帮助,愿与大家一起学习和分享1DSP的PWM信号1.1简介DSP28335共12路16位的ePWM,能进行频率和占空比控制。
ePWM的时钟TBCLK=SYSCLKOUT/(HSPCLKDIV×CLKDIV):PWM信号频率由时基周期寄存器TBPDR和时基计数器的计数模式决定。
初始化程序采用的计数模式为递增计数模式。
在递增计数模式下,时基计数器从零开始增加,直到达到周期寄存器值(TBPDR)。
然后时基计数器复位到零,再次开始增加。
PWM信号周期与频率的计算如下:1.2端口对应关系通道相应PWM的A/B对应JP0B端口号1ePWM1A92ePWM1B103ePWM2A114ePWM2B125ePWM3A136ePWM3B147ePWM4A158ePWM4B169ePWM5A1710ePWM5B1811ePWM6A1912ePWM6B20说明:JP0B的端口号按“Z”字形顺序数。
1.3初始化程序注释void InitPwm1AB(float32f){Uint16T= 2343750/f-1.0;//系统时钟SYSCLKOUT=150MHz,TBCLK=6.6666667ns,在连续增计数模式下,f=150000000/(TBPDR+1) EALLOW;//先初始化通用输入输出口//GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0;GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1;GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0;GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1;EPwm1Regs.TBPHS.half.TBPHS= 0; // 在相位寄存器中设置计数器的起始计数位置//下面两条语句组合对PWM的时钟进行分频EPwm1Regs.TBCTL.bit.CLKDIV = 6;EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;EPwm1Regs.TBPRD = T; //在周期寄存器中设置计数器的计数周期//TBCTL为定时器控制寄存器EPwm1Regs.TBCTL.bit.CTRMODE= TB_COUNT_UP; //设置计数模式位为连续增计数模式,产生对称方波EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 将定时器相位使能位关闭EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;//映射寄存器SHADOW使能并配置映射寄存器为自动读写EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; // 定时器时钟源选择,一共有四种时钟源EPwm1Regs.CMPA.half.CMPA= 0.0001*T;// 设置EPWM1A比较值寄存器的比较值,即体现EPWM1A的占空比EPwm1Regs.CMPB= 0.0001*T;EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;//A模块比较模式EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;//B模块比较模式EPwm1Regs.CMPCTL.bit.LOADAMODE= CC_CTR_ZERO; // A模块比较使能,通过写0来清除SHDWAMODE位来使能load on CTR=ZeroEPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // B模块比较使能,通过写0来清除SHDWBMODE位来使能load on CTR=Zero//AQCTLA为输出A比较方式控制寄存器EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET; // TBCTR(计数器)计到零时使输出为反向EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;//TBCTR(计数器)与CMPA在up 计数时相等使输出为high,这关系的输出的占空比EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET;EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;EDIS;}2DSP的CAN通信2.1CAN2.0B协议简述TMS320F28335上有2个增强型CAN总线控制器,符合CAN2.0B协议,其总线波特率可达到1Mbps。
第六章 TMS320F28335片内外设_CAN,SPI资料讲解

现场总线CAN通信编程及应用.
教学内容:
第一节:TMS320F28335系列SPI通信接口 第二节: TMS320F28335系列CAN总线通信接口
DSP原理与应用
2020年7月15日
2
§6.1.1 TMS320F2833x系列SPI通信
SPI模块的主要特点: 四个外部引脚
SPISOMI: SPI slave-output/master-input pin SPISIMO: SPI slave-input/master-output pin SPISTE: SPI slave transmit-enable pin SPICLK: SPI serial-clock pin 两个可编程模式: 主(master)和从(slave) 125种可编程 波特率设置. 数据长度1至16位. 四种时钟模式 接收和发送可同时操作(发送功能可以软件禁止) 12个SPI模块控制寄存器 增强特性 16级发送/接收FIFO; 延时传输控制.
SPIDAT (SPI data register). Contains data to be transmitted by the SPI, acting as the transmit/receive shift register. Data written to SPIDAT is shifted out on subsequent SPICLK cycles. For every bit shifted out of the SPI, a bit from the receive bit stream is shifted into the other end of the shift register
DSP原理与应用
关于28335各个模块的理解

PWM的使用// Configure ePWM1// Setup TBCLKEPwm1Regs.TBPRD = EPWM_TIMER_TBPRD;// Set timer period 1500/2 TBCLKsEPwm1Regs.TBPHS.half.TBPHS = 0x0000; // Phase is 0EPwm1Regs.TBCTR = 0x0000; // Clear counter// Set Compare valuesEPwm1Regs.CMPA.half.CMPA = EPWM_CMPAB; // Set compare A value// EPwm1Regs.CMPB = EPWM_CMPAB; // Set Compare B value// Setup counter modeEPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up downEPwm1Regs.TBCTL.bit.PHSEN = TB_ENABLE; // enable phase loading use for syncEPwm1Regs.TBCTL.bit.PHSDIR=TB_UP;EPwm1Regs.TBCTL.bit.SYNCOSEL=TB_SYNC_IN;EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV2+TB_DIV4+TB_DIV4; // TBClock ratio = SYSCLKOUT/(2*HSPCLKDIV*EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1; // 2^CLKDIV)// Setup shadowingEPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;// EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // Load on Zero// EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;// Set actionsEPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM1A on event A, up countEPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR; // Clear PWM1A on event A, down count// EPwm1Regs.AQCTLB.bit.CAU = AQ_CLEAR; //Clear PWM1B on event A, up count// EPwm1Regs.AQCTLB.bit.CAD = AQ_SET; // Set PWM1B on event A, down count// Set DeadBandEPwm1Regs.DBCTL.bit.IN_MODE=DBA_ALL;EPwm1Regs.DBCTL.bit.POLSEL=DB_ACTV_HIC;EPwm1Regs.DBCTL.bit.OUT_MODE=DB_FULL_ENABLE;EPwm1Regs.DBRED=Dbred; // Dead-band rising edge delayEPwm1Regs.DBFED=Dbfed; // Dead-band falling edge delay// Set Trip ZoneEPwm1Regs.TZSEL.bit.OSHT1=TZ_ENABLE;EPwm1Regs.TZCTL.bit.TZA=TZ_FORCE_LO;EPwm1Regs.TZCTL.bit.TZB=TZ_FORCE_LO;// Interrupt where we will change the Compare ValuesEPwm1Regs.ETSEL.bit.SOCBSEL= ET_CTR_ZERO;// Select start ADC (EPWMxSOCB) on Zero eventEPwm1Regs.ETSEL.bit.SOCBEN= Enable; // EnableEPwm1Regs.ETPS.bit.SOCBPRD=ET_1ST;主要注意的就是EPWM的死区子模块。
28335概述

代表器件:TMS320F28335
C2000系列DSP
Roadmap
High-Precision Control
High-end Derivatives
Control Performance
F2812 179-u*BGA
F2810 176-LQFP 128-LQFP
Application specific versions
EMU1
8 6
P1 P8 2
VDUJVKL 84 Mil L9 TEST1 TEST2 81 K1 82 0 Pll
3.3 VFlash的内核电激引脚•该引脚应该一直连在3.3 V电源 上 测试引脚.为TI保留.使用时必须觝空(I/O〉
M7 测试引脚.为TI保留.使用时必须悬空(I/O〉 L7
XCLKOUT
引导(BOOT)ROM(8K X 16) 带有软件启动模式 数学运算表 16位或32位外部存储器扩展接口 多达2M的寻址空间 时钟和系统控制 支持动态改变锁相环的倍频系数 片上震荡器 看门狗定时模块
GPI00-GPI063能被设置位8个外部中断 外设中断扩展模块(PIE)支持58个外设中断 三个32位CPU定时器128位保护密码 保护Flash/OTP/ROM 防止系统固件被盗取 增强的电机控制外设 多达18通道的PWM输出
GPI05
EPWM3B MFSRA eCAPl GPI06 EPWM4A EPWMSYNCL EPWMSYNCO GPI07 EPWM4B MCLKRA
CANRXB
MDRB GPI014
GPI017 SPISOMIA CANRXB 6(1) 01)1018 SP1C1.KA SCITXDB CANRXA GPI019 SPISTEA SCIRXDB CANTXA GPIO20 cQEPl 八 MDXA CANTXB GPI021 cQEPlB MDRA CANRXB GPI022 65 P7 64 L7 63 K7 62 L6 28 J1
TMS320F28335经验若干

TMS320F28335开发过程中常见问题总结1.SPI驱动TLE7241E出现返回值不对的问题。
主要是由于时序的不对,导致TLE7241E输入采样时数据还没有建立,所以TLE7241E 收到的命令不正确,所以返回值不正确。
2.SPI驱动EEPROM时,如果用金属物触到clock pin时,能正确运行,否则不能正确运行。
出现次问题也是由于时序的问题,金属物触到clock导致clock出现微小幅度的偏移,导致正好和eeprom 的时序对上,而不用金属物触碰时时序不正常,当使dsp MOSIpin数据发送提前半个周期后,eeprom工作正常。
3.示波器有时会导致显示的波形被消尖,所以用示波器测量时周期不能太大。
TMS320F28335笔记-I2C1.响应和非响应的区别是什么?关于i2c的响应问题:对于每一个接收设备(从设备,slaver),当它被寻址后,都要求在接收到每一个字节后产生一个响应。
因此,the master device 必须产生一个额外的时钟脉冲(第九个脉冲)用以和这个响应位相关联。
在这个脉冲期间,发出响应的从设备必须将SDA拉低并在时钟脉冲的高电平期间保持住。
这表示该设备给出了一个ACK。
如果它不拉低SDA线,就表示不响应(NACK)。
另外,在从机(发送方)发送完最后一个字节后主设备(接收方)必须产生一个不响应位,用以通知从机(发送方)不要再发送信息了,这样从机就知道该将SDA释放了,而后,主机发出一个停止位给slaver。
总结下,i2c通讯中,SDA 和 SCL 都是有主机控制的,从设备只是能够将SDA线拉低而已。
对于SCL线,从机是没有任何能力去控制的。
从机只能被动跟随SCL再说的清楚些:主机发送数据到从机的状态下:主机控制SCL信号线和SDA信号线,从机只是在SCL线为高的时候去被动读取SDA线。
主机读取从机的数据:主机来发出时钟信号,从机只是保证在时钟信号为高电平的时候的SDA的状态而已。
F28335 EPWM各模块简介

F28335 EPWM各模块简介以DSP为基础的数字信号控制器(DSC)执行电动马达相位控制时,其核心组件为事件管理器(Event Manager)。
由于以DSP为基础的控制器应用范围正逐渐扩大到高效能电子产品的触发与控制等各种相关领域,因此这类事件管理器也需要一套全新架构。
以德州仪器(TI)基于DSP的24x和F28x数字信号控制器来看,事件管理器是由DSP 的可程式逻辑电路构成,以便产生脉冲宽度调变(PWM)信号。
这些事件管理器虽然是为了三相系统所设计,却拥有极大弹性,可以高效率应用在多相位或其它特殊需求应用(或许再加上一些软件)。
事件管理器的功能已通过数个世代的处理器考验与测试,只需要进行一些细部调整即可。
针对新的应用需求,TI开发出一套称为加强型事件管理器(eEVM)的架构,将应用于F28x衍生系列的新元件,包括TMS320F2801、TMS320F2806和TMS320F2808控制器(TMS320F2801已实作部份功能)。
加强型事件管理器的PWM产生方式与过去有很大差异。
如图1所示,事件管理器总共有6个加强型PWM(EPWM)模组,每个都能产生两组独立的PWM信号。
这6个模组拥有完全相同的功能和设定方式,因此每个模组都能独立产生中断要求、并在不同的时间点上触发模拟数字转换器。
除此之外,这些模组还能同步操作以便在同样的时基上产生PWM信号。
举例来说,若有两个完全相同的三相电动马达,就可以让EPWM1模组的时基与EPWM2和EPWM3同步,同时也让EPWM4的时基与EPWM5和EPWM6同步,以便使两个马达独立操作。
另一种做法是让EPWM1的时基与另外五个模组同步,这样两个马达就能在同一时间启动操作。
图1:F2808控制器的加强型事件管理器共有6个EPWM模组EPWM模组的架构如图2所示,每个模组都包含数个次模组。
如果要产生PWM信号,至少需要连接一个计时器和相关逻辑电路,以便在可程式设定的不同时间产生事件。
DSP原理与应用2011-第六章 TMS320F28335片内外设_CAN,SPI

DSP原理与应用The Technology & Applications of DSPs 第六讲TMS320F28335片内外设---CAN,SPI北京交通大学电气工程学院夏明超郝瑞祥万庆祝mchxia@haorx@qzhwan@TMS320F28335---CAN,SPI 第六讲片内外设,教学目标:掌握TMS320F28335芯片现场总线CAN通信接口,SPI串行外设接口通信相关知识;教学重点:掌握TMS320F28335芯片常用串行通信接口的特点和应用.教学难点:现场总线CAN通信编程及应用.教学内容:第一节:TMS320F28335系列SPI通信接口第二节: TMS320F28335系列CAN总线通信接口6.1.1 TMS320F2833x SPI§6S30833系列S通信SPI模块的主要特点:◆四个外部引脚SPISOMI: SPI slave-output/master-input pinSPISIMO: SPI slave-input/master-output pinSPISTE: SPI slave transmit-enable pinSPISTE:SPI slave transmit enable pinSPICLK: SPI serial-clock pin◆两个可编程模式: 主(master)和从(slave)◆125种可编程波特率设置.◆数据长度1至16位.◆四种时钟模式◆接收和发送可同时操作◆12个SPI模块控制寄存器◆增强特性16级发送/接收FIFO;延时传输控制.SPI 模块C PU 接口SPI 模块内部结构框图§6.1.2 典型SPI主/从通信连接模式一) (MASTER)()主模式()在该模式下(MASTER/SLAVE = 1), SPI模块通过SPICLK引脚提供整个串行通信网络的时钟. 数据通过SPISOMI引脚接收. SPIBRR寄存器决定网络上发送和接收的波特率。
基于DSP28035的高速永磁无刷直流电机驱动系统硬件设计

系统硬件设计图3.1为该系统硬件总体框图,整个系统由功率驱动电路、调理与保护电路、DSP控制电路及无刷直流电机本体四大部分组成。
本节将分为两部分,即功率驱动硬件部分和数字控制硬件部分,阐述该系统的硬件设计。
图3.1 无刷直流电机系统硬件框图3.1功率与驱动电路本节先根据系统的特点,分析电路的拓扑选择,然后按照电路的三级结构,逐级说明其具体实现过程。
3.1.1 功率电路拓扑选择该电路输入单相交流电(220V/50Hz),输出直接驱动无刷直流电机。
电机前级需有三相逆变桥实现换相,由于电机频率较高,因而受三相逆变桥开关频率的限制,无法采用逆变桥PWM脉宽斩波控制实现调速控制。
本功率系统结构选择“交流-直流-直流-交流”方式,即在逆变桥前级加入buck电路,采用buck调压调速方式控制该高速永磁无刷直流电机。
功率电路结构框图如图3.2所示。
图3.2 功率电路结构框图3.1.2 启动缓冲电路图 3.2中第一级采用二极管不控整流,再用大电容滤波后得稳定直流电压1U 。
电路上电时,由于电容1C 两端电压不能突变,上电产生瞬间的大电流给其充电,该电流太大将造成1C 损坏。
为此,电路中加入了启动缓冲电路。
如下图3.3所示,上电时晶闸管1Q 尚未导通,通过11R C 串联回路给1C 充电,充电电流较小,1U 缓慢上升,电容受到保护。
再利用电阻2R 、3R 对1U 分压采样,当1U 上升到约输入电压峰值的90%时,采样电压1s U 将超过设定的门限电压TH U ,通过比较器后驱动光耦,从而触发晶闸管导通。
晶闸管导通后,1R 被短路,电路进入正常工作状态。
此后向后级供电的过程中,晶闸管一直导通,2R 、4R 的阻值非常大,不对后级产生影响。
后级关断或电路掉电时,1Q 关断,4R 为1C 提供放电回路。
图中TH U 由CC V +经电阻分压得到,而CC V +是由/AC DC 模块电源获得。
G AU 1s U Q 1图3.3 启动缓冲电路示意图3.1.3 直流-直流变换该环节实现调压调速功能,直接利用Buck 变换器降压,但电机满载时该电路输出电流很大,所需输出滤波电感太大。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DSPF28335---SPI模块
DSPF28335--串行外设接口(SPI模块)
问题1:什么是串行外设接口(SPI)?
答:SPI(Serial Peripheral Interface)接口是高速同步串行I/O接口。
问题2:串行通信接口(SCI)和串行外设接口(SPI)主要区别?
答:(1)SPI采用同步通讯方式,除了发送和接受两根线之外,还需要一根同步时钟线;SCI采用异步通信方式,只需要发送和接收两根线,通讯双方微处理器使用各自的时钟。
(2)SPI适用于板上短距离高速通讯;SCI适用于对另外的外设长距离的低速率通讯,在默认状态下,其最高通讯速率只相当于SPI通讯速率的1/4。
(3)SPI的时钟可反映在外在的同步时钟线上;SCI的时钟时隐藏的。
问题3:TMS320F28335有几个SPI接口模块?
答:有一个专门的SPI模块,另外两个McBSP也可以配置为SPI接口。
问题4:F28335SPI接口由几组寄存器控制?
答:12组,位于控制寄存器帧0x7040h开始的位置。
问题5:SPI FIFO模式下如何对传输和接收16级FIFO进行操作?
直接对SPITXBUF寄存器进行赋值以传输数据。
例如:SpiaRegs.SPITXBUF=sdata[i],此操作可理解为:首先使TXFIFO
头指针加1,然后把值写入TXFIFO头指针指向的位置。
如果当前没有一个激活的传输过程时,对SPITXBUF的写入会激活一个传输过程。
直接读取SPIRXBUF寄存器的值以接收数据。
例如:
rdata[i]=SpiaRegs.SPIRXBUF,此操作可理解为:首先从RXFIFO 头指针处读取1个字符,然后使RXFIFO头指针减1。
问题6:SPI FIFO模式下传输和接收中断何时产生?
答:是在数据传输或接收结束后,再判断传输和接收FIFO队列中有多少数据(SPIFFTX.TXFFST(4-0)和SPIFFRX.RXFFST(4-0)的值)。
对于传输FIFO如果FIFO中数据小于等于TXFFIL(4-0)(此寄存器指定临界值)指定的值时会触发中断,在中断处理过程中继续传输数据。
对于接收FIFO如果FIFO中的值大于等于RXFFIL(4-0)(此寄存器指定能够容忍的最大值)中指定的值时触发中断,在中断处理过程中继续接收数据。
故FIFO模式下中断触发条件除了标准SPI 模式下的数据传输接收完毕的条件外还要满足FIFO中的数据小于等于TXFFIL或大于等于RXFFIL设定值的条件,在两个条件都满足的情况下才会触发中断。
问题7:如果只接收数据不发送数据如何激活接收过程?
答:SPI的的接收过程必须依赖传输过程,故即使值接收数据也必须对SPITXBUF写入以激活一个传输过程来接收数据。
SPI配置控制寄存器(SPICCR)
SPI工作控制寄存器(SPICTL)
SPI操作控制寄存器SPICTL控制这数据发送,SPI产生中断的能力,SPICLK相位和SPI的工作方式(主控制器模式或从控制器模式)。
SPI状态寄存器(SPISTS)
SPI波特率控制寄存器(SPIBRR)
SPI仿真缓冲器寄存器(SPIRXEMU)
SPI串行接收缓冲器寄存器(SPIRXBUF)
SPI串行接发送冲器寄存器(SPITXBUF)
SPI串行数据寄存器(SPIDAT)
SPI FIFO 发送,接收和控制寄存器
(1)SPI FIFO 发送寄存器(SPIFFTX)
(2)SPI FIFO 接收寄存器(SPIFFRX)
(3)SPI FIFO 控制寄存器(SPIFFCT)
SPI优先级控制寄存器(SPIPRI)
【例1】该程序为SPI典型例子例程,采用内部循环的自测模式,自发自接受,并检查错误率。
在程序中没有使用中断。
首先发送一个数据流,然后接收一个数据流,并检查错误率上述操作不断循环进行。
#include "DSP28x_Project.h" // Device Headerfile and Examples Include File
//函数声明
void delay_loop(void);//简单延时函数
void spi_xmit(Uint16 a); //SPI发送一个字符
void spi_fifo_init(void);// SPI FIFO 初始化
void spi_init(void);// SPI 初始化
void error(void);//出错处理函数,一旦数据传输有错误终止仿真
void main(void)
{
Uint16 sdata; // 发送数据
Uint16 rdata; // 接收数据
// Step 1. 初始化系统控制
InitSysCtrl();
// Step 2. 初始化SPI GPIO:
// This function is found in DSP2833x_Spi.c InitSpiaGpio();
// Step 3. 清楚中断和中断向量表
DINT; //禁止 CPU 中断
InitPieCtrl();// 初始化PIE 控制寄存器
IER = 0x0000; // 禁止CPU级中断
IFR = 0x0000; // 清除CPU interrupt flags: InitPieVectTable();// 初始化中断向量表
// Step 4. 初始化 SPI外设:
spi_fifo_init(); // 初始化Spi FIFO
spi_init(); // 初始化SPI
// Step 5. 用户代码,设置发送数据的初始值
sdata = 0x0000; for(;;)
{
spi_xmit(sdata);//发送数据
while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { } ; // 等待数据接收,RXFFST为SPIFFRX寄存器的的状态位,表示FIFO接收到的字数。
当RXFFST=0时,没有接收到字符,等待;当RXFFST=1时,接收到一个字符,转到下面的程序。
rdata = SpiaRegs.SPIRXBUF; // 检查接收的数据;
if(rdata != sdata) error();
sdata++;
}
}
// Step 7. 插入所以的全局中断服务程序(ISR)
void delay_loop()
{
long i;
for (i = 0; i < 1000000; i++) {}
}
void error(void)
{
asm(" ESTOP0"); // 测试失败!! 立刻停止!
for (;;);
}
void spi_init()
{
SpiaRegs.SPICCR.all =0x000F; // 对SPI 配置寄存器进行配置;
SpiaRegs.SPICTL.all =0x0006; // 主控模式, 无时钟延时,
// 使能发送, SPI 中断禁止.
SpiaRegs.SPIBRR
=0x007F;
SpiaRegs.SPICCR.all =0x009F; // SPI 准备接收和发送下一个子符,并且使能回送模式
SpiaRegs.SPIPRI.bit.FREE = 1; // 忽略挂起
}
void spi_xmit(Uint16 a)
{
SpiaRegs.SPITXBUF=a;
//是一个16位的串行发送缓冲寄存器。
用于存储等待发送的一个字符,如果当前发送的字符已经发送完成后,如果TX BUF FULL标志位被置位,那么寄存器的内容将会自动载入SPIDAT寄存器,于此同时TX BUF FULL标志位将被清除。
}
void
spi_fifo_init()
{
SpiaRegs.SPIFFTX.all=0xE040;
SpiaRegs.SPIFFRX.all=0x204f;
SpiaRegs.SPIFFCT.all=0x0;
}
//======================================= ====================================
// No more.
//======================================= ====================================。