本帖最后由 czd886 于 2023-9-9 10:49 编辑

1、C54x的主机接口
C54x的主机接口(HPI)是一个8位并行口,用来实现与主设备或主处理器的通信。
主机与HPI的通信,可通过专用地址和数据寄存器、HPI控制寄存器以及使用外部数据与接口控制信号来实现。
      HPI口作为主机的外围设备,提供8根外部数据线HD(0~7)与主机(或主设备)交换信息。当’C54x与主机传送数据时,HPI能自动地将外部接口连续传来的8位数组成16位数,并传送至’C54x。当主机使用HPI寄存器执行数据传输时,HPI控制逻辑自动执行对’C54x内部的双寻址RAM的访问,以完成数据处理。
HPI接口有两种工作方式:
共用寻址模式(SAM方式):在这种方式下,主机和’C54x都能寻址HPI存储器。如果是异步工作的主机寻址,可在HPI内部重新得到同步。当’C54x与主机的周期发生冲突时,则主机具有寻址优先权,C54x将等待一个周期。
主机寻址模式(HOM方式) :在HOM方式下,HPI存储器只能让主机寻址,而’C54x则处于复位状态或IDLE2空转状态。主机可以访问HPI RAM,而C54x则配置为最小功耗。
HPI口可以支持主设备与C54x之间的高速数据传送。
HPI与主机的连接:
image.png
HPI与主机连接的信号名称和功能:
HD0~HD7:双向并行三态数据总线,与主机数据总线相连。
当不传送数据(HDSx或HCS=1)或EMU1/OFF=0(切断所有输出)时,HD7~HD0均处于高阻状态。   
HCS:片选信号,与主机地址线或控制线相连。
作为HPI的使能输入端,在每次寻址期间必须为低电平,而两次寻址之间也可以停留在低电平。
HAS:地址选通信号,与主机地址锁存使能(ALE)或地址选通引脚相连,也可以不使用。
若主机的地址和数据是一条多路总线,HAS则与主机的ALE引脚相连。在HAS的下降沿,锁存HBIL、HCNTIL0/1和HR/W信号; 若主机的地址和数据线是分开的,则HAS接高电平,此时由HDS1、HDS2或HCS中最迟的下降沿锁存HBIL、HCNTL0/1和HR/W信号。

HBIL: 字节识别信号,与主机地址线或控制线连接,用于识别主机传送来的是第几字节。
当HBIL=0时,为第1字节;当HBIL=1时,为第2字节。第1个字节是高字节还是低字节,由HPIC寄存器中的BOB位决定。
HRDY: HPI准备好端,与主机异步准备好线相连。
高电平表示HPI已准备好,可执行一次数据传送;低电平表示HPI正忙于完成当前事务。  
HCNTL0、HCNTL1:主机控制信号,与主机地址线或控制线连接,用来选择主机所要寻址的寄存器。

image.png
HDS1、HDS2:数据选通信号,与主机读选通和写选通或数据选通线连接,用于在主机寻址HPI周期内,控制HPI数据的传送。
HINT: HPI中断输出信号,与主机中断输入相连。受HPIC寄存器中的HINT位控制。
HR/W:读/写信号。与主机读/写选通、地址线或多路地址数据线连接,用于控制主机对HPI的读写操作。
当该信号为高电平时,表示主机要读HPI;
当该信号为低电平时,表示主机要写HPI。
若主机没有读/写信号,可用一根地址线代替。

2、控制寄存器HPIC
HPI控制寄存器为16位寄存器,用来控制HPI的操作。其高8位与低8位完全相同,提供了4个控制位,分别为BOB、SMOD、DSPINT和HINT位。

image.png
image.png
主机和C54x对HPIC寄存器的寻址有4种结果:
image.png
image.png
3、C54x的定时器
在工业应用中,计数器和定时器常用于检测和控制中的时序协调及控制。
C54x的片内定时器是一个可编程的定时器,可用于周期地产生中断。定时器的最高分辨率为处理器的CPU时钟速度。通过带4位预定标器的16位计数器,可以获得较大范围的定时频率。

(1)定时器的组成
定时器主要由定时寄存器TIM、定时周期寄存器PRD、定时控制寄存器TCR及相应的逻辑控制电路组成。
寄存器TIM、PRD和TCR是存储器映像寄存器,地址分别为0024H、0025H和0026H。
结构图为:

image.png
定时周期寄存器PRD:用来存放定时时间。地址:0025H
定时寄存器TIM:16位减1计数器。地址:0024H
定时控制寄存器TCR:存放定时器的控制位和状态位。地址:0026H。
逻辑控制电路:    用来控制定时器协调工作。由三个或门和一个与门组成。

image.png
(2)定时器工作原理
主定时模块包括PRD和TIM,由预定标模块定时,预定标模块每输出一个时钟,TIM减1。当TIM减到0后,TIM装入PRD的值。
当设备复位(SRESET=1)或者定时器复位(TRB=1)时,PRD的内容将装入TIM中。
主定时模块的定时中断(TINT)信号输出至CPU以及定时器的输出引脚TOUT。
预定标模块包括TCR中的TDDR和PSC位,由CPU时钟定时,每来一个CPU时钟,PSC值减1。
当PSC减至0、设备复位或定时器复位时,TDDR的内容复制到PSC中。
4位预定标计数器PSC和16位定时计数器TIM组成一个20位计数器,定时器每接收一个CPU时钟减1,当计数器减到0时,产生定时中断(TINT),同时PSC和TIM重新装入预设的值。
定时器的工作过程:
① 定时分频系数和周期数分别装入TCD和PRC寄存器中;
② 每来一个定时脉冲CLKOUT,计数器PSC减1;
③ 当PSC减至0时,PSC产生借位信号;
④ 在PSC的借位信号作用下,TIM减1计数,同时将分频系数装入PSC,重新计数;
⑤ 当TIM减到0时,定时时间到,由借位产生定时中断TINT和定时输出TOUT,并将PRD中的时间常数重新装入TIM。

(3)定时控制寄存器TCR
16位存储器映像寄存器,包含定时器的控制位和状态位。
image.png
TDDR:定时器分频系数,用来对CLKOUT进行分频,以改变定时周期。
        最大预定标值为16,最小预定标值为1。
        当PSC减到0后,以TDDR中的数加载PSC。  
TSS:定时器停止状态位,用于停止或启动定时器
       复位时,TSS位清0,定时器立即定时。
       TSS=0,定时器启动工作;
       TSS=1,定时器停止工作。
TRB:定时器重新加载位,用来复位片内定时器。
       当TRB置1时,以PRD中的数加载TIM,以及以TDDR中的值加载PSC。TRB总是读成0。
PSC:定时器预定标计数器,其标定范围为1~16。当PSC减到0后,TDDR位域中的数加载到PSC, TIM减1。
Free、Soft:软件调试控制位。Free和Soft位结合使用,用来控制调试程序断点操作情况下的定时器工作状态。

(4)定时器的初始化
  定时器的基准工作脉冲由CLKOUT提供,每来一个脉冲预定标计数器PSC减1,当PSC减至0时,下一个脉冲到来,PSC产生借位。
借位信号分别控制定时计数器TIM减1和或门2的输出,重新将TDDR的内容加载预定标计数器PSC,从而完成定时工作的一个基本周期。
定时器的定时时间为:
   定时周期 = CLKOUT×(TDDR+1)×(PRD+1)  

复位时,TIM和PRD被设置为最大值(0FFFFH),TCR中的TDDR置0,定时器可以通过启动定时控制寄存器(TCR)完成以下操作:
    ● 设定定时器的工作方式;
    ● 设定预定标计数器中的当前数值;
    ● 启动或停止定时器;
    ● 重新装载定时器;
    ● 设置定时器的分频值。

【例1】定时器自动装载定时。
TSS=0:关闭定时器;TRB=1:自动装载;TDDR=Ah:分频系数10
soft=1,free=0:计数器减至0时,停止工作;TCR=0AAAH。
定时周期:0101H;关闭定时器中断:IFR=0008H;
开放定时器中断:IMR=0008H。

image.png
【例2】方波发生器。
用TMS320VC5402实现方波发生器。假设时钟频率为4MHz,在XF端输出占空比为50%的方波,方波的周期由片上定时器确定,采用中断方法实现。
image.png
image.png