X
首页
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
最能打国产芯
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
最能打国产芯
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
最能打国产芯
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
最能打国产芯
微控制器 MCU
[分享] DSP28335 硬件概述与寄存器
Jacktang
2019-2-20 20:05
楼主
1、DSP28335芯片是TI公司,偏向于控制方向、浮点型处理器,通过了解可以看出该芯片具有众多的外设,这这里只是将它看成一个超级单片机。其中这些外设的功能也很强大(复杂),所以在这里并不去深究他们的功能,而是只看他们的寄存器。
思路:
DSP数据手册-》外设功能---》寄存器名称+地址+时序图。
多功能的管脚通过寄存器去配置。
在这里不对DSP的具体外设列表与功能展开,有兴趣的可以去查阅芯片手册。
2、外设寄存器在头文件定义
外设寄存器名字+地址+功能描述
使用#define 将寄存器名称与地址联系起来
有了以上的联系,在程序中可以使用指针(寄存器名字)给寄存器赋值。
在寄存器中有很多单独定义的位域寄存器,对位单独定义可以在程序中使用更加灵活。
/********************************************************************
* SCI header file
********************************************************************/
//----------------------------------------------------------
// SCICCR communication control register bit definitions:
//
struct SCICCR_BITS { // bit deion
Uint16 SCICHAR:3; // 2:0 Character length control
Uint16 ADDRIDLE_MODE:1; // 3 ADDR/IDLE Mode control
Uint16 LOOPBKENA:1; // 4 Loop Back enable
Uint16 PARITYENA:1; // 5 Parity enable
Uint16 PARITY:1; // 6 Even or Odd Parity
Uint16 STOPBITS:1; // 7 Number of Stop Bits
Uint16 rsvd1:8; // 15:8 reserved
};
//-------------------------------------------
// SCICTL1 control register 1 bit definitions:
//
struct SCICTL1_BITS { // bit deion
Uint16 RXENA:1; // 0 SCI receiver enable
Uint16 TXENA:1; // 1 SCI transmitter enable
Uint16 SLEEP:1; // 2 SCI sleep
Uint16 TXWAKE:1; // 3 Transmitter wakeup method
Uint16 rsvd:1; // 4 reserved
Uint16 SWRESET:1; // 5 Software reset
Uint16 RXERRINTENA:1; // 6 Receive interrupt enable
Uint16 rsvd1:9; // 15:7 reserved
};
在上面的定义中,使用了操作符“:”,用来说明位域的长度,即当前位域占几位。
使用联合体。除了能够方便的访问位域外,有时候也希望能够对寄存器整体访问,使用联合体能够实现这种操作。
/********************************************************************
* SCI header file
********************************************************************/
union SCICCR_REG {
Uint16 all;
struct SCICCR_BITS bit;
};
union SCICTL1_REG {
Uint16 all;
struct SCICTL1_BITS bit;
};
7)、将添加位域后的寄存器结构体重新实现。
/********************************************************************
* SCI header file
* Defines a register file structure for the SCI peripheral
********************************************************************/
#define Uint16 unsigned int
#define Uint32 unsigned long
struct SCI_REGS {
Uint16 SCICCR_REG SCICCR; // Communications control register
Uint16 SCICTL1_REG SCICTL1; // Control register 1
Uint16 SCIHBAUD; // Baud rate (high) register
Uint16 SCILBAUD; // Baud rate (low) register
Uint16 SCICTL2_REG SCICTL2; // Control register 2
Uint16 SCIRXST_REG SCIRXST; // Receive status register
Uint16 SCIRXEMU; // Receive emulation buffer register
Uint16 SCIRXBUF_REG SCIRXBUF; // Receive data buffer
Uint16 rsvd1; // reserved
Uint16 SCITXBUF; // Transmit data buffer
Uint16 SCIFFTX_REG SCIFFTX; // FIFO transmit register
Uint16 SCIFFRX_REG SCIFFRX; // FIFO receive register
Uint16 SCIFFCT_REG SCIFFCT; // FIFO control register
Uint16 rsvd2; // reserved
Uint16 rsvd3; // reserved
Uint16 SCIPRI_REG SCIPRI; // FIFO Priority control
};
通过以上学习,可以对芯片有一个大致的了解,对28335的工程头文件中寄存器的定义有一个初步的了解,在以后的使用中,即可直接调用寄存器名字对其进行操作,这就将数据手册与头文件相对应了。
点赞
回复评论 (2)
沙发
alan000345
不错的资料,挺好的。
点赞
2019-2-21 10:53
板凳
电容器
好基础的资料分享啊。
点赞
2019-2-21 10:55
最新活动
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
30套RV1106 Linux开发板(带摄像头),邀您动手挑战边缘AI~
安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
免费申请 | 上百份MPS MIE模块,免费试用还有礼!
PI 电源小课堂|无 DC-DC 变换实现多路高精度输出反激电源
2024 瑞萨电子MCU/MPU工业技术研讨会——深圳、上海站, 火热报名中
随便看看
转载:M168训狗心得
MATLAB教程
单片机抗干扰问题
stm32f769discovery板卡实现USB_device读卡器
TI的微控制器培训课
荧光灯常用灯丝预热电路
电子工程师们的颈肩如何?
MAC下一款非常好用的串口工具,推荐给大家
EVC连接SQLCE出问题:recordset 的open方法总是提示:first—chance exception in XX.exe:0X00000f0:s
如何关闭CPU
有源滤波
BCD码和十进制的相互转换
各位大虾谁能给我个《plug and play system architecture》?非常感谢
模拟量输入
请大家帮忙看看这几个片子的型号,非常感谢
【平头哥Sipeed LicheeRV 86 Panel测评】10-视频播放测试
FAQ-CCSv5 整理的比较完善
MSP430硬件I2C程序
SJA1000独立的CAN控制器.
SMT32 LPC1768 LWIP例程...
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复