DSP外擴SRAM的應用測試心得體會

原文地址:【http://www.51hei.com/bbs/dpj-32468-1.html】

DSP的硬件測試說明:

平臺說明:

圖1-1  Code Composer Studio 6.0.0.00190 C/C++開發環境
硬件平臺基於TMS320F28335芯片,軟件平臺基於TI的Code Composer Studio 6.0.0.00190 C/C++開發環境,如圖1-1所示。

工作進度說明:
  1.完成了DSP外擴SRAM的硬件的完整測試,通過修改TI官方的.cmd文件和庫函數調用,
可以將FLASH中的函數複製到外部SRAM中運行,大大提高DSP程序的運行速度,附有詳細說明。
2. 完成了RS485的驅動編寫及應用測試。
3.利用官方的ADC_DMA、I2C例程,完成ADC和EEPROM的測試,整合了ADC_DMA例程。
4.CAN通訊和轉速中斷的代碼公司已有,未整理。
5.DSP內置的看門狗模塊已開啓。

一、DSP擴展的外部SRAM應用說明(已測試完畢)

前言: DSP可以工作中150MHz的頻率下,爲了發揮其高速運行的特性, 一般會將
FLASH程序內容複製到外部高速SRAM中運行,TMS320F28335內部有34K X 16bit的SRAM,
TI將內部SRAM分成了多塊(見F28335.cmd)。

一般的程序在內置FLASH中運行,程序在FLASH中的運行速度由FLASH的讀取速度決定,
如果沒有采用FLASH的加速技術,一般需要設置等待時間。 要想使程序高速運轉,
最少要擴展一塊SRAM 來高速運行DSP算法或中斷函數。

1.外部SRAM分區說明

本項目的硬件擴展了256K 16bit SRAM 時鐘延遲爲10ns
SRAM型號爲: IS61LV25616AL-10T
定位地址爲: 0x0200000 前128K 用作程序空間,後128K用作數據空間
定位地址和ARM的內部SRAM地址一樣,DSP中文數據手冊參考內容如下圖所示(可放大):


  圖1-2  DSP典型的16位和32位數據總線連接示意圖

IS61LV25616AL-10T芯片的數據總線是16位,後面的STM32F429板子也用了這個芯片,但增加了高低位選通線,
因此可以讀高低字節,比DSP更靈活:DSP最少一次讀2字節,ARM想讀任何字節都可以。另外ARM內部有FLASH加速,
可以直接跑180MHz,外設是90MHz,但比DSP性能相差已經比較小了。

DSP的GPIO37/XZCS7引腳控制的外部SRAM的物理地址如下圖所示:

圖1-3 GPIO37/XZCS7引腳控制的外部SRAM的物理地址說明


在F28335.CMD文件分配,詳細內容如下:

XINTF zone 7 - program space
ZONE7A : origin = 0x0200000, length = 0x020000

XINTF zone 7 - data space
ZONE7B : origin = 0x0220000, length = 0x020000

2.外部DATA SRAM使用說明

內部SRAM不夠用,則使用外部DATA SRAM,用法如下
#pragma DATA_SECTION(bufferB, "ZONE7DATA");
uint16_t bufferB[512];

仿真測試結果:

觀察數據0x22000區域,可以看到bufferB區域被程序設置了正確的數據。

2.外部CODE SRAM使用說明

外部中斷函數或一般函數使用如下格式的聲明
#pragma CODE_SECTION(cpu_timer0_isr,"xintffuncs");
#pragma CODE_SECTION(cpu_timer1_isr,"xintffuncs");

編譯器會將這些特定的函數分配在一個固定的FLASH區域
起始地址爲XintffuncsLoadStart
結束地址爲XintffuncsLoadEnd
主程序中XINTF Zone 7初始化後,調用如下函數將這個區域的特定函數
複製到外部SRAM的運行程序空間(0x0200000-0x021FFFF)
MemCopy(&XintffuncsLoadStart, &XintffuncsLoadEnd, &XintffuncsRunStart);

頻繁運行或調用的捕獲函數、定時器函數或特定算法,只有在高速SRAM中運行,
才能真正發揮TMS320C28335的實際性能。

仿真測試結果:
cpu_timer0_isr和cpu_timer1_isr定位在0x200000-0x21FFFF區域
對這兩個中斷函數設置斷點,可以正常進入中斷運行。
定時器0中斷函數的實際仿真結果如下圖所示:

圖1-4  定時器0中斷函數的加載到外部SRAM前後對比分析圖

定時器1中斷函數的實際斷點仿真如下(是無損壓縮圖片,可以放大):

圖1-5  定時器1中斷代碼的運行地址分析
可以得出結論,在反彙編窗口,看到定時器1中斷的入口地址是0x2002a,在1ms的定時器1中斷內翻轉GPIO50腳,產生一個方波。


圖1-6  定時器1中斷的應用測試截圖

該圖比較小,是因爲用的是小示波器保存到U盤的圖片。用該示波器保存成csv格式,僅有2500個數據。
錄波儀錄製數據波形比較長,十幾秒就可以存下超過100萬個點的數據,當然普通的.xls或.xlsx文件是存不下的。

二、通信配置說明(進行中)
1. RS485通信配置和應用測試代碼
     以下是網絡參考代碼,實際的配置比較繁瑣,這裏簡略不寫了。
     // 重新映射 PIE -  Timer 0的中斷   

  •     EALLOW;  // 解除寄存器保護
  •     PieVectTable.TXBINT = &SCI_TX_isr;
  •     PieVectTable.RXBINT = &SCI_RX_isr;
  •     EDIS;    // 使能寄存器保護


  •     // 使能接收中斷
  •     PieCtrlRegs.PIEIER8.bit.INTx3 = 1;
  •     // 使能發送中斷
  •     // PieCtrlRegs.PIEIER9.bit.INTx4 = 1;

  •     IER |= 0x100;



  •     // 全局中斷使能和更高優先級的實時調試事件
  •     EINT;   // 全局中斷使能INTM
  •     ERTM;   // 使能實時調試中斷DBGM
SCIC串口發送和接收的大致流程如圖1-6所示。

圖1-7  SCIC串口的發送和接收流程

    // 利用TMS320F28335的SCIC串口FIFO來發送數據,只要數據包不超過16,
   // 都可以無需等待,直接將所有字節放入FIFO,極大的節約CPU的時間開銷
   // 具體實現如下,至於官方的例程,等待當前字節發送完畢再發下一個,
   // 這樣太浪費時間,在實際產品中基本上沒人用
   if(Flag_CpuTimer0){
         Flag_CpuTimer0 = 0; // 10ms 定時週期
         GpioDataRegs.GPBSET.bit.GPIO50 = 1;   // RS485 DE = 1 RS485切換爲發送狀態

         for(i = 0; i < 10; ++i){
             ScicRegs.SCITXBUF = bufferA; // 將10個數據放入FIFO,然後自動依次轉移到移位寄存器
         }
         asm(" nop");
         asm(" nop");
         asm(" nop");
         asm(" nop");
         asm(" nop");
         asm(" nop");
     }
     // RS485處於發送狀態,且SCIC移位寄存器爲空
    if((GpioDataRegs.GPBDAT.bit.GPIO50 == 1)&&(ScicRegs.SCICTL2.bit.TXEMPTY == 1)){
          GpioDataRegs.GPBCLEAR.bit.GPIO50 = 1;   // RS485 DE = 0 RS485轉爲接收狀態
    }

2. CAN通信配置
   進行中


三、數據存儲器配置說明(I2C)
   擴展了512K byte EEPROM,打開官方的I2C例程(非GPIO模擬的時序),已測試OK。

四、集成功率芯片測試(GPIO)
   主要是對功率器件的測試,進行中

五、看門狗配置說明(已完成)

一般嵌入式系統都需要開啓外部或內部看門狗,以防意外的CPU掛起死機

六、TI官方的CMD文件說明(實際應用的文件是在官方的基礎上稍作修改)

TI官方提供的CMD文件有三個: 28335_RAM_lnk.cmd、F28335.cmd、DSP2833x_Headers_nonBIOS.cmd

調試程序時,將28335_RAM_lnk.cmd文件加入工程中,程序被加載到SRAM中運行。
實際的產品運行時,需要將程序下載到FLASH中,並從FLASH中啓動,這時需要
在工程中加入F28335.cmd文件,同時屏蔽28335_RAM_lnk.cmd文件。

TI官方文件F28335.cmd對內部SRAM的分配如下:

BOOT_RSVD : origin = 0x000000, length = 0x000050 // Part of M0, BOOT rom will use this for stack PAGE 1
RAMM0 : origin = 0x000050, length = 0x0003B0 // on-chip RAM block M0 PAGE 1
RAMM1 : origin = 0x000400, length = 0x000400 // on-chip RAM block M1 PAGE 1

ZONE0 : origin = 0x004000, length = 0x001000 // XINTF zone 0 PAGE 0

RAML0 : origin = 0x008000, length = 0x001000 // on-chip RAM block L0 PAGE 0
RAML1 : origin = 0x009000, length = 0x001000 // on-chip RAM block L1 PAGE 0
RAML2 : origin = 0x00A000, length = 0x001000 // on-chip RAM block L2 PAGE 0
RAML3 : origin = 0x00B000, length = 0x001000 // on-chip RAM block L3 PAGE 0
RAML4 : origin = 0x00C000, length = 0x001000 // on-chip RAM block L1 PAGE 1
RAML5 : origin = 0x00D000, length = 0x001000 // on-chip RAM block L1 PAGE 1
RAML6 : origin = 0x00E000, length = 0x001000 // on-chip RAM block L1 PAGE 1
RAML7 : origin = 0x00F000, length = 0x001000 // on-chip RAM block L1 PAGE 1

Allocate DMA-accessible RAM sections:
DMARAML4 : > RAML4, PAGE = 1
DMARAML5 : > RAML5, PAGE = 1
DMARAML6 : > RAML6, PAGE = 1
DMARAML7 : > RAML7, PAGE = 1

Allocate uninitalized data sections:
.stack : > RAMM1 PAGE = 1
.ebss : > RAML4 PAGE = 1
.esysmem : > RAMM1 PAGE = 1

TI官方文件DSP2833x_Headers_nonBIOS.cmd對特殊功能寄存器的映射(PAGE 1)如下

DEV_EMU : origin = 0x000880, length = 0x000180 // device emulation registers
FLASH_REGS : origin = 0x000A80, length = 0x000060 // FLASH registers
CSM : origin = 0x000AE0, length = 0x000010 // code security module registers
ADC_MIRROR : origin = 0x000B00, length = 0x000010 // ADC Results register mirror
XINTF : origin = 0x000B20, length = 0x000020 // external interface registers

CPU_TIMER0 : origin = 0x000C00, length = 0x000008 // CPU Timer0 registers
CPU_TIMER1 : origin = 0x000C08, length = 0x000008 // CPU Timer0 registers (CPU Timer1 & Timer2 reserved TI use)
CPU_TIMER2 : origin = 0x000C10, length = 0x000008 // CPU Timer0 registers (CPU Timer1 & Timer2 reserved TI use)

PIE_CTRL : origin = 0x000CE0, length = 0x000020 // PIE control registers
PIE_VECT : origin = 0x000D00, length = 0x000100 // PIE Vector Table

DMA : origin = 0x001000, length = 0x000200 // DMA registers

MCBSPA : origin = 0x005000, length = 0x000040 // McBSP-A registers
MCBSPB : origin = 0x005040, length = 0x000040 // McBSP-B registers

ECANA : origin = 0x006000, length = 0x000040 // eCAN-A control and status registers
ECANA_LAM : origin = 0x006040, length = 0x000040 // eCAN-A local acceptance masks
ECANA_MOTS : origin = 0x006080, length = 0x000040 // eCAN-A message object time stamps
ECANA_MOTO : origin = 0x0060C0, length = 0x000040 // eCAN-A object time-out registers
ECANA_MBOX : origin = 0x006100, length = 0x000100 // eCAN-A mailboxes

ECANB : origin = 0x006200, length = 0x000040 // eCAN-B control and status registers
ECANB_LAM : origin = 0x006240, length = 0x000040 // eCAN-B local acceptance masks
ECANB_MOTS : origin = 0x006280, length = 0x000040 // eCAN-B message object time stamps
ECANB_MOTO : origin = 0x0062C0, length = 0x000040 // eCAN-B object time-out registers
ECANB_MBOX : origin = 0x006300, length = 0x000100 // eCAN-B mailboxes

EPWM1 : origin = 0x006800, length = 0x000022 // Enhanced PWM 1 registers
EPWM2 : origin = 0x006840, length = 0x000022 // Enhanced PWM 2 registers
EPWM3 : origin = 0x006880, length = 0x000022 // Enhanced PWM 3 registers
EPWM4 : origin = 0x0068C0, length = 0x000022 // Enhanced PWM 4 registers
EPWM5 : origin = 0x006900, length = 0x000022 // Enhanced PWM 5 registers
EPWM6 : origin = 0x006940, length = 0x000022 // Enhanced PWM 6 registers

ECAP1 : origin = 0x006A00, length = 0x000020 // Enhanced Capture 1 registers
ECAP2 : origin = 0x006A20, length = 0x000020 // Enhanced Capture 2 registers
ECAP3 : origin = 0x006A40, length = 0x000020 // Enhanced Capture 3 registers
ECAP4 : origin = 0x006A60, length = 0x000020 // Enhanced Capture 4 registers
ECAP5 : origin = 0x006A80, length = 0x000020 // Enhanced Capture 5 registers
ECAP6 : origin = 0x006AA0, length = 0x000020 // Enhanced Capture 6 registers

EQEP1 : origin = 0x006B00, length = 0x000040 // Enhanced QEP 1 registers
EQEP2 : origin = 0x006B40, length = 0x000040 // Enhanced QEP 2 registers

GPIOCTRL : origin = 0x006F80, length = 0x000040 // GPIO control registers
GPIODAT : origin = 0x006FC0, length = 0x000020 // GPIO data registers
GPIOINT : origin = 0x006FE0, length = 0x000020 // GPIO interrupt/LPM registers

SYSTEM : origin = 0x007010, length = 0x000020 // System control registers
SPIA : origin = 0x007040, length = 0x000010 // SPI-A registers
SCIA : origin = 0x007050, length = 0x000010 // SCI-A registers
XINTRUPT : origin = 0x007070, length = 0x000010 // external interrupt registers

ADC : origin = 0x007100, length = 0x000020 // ADC registers

SCIB : origin = 0x007750, length = 0x000010 // SCI-B registers

SCIC : origin = 0x007770, length = 0x000010 // SCI-C registers

I2CA : origin = 0x007900, length = 0x000040 // I2C-A registers

CSM_PWL : origin = 0x33FFF8, length = 0x000008 // Part of FLASHA. CSM password locations

PARTID : origin = 0x380090, length = 0x000001 // Part ID register location

DSP的硬件測試說明:


平臺說明:

                                                                 圖1-1  Code Composer Studio 6.0.0.00190 C/C++開發環境
硬件平臺基於TMS320F28335芯片,軟件平臺基於TI的Code Composer Studio 6.0.0.00190 C/C++開發環境,如圖1-1所示。

工作進度說明:
  1.完成了DSP外擴SRAM的硬件的完整測試,通過修改TI官方的.cmd文件和庫函數調用,
可以將FLASH中的函數複製到外部SRAM中運行,大大提高DSP程序的運行速度,附有詳細說明。
2. 完成了RS485的驅動編寫及應用測試。
3.利用官方的ADC_DMA、I2C例程,完成ADC和EEPROM的測試,整合了ADC_DMA例程。
4.CAN通訊和轉速中斷的代碼公司已有,未整理。
5.DSP內置的看門狗模塊已開啓。

一、DSP擴展的外部SRAM應用說明(已測試完畢)

前言: DSP可以工作中150MHz的頻率下,爲了發揮其高速運行的特性, 一般會將
FLASH程序內容複製到外部高速SRAM中運行,TMS320F28335內部有34K X 16bit的SRAM,
TI將內部SRAM分成了多塊(見F28335.cmd)。

一般的程序在內置FLASH中運行,程序在FLASH中的運行速度由FLASH的讀取速度決定,
如果沒有采用FLASH的加速技術,一般需要設置等待時間。 要想使程序高速運轉,
最少要擴展一塊SRAM 來高速運行DSP算法或中斷函數。

1.外部SRAM分區說明

本項目的硬件擴展了256K 16bit SRAM 時鐘延遲爲10ns
SRAM型號爲: IS61LV25616AL-10T
定位地址爲: 0x0200000 前128K 用作程序空間,後128K用作數據空間
定位地址和ARM的內部SRAM地址一樣,DSP中文數據手冊參考內容如下圖所示(可放大):


                                                                            圖1-2  DSP典型的16位和32位數據總線連接示意圖

IS61LV25616AL-10T芯片的數據總線是16位,後面的STM32F429板子也用了這個芯片,但增加了高低位選通線,
因此可以讀高低字節,比DSP更靈活:DSP最少一次讀2字節,ARM想讀任何字節都可以。另外ARM內部有FLASH加速,
可以直接跑180MHz,外設是90MHz,但比DSP性能相差已經比較小了。

DSP的GPIO37/XZCS7引腳控制的外部SRAM的物理地址如下圖所示:


                                                               圖1-3 GPIO37/XZCS7引腳控制的外部SRAM的物理地址說明



在F28335.CMD文件分配,詳細內容如下:

XINTF zone 7 - program space
ZONE7A : origin = 0x0200000, length = 0x020000

XINTF zone 7 - data space
ZONE7B : origin = 0x0220000, length = 0x020000

2.外部DATA SRAM使用說明

內部SRAM不夠用,則使用外部DATA SRAM,用法如下
#pragma DATA_SECTION(bufferB, "ZONE7DATA");
uint16_t bufferB[512];

仿真測試結果:

觀察數據0x22000區域,可以看到bufferB區域被程序設置了正確的數據。

2.外部CODE SRAM使用說明

外部中斷函數或一般函數使用如下格式的聲明
#pragma CODE_SECTION(cpu_timer0_isr,"xintffuncs");
#pragma CODE_SECTION(cpu_timer1_isr,"xintffuncs");

編譯器會將這些特定的函數分配在一個固定的FLASH區域
起始地址爲XintffuncsLoadStart
結束地址爲XintffuncsLoadEnd
主程序中XINTF Zone 7初始化後,調用如下函數將這個區域的特定函數
複製到外部SRAM的運行程序空間(0x0200000-0x021FFFF)
MemCopy(&XintffuncsLoadStart, &XintffuncsLoadEnd, &XintffuncsRunStart);

頻繁運行或調用的捕獲函數、定時器函數或特定算法,只有在高速SRAM中運行,
才能真正發揮TMS320C28335的實際性能。

仿真測試結果:
cpu_timer0_isr和cpu_timer1_isr定位在0x200000-0x21FFFF區域
對這兩個中斷函數設置斷點,可以正常進入中斷運行。
定時器0中斷函數的實際仿真結果如下圖所示:

                                                                 圖1-4  定時器0中斷函數的加載到外部SRAM前後對比分析圖

定時器1中斷函數的實際斷點仿真如下(是無損壓縮圖片,可以放大):

                                                                                圖1-5  定時器1中斷代碼的運行地址分析
可以得出結論,在反彙編窗口,看到定時器1中斷的入口地址是0x2002a,在1ms的定時器1中斷內翻轉GPIO50腳,產生一個方波。

                                                    
                                                                        圖1-6  定時器1中斷的應用測試截圖

該圖比較小,是因爲用的是小示波器保存到U盤的圖片。用該示波器保存成csv格式,僅有2500個數據。
錄波儀錄製數據波形比較長,十幾秒就可以存下超過100萬個點的數據,當然普通的.xls或.xlsx文件是存不下的。

二、通信配置說明(進行中)
1. RS485通信配置和應用測試代碼
     以下是網絡參考代碼,實際的配置比較繁瑣,這裏簡略不寫了。
     // 重新映射 PIE -  Timer 0的中斷   
  •     EALLOW;  // 解除寄存器保護
  •     PieVectTable.TXBINT = &SCI_TX_isr;
  •     PieVectTable.RXBINT = &SCI_RX_isr;
  •     EDIS;    // 使能寄存器保護


  •     // 使能接收中斷
  •     PieCtrlRegs.PIEIER8.bit.INTx3 = 1;
  •     // 使能發送中斷
  •     // PieCtrlRegs.PIEIER9.bit.INTx4 = 1;

  •     IER |= 0x100;



  •     // 全局中斷使能和更高優先級的實時調試事件
  •     EINT;   // 全局中斷使能INTM
  •     ERTM;   // 使能實時調試中斷DBGM
SCIC串口發送和接收的大致流程如圖1-6所示。

                                                               圖1-7  SCIC串口的發送和接收流程

    // 利用TMS320F28335的SCIC串口FIFO來發送數據,只要數據包不超過16,
   // 都可以無需等待,直接將所有字節放入FIFO,極大的節約CPU的時間開銷
   // 具體實現如下,至於官方的例程,等待當前字節發送完畢再發下一個,
   // 這樣太浪費時間,在實際產品中基本上沒人用
   if(Flag_CpuTimer0){
         Flag_CpuTimer0 = 0; // 10ms 定時週期
         GpioDataRegs.GPBSET.bit.GPIO50 = 1;   // RS485 DE = 1 RS485切換爲發送狀態

         for(i = 0; i < 10; ++i){
             ScicRegs.SCITXBUF = bufferA; // 將10個數據放入FIFO,然後自動依次轉移到移位寄存器
         }
         asm(" nop");
         asm(" nop");
         asm(" nop");
         asm(" nop");
         asm(" nop");
         asm(" nop");
     }
     // RS485處於發送狀態,且SCIC移位寄存器爲空
    if((GpioDataRegs.GPBDAT.bit.GPIO50 == 1)&&(ScicRegs.SCICTL2.bit.TXEMPTY == 1)){
          GpioDataRegs.GPBCLEAR.bit.GPIO50 = 1;   // RS485 DE = 0 RS485轉爲接收狀態
    }

2. CAN通信配置
   進行中


三、數據存儲器配置說明(I2C)
   擴展了512K byte EEPROM,打開官方的I2C例程(非GPIO模擬的時序),已測試OK。

四、集成功率芯片測試(GPIO)
   主要是對功率器件的測試,進行中

五、看門狗配置說明(已完成)

一般嵌入式系統都需要開啓外部或內部看門狗,以防意外的CPU掛起死機

六、TI官方的CMD文件說明(實際應用的文件是在官方的基礎上稍作修改)

TI官方提供的CMD文件有三個: 28335_RAM_lnk.cmd、F28335.cmd、DSP2833x_Headers_nonBIOS.cmd

調試程序時,將28335_RAM_lnk.cmd文件加入工程中,程序被加載到SRAM中運行。
實際的產品運行時,需要將程序下載到FLASH中,並從FLASH中啓動,這時需要
在工程中加入F28335.cmd文件,同時屏蔽28335_RAM_lnk.cmd文件。

TI官方文件F28335.cmd對內部SRAM的分配如下:

BOOT_RSVD : origin = 0x000000, length = 0x000050 // Part of M0, BOOT rom will use this for stack PAGE 1
RAMM0 : origin = 0x000050, length = 0x0003B0 // on-chip RAM block M0 PAGE 1
RAMM1 : origin = 0x000400, length = 0x000400 // on-chip RAM block M1 PAGE 1

ZONE0 : origin = 0x004000, length = 0x001000 // XINTF zone 0 PAGE 0

RAML0 : origin = 0x008000, length = 0x001000 // on-chip RAM block L0 PAGE 0
RAML1 : origin = 0x009000, length = 0x001000 // on-chip RAM block L1 PAGE 0
RAML2 : origin = 0x00A000, length = 0x001000 // on-chip RAM block L2 PAGE 0
RAML3 : origin = 0x00B000, length = 0x001000 // on-chip RAM block L3 PAGE 0
RAML4 : origin = 0x00C000, length = 0x001000 // on-chip RAM block L1 PAGE 1
RAML5 : origin = 0x00D000, length = 0x001000 // on-chip RAM block L1 PAGE 1
RAML6 : origin = 0x00E000, length = 0x001000 // on-chip RAM block L1 PAGE 1
RAML7 : origin = 0x00F000, length = 0x001000 // on-chip RAM block L1 PAGE 1

Allocate DMA-accessible RAM sections:
DMARAML4 : > RAML4, PAGE = 1
DMARAML5 : > RAML5, PAGE = 1
DMARAML6 : > RAML6, PAGE = 1
DMARAML7 : > RAML7, PAGE = 1

Allocate uninitalized data sections:
.stack : > RAMM1 PAGE = 1
.ebss : > RAML4 PAGE = 1
.esysmem : > RAMM1 PAGE = 1

TI官方文件DSP2833x_Headers_nonBIOS.cmd對特殊功能寄存器的映射(PAGE 1)如下

DEV_EMU : origin = 0x000880, length = 0x000180 // device emulation registers
FLASH_REGS : origin = 0x000A80, length = 0x000060 // FLASH registers
CSM : origin = 0x000AE0, length = 0x000010 // code security module registers
ADC_MIRROR : origin = 0x000B00, length = 0x000010 // ADC Results register mirror
XINTF : origin = 0x000B20, length = 0x000020 // external interface registers

CPU_TIMER0 : origin = 0x000C00, length = 0x000008 // CPU Timer0 registers
CPU_TIMER1 : origin = 0x000C08, length = 0x000008 // CPU Timer0 registers (CPU Timer1 & Timer2 reserved TI use)
CPU_TIMER2 : origin = 0x000C10, length = 0x000008 // CPU Timer0 registers (CPU Timer1 & Timer2 reserved TI use)

PIE_CTRL : origin = 0x000CE0, length = 0x000020 // PIE control registers
PIE_VECT : origin = 0x000D00, length = 0x000100 // PIE Vector Table

DMA : origin = 0x001000, length = 0x000200 // DMA registers

MCBSPA : origin = 0x005000, length = 0x000040 // McBSP-A registers
MCBSPB : origin = 0x005040, length = 0x000040 // McBSP-B registers

ECANA : origin = 0x006000, length = 0x000040 // eCAN-A control and status registers
ECANA_LAM : origin = 0x006040, length = 0x000040 // eCAN-A local acceptance masks
ECANA_MOTS : origin = 0x006080, length = 0x000040 // eCAN-A message object time stamps
ECANA_MOTO : origin = 0x0060C0, length = 0x000040 // eCAN-A object time-out registers
ECANA_MBOX : origin = 0x006100, length = 0x000100 // eCAN-A mailboxes

ECANB : origin = 0x006200, length = 0x000040 // eCAN-B control and status registers
ECANB_LAM : origin = 0x006240, length = 0x000040 // eCAN-B local acceptance masks
ECANB_MOTS : origin = 0x006280, length = 0x000040 // eCAN-B message object time stamps
ECANB_MOTO : origin = 0x0062C0, length = 0x000040 // eCAN-B object time-out registers
ECANB_MBOX : origin = 0x006300, length = 0x000100 // eCAN-B mailboxes

EPWM1 : origin = 0x006800, length = 0x000022 // Enhanced PWM 1 registers
EPWM2 : origin = 0x006840, length = 0x000022 // Enhanced PWM 2 registers
EPWM3 : origin = 0x006880, length = 0x000022 // Enhanced PWM 3 registers
EPWM4 : origin = 0x0068C0, length = 0x000022 // Enhanced PWM 4 registers
EPWM5 : origin = 0x006900, length = 0x000022 // Enhanced PWM 5 registers
EPWM6 : origin = 0x006940, length = 0x000022 // Enhanced PWM 6 registers

ECAP1 : origin = 0x006A00, length = 0x000020 // Enhanced Capture 1 registers
ECAP2 : origin = 0x006A20, length = 0x000020 // Enhanced Capture 2 registers
ECAP3 : origin = 0x006A40, length = 0x000020 // Enhanced Capture 3 registers
ECAP4 : origin = 0x006A60, length = 0x000020 // Enhanced Capture 4 registers
ECAP5 : origin = 0x006A80, length = 0x000020 // Enhanced Capture 5 registers
ECAP6 : origin = 0x006AA0, length = 0x000020 // Enhanced Capture 6 registers

EQEP1 : origin = 0x006B00, length = 0x000040 // Enhanced QEP 1 registers
EQEP2 : origin = 0x006B40, length = 0x000040 // Enhanced QEP 2 registers

GPIOCTRL : origin = 0x006F80, length = 0x000040 // GPIO control registers
GPIODAT : origin = 0x006FC0, length = 0x000020 // GPIO data registers
GPIOINT : origin = 0x006FE0, length = 0x000020 // GPIO interrupt/LPM registers

SYSTEM : origin = 0x007010, length = 0x000020 // System control registers
SPIA : origin = 0x007040, length = 0x000010 // SPI-A registers
SCIA : origin = 0x007050, length = 0x000010 // SCI-A registers
XINTRUPT : origin = 0x007070, length = 0x000010 // external interrupt registers

ADC : origin = 0x007100, length = 0x000020 // ADC registers

SCIB : origin = 0x007750, length = 0x000010 // SCI-B registers

SCIC : origin = 0x007770, length = 0x000010 // SCI-C registers

I2CA : origin = 0x007900, length = 0x000040 // I2C-A registers

CSM_PWL : origin = 0x33FFF8, length = 0x000008 // Part of FLASHA. CSM password locations

PARTID : origin = 0x380090, length = 0x000001 // Part ID register location



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章