精华内容
下载资源
问答
  • C2000系列DSP外设CAN的使用
    2021-03-27 10:38:57

    CAN介绍:
    1.1Mb波特率
    2.32个邮箱,可配置为接收和发送
    3.0 - 8 字节的数据
    4. 可编程中断
    5. 时间戳功能

    CAN结构:
    主要由CAN控制器 , CAN的缓冲器(buffer), CAN邮箱构成

    CAN工作过程简介:
    接收:

    1. CPU通过寄存器对CAN控制器和邮箱进行配置,配置邮箱为接收邮箱,接收邮箱的ID号,mask 等
    2. 当接收到总线的一条数据后,先将这条数据存入buffer中
    3. CAN控制器提取buffer中消息,按照高优先级邮箱号依次比较。例如,CAN控制器将buffer的一条消息和31号邮箱的ID(包含mask)比较,如果匹配成功,则将这个消息给31号,如果不成功,则去找30号邮箱比较。如果所有邮箱全部匹配失败,则这条消息被丢弃。

    发送:
    1.CPU通过寄存器配置邮箱为发送邮箱,邮箱ID号,数据等,CPU将TRS[n]置位
    2. 控制器接收到CPU命令,将这条消息存储到发送缓冲器(buffer)中
    3 .当CAN总线空闲时,CAN控制器根据优先级,将buffer中的消息,依次发送出去。

    注意点:
    1.CAN控制寄存器是32位都和写的!
    2.关于接收的问题,如果一个邮箱接收之后,CPU没有来得及去读取这个数据,结果又有一条匹配的数据来了。如果这个邮箱的允许消息覆盖,则上一条数据被新来的消息覆盖掉,如果不允许覆盖,则CAN控制器会这条消息和其他邮箱比较。

    更多相关内容
  • DSP 外设

    2021-08-31 19:02:17
    DSP-280025 PWM 调试 #include "f28002x_device.h" #include "f28002x_examples.h" /****************************************************************************************************/ #define CPU_...

    DSP-280025 PWM 调试

    #include "f28002x_device.h"
    #include "f28002x_examples.h"

    /****************************************************************************************************/
    #define CPU_CLOCK  100e6                    //系统时钟100MHz
    //#define USR_PWM_FREQ   1039               //PWM 设定频率 1K  ,修正系数0.9623
    #define PWM_CORRECTION_FACTOR  1.039
    //#define PWM_PERIOD (CPU_CLOCK/(2*USR_PWM_FREQ)) //周期寄存器的值, 向上向下计数,所以*2
    #define TBCTLVAL   0x200E                   //控制寄存器的值

    //#define DUTY_CIRCUL  60
    //#define PWM_CMPA_VALUE  (PWM_PERIOD*DUTY_CIRCUL/100)


    #define ON_GET_PWM_TIMBASW_PERIOD(usr_PWM_Freq)  (CPU_CLOCK/(2 * usr_PWM_Freq))
    #define ON_GET_PWM_CMPA(usr_PWM_Freq,usr_PWM_DutyHigh)  ((CPU_CLOCK/(2 * usr_PWM_Freq)) * usr_PWM_DutyHigh / 100)
    //

    static void bsp_s_ePWMGpioInit(void)
    {
        EALLOW;
        /*设置时钟允许*/
        CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 1;   //BIT2 TBCLKSYNC
        CpuSysRegs.PCLKCR2.bit.EPWM5 = 1;       // ePWM5

        GpioCtrlRegs.GPAPUD.bit.GPIO8 = 0;      //使能GPIO8 内部上拉
        GpioCtrlRegs.GPAQSEL1.bit.GPIO8 = 0;    // Synch to SYSCLKOUT GPIO8 (ePWM5_A)
        GpioCtrlRegs.GPAMUX1.bit.GPIO8 = 1;     // 00:GPIO8   01:ePWM5_A  10:Reserved  11:Reserved
        GpioCtrlRegs.GPADIR.bit.GPIO8 = 1;
        EDIS;
    }

    //This function will initialize the pwm module with the
    //specified frequence and duty,
    //And start the pwm module.
    void bsp_ePWMSetUp(float _pwmFreq,float _pwmDutyHigh)
    {
        
        EALLOW;
        //Enable the clock
        CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 1;   //BIT2 TBCLKSYNC
        CpuSysRegs.PCLKCR2.bit.EPWM5 = 1;       // ePWM5

        bsp_s_ePWMGpioInit(); //初始化GPIO
     

       #if 1
        //时间基准寄存器
        EPwm5Regs.TBPRD = ON_GET_PWM_TIMBASW_PERIOD(_pwmFreq) - 1;   // 时基计数周期
        EPwm5Regs.TBPHS.all = 0;          // Set Phase register to zero
        EPwm5Regs.TBCTR = 0;              //Clear TB counter,计数器初始值为零

        EPwm5Regs.CMPA.bit.CMPA = ON_GET_PWM_CMPA(_pwmFreq,_pwmDutyHigh) * PWM_CORRECTION_FACTOR; //设定Capture A 的捕获值

        //设置TBCLK = ?M
        EPwm5Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;    // TBCLK = SYSCLK
        EPwm5Regs.TBCTL.bit.CLKDIV = TB_DIV1;

        //设置计数模式
        EPwm5Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;  //UP_DOWMCount Mode

        //设定动作
        EPwm5Regs.AQCTLA.bit.CAU = AQ_CLEAR; //当计数器等于主CMPA寄存器并且计数递增时动作:计数器等于CPMA时ePWMA输出变低
        EPwm5Regs.AQCTLA.bit.CAD = AQ_SET;   //当计数器等于主CMPA寄存器并且计数递减时动作:计数器等于周期值时wPWMA输出变高

       EPwm5Regs.CMPCTL.bit.SHDWAMODE = CC_IMMEDIATE;
        //EPwm5Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
        EPwm5Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // load on CTR = Zero
        //EPwm5Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // load on CTR = Zero
        //EPwm5Regs.AQCTLA.bit.ZRO = AQ_SET;

        EPwm5Regs.TBCTL.bit.FREE_SOFT = 2;
        EPwm5Regs.TBCTL.bit.PHSEN = TB_DISABLE;     //Phase loading disabled
        EPwm5Regs.TBCTL.bit.PRDLD = TB_SHADOW; //主周期寄存器

        EPwm5Regs.TZCLR.all = 0x0000;
        EPwm5Regs.TZSEL.all = 0x0000; //TZ2使能  0x0200
        EPwm5Regs.TZCTL.all = 0x0000;

        EPwm5Regs.AQSFRC.all  = 0x0;
        EPwm5Regs.AQCSFRC.all = 0x0;
        EPwm5Regs.DBCTL.all = 0x0;   //If trip,Do nothing, no action is taken on EPWMxA.
        #endif
        EDIS;
    }

    void bsp_ePWM_UpdateFreqAndPeriod(float _pwmFreq,float _pwmDutyHigh)
    {
        EPwm5Regs.TBPRD = ON_GET_PWM_TIMBASW_PERIOD(_pwmFreq) - 1;   // 时基计数周期
        EPwm5Regs.CMPA.bit.CMPA = ON_GET_PWM_CMPA(_pwmFreq,_pwmDutyHigh)*PWM_CORRECTION_FACTOR; //设定Capture A 的捕获值
    }

    void bsp_ePWMSetStop()
    {
        EPwm4Regs.CMPA.bit.CMPA = 5000;
    }

    展开全文
  • 没有AD、DA 等常用外设且缺少程序存储器,故其应用系统通常需进行外设扩展模块与自举模块设计,针对传统解决方案将两个模块分别实现存在扩展器件多、系统集成度不高等问题,本文提出了一种带自举功能的DSP 外设扩展...
  • 因此,需要一种快速有效的存储器测试算法对DSP外设存储器进行实时功能验证和检测,确保器件没有物理故障[1].本方法专门针对存储器中AF、SAF、SOF、TF、CF故障的检测,如图1中虚线框内所示。  在已有的故障检测...
  • 包括本网站dsp搜到的全部资料 自己感觉一个一个的下太麻烦了 所以打包之
  • dsp28335各外设实例

    2019-05-08 14:44:12
    dsp28335实例,包含adc,dma,ecan,epwm,eqep,flash等外设模块实例
  • C6000dsp外设综述

    2015-03-09 19:07:08
    TI公司C6000DSP外设的综合介绍,重要包括EMIF接口、EDMA控制器、McBSP、HPI接口等
  • DSP外设寄存器定义: 第一步:采用结构体、共用体、位域结构定义寄存器变量; 第二步:通过 pragma 伪指令将寄存器变量分配到数据段; 第三步:通过 MEMORY 伪指令指示寄存器的实际硬件空间; 第四步:通过 ...

    传统方法:

    #define CPUTIMER0 (volatile unsigned long*) 0x0c00
    

    缺点: 不便对寄存器的值进行位操作;
             无法单独查看寄存器的某一位。 

    DSP外设寄存器定义:

    • 第一步:采用结构体、共用体、位域结构定义寄存器变量;
    • 第二步:通过 pragma 伪指令将寄存器变量分配到数据段;
    • 第三步:通过 MEMORY 伪指令指示寄存器的实际硬件空间;
    • 第四步:通过 SECTION 伪指令将寄存器数据段分配到实际硬件空间。

    举例:【以 PCLKCR1 外设时钟控制寄存器1 为例(TMS320F2803x)】

    PCLKCR1 外设时钟控制寄存器1【TMS320F2803x】

    第一步:定义寄存器变量

    • 1、位域结构体定义外设时钟控制寄存器1 PCLKCR1
    struct PCLKCR1_BITS  {      // bits  description
        Uint16 EPWM1ENCLK:1;    // 0     Enable SYSCLKOUT to EPWM1
        Uint16 EPWM2ENCLK:1;    // 1     Enable SYSCLKOUT to EPWM2
        Uint16 EPWM3ENCLK:1;    // 2     Enable SYSCLKOUT to EPWM3
        Uint16 EPWM4ENCLK:1;    // 3     Enable SYSCLKOUT to EPWM4
        Uint16 EPWM5ENCLK:1;    // 4     Enable SYSCLKOUT to EPWM5
        Uint16 EPWM6ENCLK:1;    // 5     Enable SYSCLKOUT to EPWM6
        Uint16 EPWM7ENCLK:1;    // 6     Enable SYSCLKOUT to EPWM7
        Uint16 rsvd1:1;         // 7     reserved
        Uint16 ECAP1ENCLK:1;    // 8     Enable SYSCLKOUT to ECAP1
        Uint16 rsvd2:5;         // 13:9  reserved
        Uint16 EQEP1ENCLK:1;    // 14    Enable SYSCLKOUT to EQEP1
        Uint16 rsvd3:1;         // 15    reserved
    };
    
    • 2、共用体定义外设时钟控制寄存器1 PCLKCR1
    union PCLKCR1_REG {
        Uint16              all;
        struct PCLKCR1_BITS bit;
    };
    • 3、结构体定义系统控制结构体,包含系统控制所有寄存器
    struct SYS_CTRL_REGS {
        union   XCLK_REG        XCLK;        // 0: XCLKOUT Control
        union   PLLSTS_REG      PLLSTS;      // 1: PLL Status Register
        union   CLKCTL_REG      CLKCTL;      // 2: Clock Control Register
        Uint16                  PLLLOCKPRD;  // 3: PLL Lock Period Register
        union   INTOSC1TRIM_REG INTOSC1TRIM; // 4: Internal Oscillator 1 Trim
        Uint16                  rsvd1;       // 5: reserved
        union   INTOSC2TRIM_REG INTOSC2TRIM; // 6: Internal Oscillator 2 Trim
        Uint16                  rsvd2[2];    // 8-7
        
        //
        // 9: Peripheral clock control register 2
        //
        union   PCLKCR2_REG     PCLKCR2;     
        
        Uint16                  rsvd3;       // 10
        
        //
        // 11: Low-speed peripheral clock pre-scaler
        //
        union   LOSPCP_REG      LOSPCP;      
        
        //
        // 12: Peripheral clock control register
        //
        union   PCLKCR0_REG     PCLKCR0;     
        
        //
        // 13: Peripheral clock control register
        //
        union   PCLKCR1_REG     PCLKCR1;     
        
        //
        // 14: Low-power mode control register 0
        //
        union   LPMCR0_REG      LPMCR0;      
        
        Uint16                  rsvd4;       // 15: reserved
        union   PCLKCR3_REG     PCLKCR3;     // 16: Peripheral clock register
        union   PLLCR_REG       PLLCR;       // 17: PLL control register
        
        //
        // No bit definitions are defined for SCSR because
        // a read-modify-write instruction can clear the WDOVERRIDE bit
        //
        Uint16                  SCSR;      //18: System control and status register
        
        Uint16                  WDCNTR;    //19: WD counter register
        Uint16                  rsvd5;     //20
        Uint16                  WDKEY;     //21: WD reset key register
        Uint16                  rsvd6[3];  //22-24
        
        //
        // No bit definitions are defined for WDCR because
        // the proper value must be written to the WDCHK field
        // whenever writing to this register.
        //
        Uint16                  WDCR;        // 25: WD timer control register
        
        Uint16                  rsvd7[6];    // 26-30
    };
    
    • 4、定义系统控制结构体变量
    extern volatile struct SYS_CTRL_REGS SysCtrlRegs;

    第二步: 将寄存器变量分配到数据段

    代码位于:DSP2803x_GlobalVariableDefs.c

    #ifdef __cplusplus
    #pragma DATA_SECTION("SysCtrlRegsFile")
    #else
    #pragma DATA_SECTION(SysCtrlRegs,"SysCtrlRegsFile");
    #endif
    volatile struct SYS_CTRL_REGS SysCtrlRegs;

    第三步: 指示寄存器的实际硬件空间

    代码位于:DSP2803x_Headers_nonBIOS.cmd

    MEMORY
    {
    
     PAGE 1:    /* Data Memory */
    
       SYSTEM      : origin = 0x007010, length = 0x000020     /* System control registers */
    
    }

     

    表源:TMS320F2803x Piccolo™ Microcontrollers.pdf

    第四步: 将寄存器数据段分配到实际硬件空间

    代码位于:DSP2803x_Headers_nonBIOS.cmd

    SECTIONS
    {
    /*** Peripheral Frame 2 Register Structures ***/
       SysCtrlRegsFile   : > SYSTEM,      PAGE = 1
    }

     

    展开全文
  • 【DSP实验】DSP外设

    2020-05-27 12:13:37
    中断:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    中断:
    在这里插入图片描述

    展开全文
  • DSP28335外设驱动库

    2020-12-22 22:01:38
    DSP28335外设源码
  • TI DSP 外设配置文件

    2012-07-06 15:18:13
    TI DSP的配置、驱动、管理的驱动文件。
  • F2812DSP外设数据手册

    2015-03-04 09:24:42
    TI的F2812系列DSP数据手册,包含其所有外设的数据手册;
  •  DSP(数字信号处理)的优势除了处理复杂的运算,特别适用于数字滤波、语音、视频、图象处理、通信以及高速实时测控系统中已成为现代信息处理技术的重要器件,极大地促进了信号处理和测控各个领域的学术研究、产品...
  • 2407 DSP外设例程

    2010-10-18 13:43:51
    2407 DSP外设例程 spi sci da timer can
  • DSP 外设资料,还是不错的,适和新手学习用
  • TMS320C54 dsp 外设 连接!!!!!!!!!!!!!!
  • 2407 DSP外设例程.rar

    2009-07-13 12:11:58
    2407 DSP外设例程.rar 2407 DSP外设例程.rar 2407 DSP外设例程.rar
  • 单片机和模拟半导体供应商Microchip Technology不久前宣布推出首款配备多种外设的通用闪存PIC单片机,有助于实现更具成本效益的风扇或小型电机控制。全新14引脚PIC16F616/610和8引脚PIC12F615/609单片机集成了多种...
  • 学习DSP外设之UART的配置和应用

    千次阅读 2016-11-02 19:00:33
    一、Initialization The following steps are required to initialize the UART: 0.给UART模块上电 1.Perform the necessary device pin multiplexing setup (see your device-specific data manual). ...
  • 学习DSP外设之I2C的配置和应用

    千次阅读 2016-10-26 16:34:23
    一、I2C的协议这里就不赘述了,随便搜一下就可以了解。 二、I2C的初始化 1.Enable I2C clock configure the PSC register(if it is driven by PSC)PSC相关说明可以查看手册 2. Place I2C in reset ...
  • DSP外设芯片速度匹配的CPLD实现
  • 6000系列DSP的结构与外设知识介绍,能够提供关于DSP的一些详细知识。
  • DSP28335 外设时钟

    千次阅读 2016-11-21 15:06:43
    TMS320F28335通过外部时钟信号、OSC和PLL产生倍频...为了实现低功耗和提供高低频率时钟信号,需要把SYSCLKOUT进一步分频,本章主要讲解了对SYSCLKOUT分频产生低频时钟信号和高频时钟信号,完成外设时钟初始化的过程。
  • 对这些与时间和时刻有关进行处理的外设功能就是定时器(图1)。    我们也可以不使用外设功能(硬件)的定时器,而是通过软件来计算时间。下面通过图2来说明使用软件来定时的示例,图中假设循环(重复...
  • 学习DSP外设之LCDC的配置和应用

    千次阅读 2016-11-07 18:51:19
    看了这个外设的说明,发现没有initialion。。。那就从头介绍吧 一、 介绍说明 LCDC有两个独立的控制器,同步Raster Controller 和 异步LCD InterfaceDisplay Driver (LIDD) controller。  同步Raster Controller:...
  • 摘 要:介绍了基于数字信号处理芯片TMS320F241的串行外设接口(SPI)与外设实现串行通信的方法,并以X5043为例,给出了用SPI实现电子标签功能的方法。 关键词:数字信号处理器(DSP);高速同步串行I/O口(SPI);串行...
  • DSP2812的外设例程

    2014-12-15 21:35:55
    DSP2812的外设标准驱动例程,含I2C,SPI,SCI,PWM,SPI_EEPROM,RTC,TIMER,AD,DA,CAN等。
  • 活学活用单片机连载将介绍有效使用单片机外设功能的结构及使用方法,能让我们将能学到各种单片机共通的基本外设功能,并可广泛应用到各个方面。单片机仅靠CPU和内存是无法运行的!本文介绍 GPIO和串行通信。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,810
精华内容 3,524
关键字:

dsp外设

友情链接: voxeldos.rar