查看: 2368|回复: 2

[其他] FlexBus的CS3无信号

[复制链接]

该用户从未签到

3

主题

17

帖子

0

新手上路

Rank: 1

积分
26
最后登录
1970-1-1
发表于 2013-12-4 10:47:18 | 显示全部楼层 |阅读模式
 大家帮忙看一下,初始化时,有对CS0、CS3进行初始化,但是用示波器查看信号时,对CS0片选地址操作时,示波器有控制信号、数据信号输出,但是对CS3片选地址操作时,无任何信号输出。
void Flexbus_setup()
{
 
    #define ALT5                    0x05
    #define OFF_CHIP_ACCESS_ALLOW   3
 
    PORT_MemMapPtr  pctl;
    SIM_MemMapPtr   sim = SIM_BASE_PTR;
    FB_MemMapPtr    fb_ptr = FB_BASE_PTR;
 
    /* Enable clock to FlexBus module */
    sim->SCGC7 |= SIM_SCGC7_FLEXBUS_MASK;
    sim->SOPT2 |= SIM_SOPT2_FBSL(OFF_CHIP_ACCESS_ALLOW);
 
        /* configure chip select multiplexers */
    fb_ptr->CSPMCR=0;
    fb_ptr->CSPMCR=FB_CSPMCR_GROUP5(1)|
                    FB_CSPMCR_GROUP4(1)|
                      FB_CSPMCR_GROUP3(0)|
                        FB_CSPMCR_GROUP2(0)|
                          FB_CSPMCR_GROUP1(1);
 
    
    pctl = (PORT_MemMapPtr)PORTD_BASE_PTR;
    pctl-&gtCR[6] = PORT_PCR_MUX(ALT5); /* A0 */
    pctl-&gtCR[5] = PORT_PCR_MUX(ALT5); /* A1 */
    pctl-&gtCR[4] = PORT_PCR_MUX(ALT5); /* A2 */
    pctl-&gtCR[3] = PORT_PCR_MUX(ALT5); /* A3 */
    pctl-&gtCR[2] = PORT_PCR_MUX(ALT5); /* A4 */
    pctl-&gtCR[1] = PORT_PCR_MUX(ALT5); /* FB_CS0_b */
    pctl-&gtCR[0] = PORT_PCR_MUX(ALT5); /* ALE*/
        
    pctl = (PORT_MemMapPtr)PORTC_BASE_PTR;
    pctl-&gtCR[3] = PORT_PCR_MUX(ALT5);  /* FB_CLKOUT */
    //pctl-&gtCR[7] = PORT_PCR_MUX(ALT5);  /* A8 */
    pctl-&gtCR[8] = PORT_PCR_MUX(ALT5);  /* A7 */
    pctl->PCR[9] = PORT_PCR_MUX(ALT5);  /* A6 */
    pctl->PCR[10] = PORT_PCR_MUX(ALT5); /* A5 */
    pctl->PCR[11] = PORT_PCR_MUX(ALT5); /* nWR*/
    pctl->PCR[12] = PORT_PCR_MUX(ALT5); /* D3 */
    pctl->PCR[13] = PORT_PCR_MUX(ALT5); /* D2 */
    pctl->PCR[14] = PORT_PCR_MUX(ALT5); /* D1 */
    pctl->PCR[15] = PORT_PCR_MUX(ALT5); /* D0 */
    //pctl->PCR[18] = PORT_PCR_MUX(ALT5); /* nCS2 */  
    pctl->PCR[19] = PORT_PCR_MUX(ALT5); /* nCS3 */    
    
    pctl = (PORT_MemMapPtr)PORTB_BASE_PTR;
    pctl->PCR[19] = PORT_PCR_MUX(ALT5); /* OE */
    pctl->PCR[20] = PORT_PCR_MUX(ALT5); /* D7 */
    pctl->PCR[21] = PORT_PCR_MUX(ALT5); /* D6 */
    pctl->PCR[22] = PORT_PCR_MUX(ALT5); /* D5 */
    pctl->PCR[23] = PORT_PCR_MUX(ALT5); /* D4 */
}
void Flexbus_init()
{
 
    FB_MemMapPtr fb_ptr = FB_BASE_PTR;
 
    /* CS0 base address */
    fb_ptr->CS[0].CSAR = (uint_32)&MRAM_START_ADDRESS1;
    /* CS0 control (8bit data, 1 wait state, multiplexed mode) */
    fb_ptr->CS[0].CSCR = FB_CSCR_AA_MASK | 
                         FB_CSCR_WS(2)   | 
                         FB_CSCR_PS(1)   | 
                         FB_CSCR_BEM_MASK; 
 
    /* CS0 address mask and enable */
    fb_ptr->CS[0].CSMR = FB_CSMR_BAM(0x00) | FB_CSMR_V_MASK;  
    
 
    /* CS3 base address */
    fb_ptr->CS[3].CSAR = (uint_32)&MRAM_START_ADDRESS2;
    /* CS3 control (8bit data, 1 wait state, multiplexed mode) */
    fb_ptr->CS[3].CSCR = FB_CSCR_AA_MASK | 
                         FB_CSCR_WS(2)   | 
                         FB_CSCR_PS(1)   | 
                         FB_CSCR_BEM_MASK; 
 
    /* CS3 address mask and enable */
    fb_ptr->CS[3].CSMR = FB_CSMR_BAM(0x00) | FB_CSMR_V_MASK;        
}
请大家指点一下,不胜感谢。
 
我知道答案 目前已有1人回答
回复

使用道具 举报

该用户从未签到

12

主题

136

帖子

0

中级会员

Rank: 3Rank: 3

积分
256
最后登录
2021-1-15
发表于 2013-12-10 09:57:36 | 显示全部楼层

回复:FlexBus的CS3无信号

都有信号的
 
//******************************************************************************
// author  : cloud_team
// version : 1.0
// date    : 2013-1-31
// company : weikeng
// http    : www.weikeng.com.cn
//******************************************************************************


#include "mkxx10_flexbus.h"

//******************************************************************************
// * 函数名: flexbus_init
// * 简介: flexbus初始化
// * 参数: fb_cs: FB_CS0,FB_CS1,FB_CS2,FB_CS3,FB_CS4,FB_CS5
// * 参数: fb_bam: SST39VF6401B_BAM
// * 参数: fb_base_addr: SST39VF6401B_BASE_ADDRESS
// * 返回值: 无
// * 作者: cloud team
//******************************************************************************
void flexbus_init(u8 fb_cs,u16 fb_bam,u32 fb_base_addr)

  SIM_MemMapPtr SIM = SIM_BASE_PTR;
  FB_MemMapPtr  FB = FB_BASE_PTR;
 
  SIM->SOPT2 |= SIM_SOPT2_FBSL(3);
  SIM->SCGC7 |= SIM_SCGC7_FLEXBUS_MASK;
 
  //fb clock divider 1
  //100MHz/(1+1)==50MHz
  //默认设置为core频率的一半
  //SIM->CLKDIV1 |= SIM_CLKDIV1_OUTDIV3(1);
  SIM->CLKDIV1 |= SIM_CLKDIV1_OUTDIV3(4);
  //at reset,no chip-select other than FB_CS0 can be used until CSMR0[V] is 1b.
  //afterward,the FB_CS[5:0] singles function as programmed.
     
  FB->CS[0].CSMR = 1;

   
  //FB_CSMR0 =1;
  //FB_CSCR0 =1;
 
  //设置基址地址
  FB->CS[fb_cs].CSAR = fb_base_addr;   
 
  //设置基址地址掩码
  FB->CS[fb_cs].CSMR = FB_CSMR_BAM(fb_bam) | FB_CSMR_V_MASK;
 
  //FB_CSCR1  = FB_CSCR_BLS_MASK  
  //          | FB_CSCR_PS(2)     
  //          | FB_CSCR_AA_MASK;
  //
  FB->CS[fb_cs].CSCR = FB_CSCR_BLS_MASK | FB_CSCR_PS(2) | FB_CSCR_AA_MASK;
  //FB->CS[fb_cs].CSCR = FB_CSCR_BLS_MASK | FB_CSCR_PS(0) | FB_CSCR_AA_MASK;
  // 
 
}


void flexbus_set_mode(u8 fb_cs,u16 fb_bls,u32 fb_ps)
{
  FB_MemMapPtr  FB = FB_BASE_PTR;
  //设置对齐方式
  //设置数据端口大小
  //自动应答使能
  FB->CS[fb_cs].CSCR = fb_bls | FB_CSCR_PS(fb_ps) | FB_CSCR_AA_MASK;
}
 
//******************************************************************************
// author  : cloud_team
// version : 1.0
// date    : 2013-1-31
// company : weikeng
// http    : www.weikeng.com.cn
//******************************************************************************

#ifndef MKXX10_FLEXBUS_H
#define MKXX10_FLEXBUS_H

#include "mkxx.h"

//片选信号
#define FB_CS0             0
#define FB_CS1             1
#define FB_CS2             2
#define FB_CS3             3
#define FB_CS4             4
#define FB_CS5             5


#define FB_PS_32BIT        0
#define FB_PS_8BIT         1
#define FB_PS_16BIT        2

#define FB_BLS_LEFT        0
#define FB_BLS_RIGHT       FB_CSCR_BLS_MASK
//#define FB_PS_32BIT        3

void flexbus_init(u8 fb_cs,u16 fb_bam,u32 fb_base_addr);
void flexbus_set_mode(u8 fb_cs,u16 fb_bls,u32 fb_ps);

#endif
 
 
 
//******************************************************************************
// author  : cloud_team
// version : 1.0
// date    : 2013-1-31
// company : weikeng
// http    : www.weikeng.com.cn
//******************************************************************************

#include "sst39vf6401b.h"
#include "mkxx10_flexbus.h"
#include "mkxx10_port.h"
#include



void flexbus_sram_init(u8 fb_cs,u16 fb_bam,u32 fb_base_addr)
{
  //SIM_MemMapPtr SIM = SIM_BASE_PTR;
  FB_MemMapPtr  FB = FB_BASE_PTR;
       
  //设置基址地址
  FB->CS[fb_cs].CSAR = fb_base_addr;   
 
  //设置基址地址掩码
  FB->CS[fb_cs].CSMR = FB_CSMR_BAM(fb_bam) | FB_CSMR_V_MASK;
 
  //FB_CSCR1  = FB_CSCR_BLS_MASK  
  //          | FB_CSCR_PS(2)     
  //          | FB_CSCR_AA_MASK;
  //
  FB->CS[fb_cs].CSCR = FB_CSCR_BLS_MASK | FB_CSCR_PS(2) | FB_CSCR_AA_MASK
                     | FB_CSCR_ASET(0x1) | FB_CSCR_WS(0x1)| FB_CSCR_BEM_MASK;
                     //| FB_CSCR_RDAH(1);

  //FB->CS[fb_cs].CSCR = FB_CSCR_BLS_MASK | FB_CSCR_PS(0) | FB_CSCR_AA_MASK;
}

//******************************************************************************
// * 函数名: sst39vf6401b_init
// * 简介: 并行flash初始化
// * 参数: 无
// * 返回值: 无
// * 作者: cloud team
//******************************************************************************
void sst39vf6401b_init(void)
{
  //打开时钟
  port_open_clock(PORTB_CLOCK);
  port_open_clock(PORTC_CLOCK);
  port_open_clock(PORTD_CLOCK);
 
  port_pin_type_flexbus(PORTD_BASE_PTR,PORT_PIN_6);       //  fb_ad[0]
  port_pin_type_flexbus(PORTD_BASE_PTR,PORT_PIN_5);       //  fb_ad[1]
  port_pin_type_flexbus(PORTD_BASE_PTR,PORT_PIN_4);       //  fb_ad[2]
  port_pin_type_flexbus(PORTD_BASE_PTR,PORT_PIN_3);       //  fb_ad[3]
  port_pin_type_flexbus(PORTD_BASE_PTR,PORT_PIN_2);       //  fb_ad[4]
  //port_pin_type_flexbus(PORTD_BASE_PTR,PORT_PIN_1);       //  fb_ad[0]
  //port_pin_type_flexbus(PORTD_BASE_PTR,PORT_PIN_0);       //  fb_ad[0]
  port_pin_type_flexbus(PORTC_BASE_PTR,PORT_PIN_10);      //  fb_ad[5]
  port_pin_type_flexbus(PORTC_BASE_PTR,PORT_PIN_9);       //  fb_ad[6]
  port_pin_type_flexbus(PORTC_BASE_PTR,PORT_PIN_8);       //  fb_ad[7]
  port_pin_type_flexbus(PORTC_BASE_PTR,PORT_PIN_7);       //  fb_ad[8]
  port_pin_type_flexbus(PORTC_BASE_PTR,PORT_PIN_6);       //  fb_ad[9]
  port_pin_type_flexbus(PORTC_BASE_PTR,PORT_PIN_5);       //  fb_ad[10]
  port_pin_type_flexbus(PORTC_BASE_PTR,PORT_PIN_4);       //  fb_ad[11]
  port_pin_type_flexbus(PORTC_BASE_PTR,PORT_PIN_2);       //  fb_ad[12]
  port_pin_type_flexbus(PORTC_BASE_PTR,PORT_PIN_1);       //  fb_ad[13]
  port_pin_type_flexbus(PORTC_BASE_PTR,PORT_PIN_0);       //  fb_ad[14]
  port_pin_type_flexbus(PORTB_BASE_PTR,PORT_PIN_18);      //  fb_ad[15]
 
  //port_pin_type_flexbus(PORTB_BASE_PTR,PORT_PIN_17);      //  fb_ad[16]
  //port_pin_type_flexbus(PORTB_BASE_PTR,PORT_PIN_16);      //  fb_ad[17]
  //port_pin_type_flexbus(PORTB_BASE_PTR,PORT_PIN_11);      //  fb_ad[18]
  //port_pin_type_flexbus(PORTB_BASE_PTR,PORT_PIN_10);      //  fb_ad[19]
  //port_pin_type_flexbus(PORTB_BASE_PTR,PORT_PIN_9);       //  fb_ad[20]
  //port_pin_type_flexbus(PORTB_BASE_PTR,PORT_PIN_8);       //  fb_ad[21]
  //port_pin_type_flexbus(PORTB_BASE_PTR,PORT_PIN_7);       //  fb_ad[22]
  //port_pin_type_flexbus(PORTB_BASE_PTR,PORT_PIN_6);       //  fb_ad[23]
  //port_pin_type_flexbus(PORTC_BASE_PTR,PORT_PIN_15);      //  fb_ad[24]
  //port_pin_type_flexbus(PORTC_BASE_PTR,PORT_PIN_14);      //  fb_ad[25]
  //port_pin_type_flexbus(PORTC_BASE_PTR,PORT_PIN_13);      //  fb_ad[26]
  //port_pin_type_flexbus(PORTC_BASE_PTR,PORT_PIN_12);      //  fb_ad[27]
  //port_pin_type_flexbus(PORTB_BASE_PTR,PORT_PIN_23);      //  fb_ad[28]
  //port_pin_type_flexbus(PORTB_BASE_PTR,PORT_PIN_22);      //  fb_ad[29]
  //port_pin_type_flexbus(PORTB_BASE_PTR,PORT_PIN_21);      //  fb_ad[30]
  //port_pin_type_flexbus(PORTB_BASE_PTR,PORT_PIN_20);      //  fb_ad[31]
 
 
  port_pin_type_flexbus_a(PORTD_BASE_PTR,PORT_PIN_8);      //  fb_a[16]
  port_pin_type_flexbus_a(PORTD_BASE_PTR,PORT_PIN_9);      //  fb_a[17]
  port_pin_type_flexbus_a(PORTD_BASE_PTR,PORT_PIN_10);     //  fb_a[18]
  port_pin_type_flexbus_a(PORTD_BASE_PTR,PORT_PIN_11);     //  fb_a[19]
  port_pin_type_flexbus_a(PORTD_BASE_PTR,PORT_PIN_12);     //  fb_a[20]
  port_pin_type_flexbus_a(PORTD_BASE_PTR,PORT_PIN_13);     //  fb_a[21]
  port_pin_type_flexbus_a(PORTD_BASE_PTR,PORT_PIN_14);     //  fb_a[22]
 
  //control signals
  port_pin_type_flexbus(PORTB_BASE_PTR,PORT_PIN_19);       // fb_oe_b 
  port_pin_type_flexbus(PORTC_BASE_PTR,PORT_PIN_11);       // fb_rw_b     
  port_pin_type_flexbus(PORTD_BASE_PTR,PORT_PIN_1);        // fb_cs0_b
  port_pin_type_flexbus(PORTD_BASE_PTR,PORT_PIN_0);        // fb_ale
 
 
  port_pin_type_flexbus(PORTC_BASE_PTR,PORT_PIN_19);       //fb_cs3_b
  port_pin_type_flexbus(PORTC_BASE_PTR,PORT_PIN_18);            
  port_pin_type_flexbus(PORTC_BASE_PTR,PORT_PIN_17);       //fb_be31_24 
  port_pin_type_flexbus(PORTC_BASE_PTR,PORT_PIN_16);       //fb_be23_16      
 
  flexbus_init(FB_CS0,SST39VF6401B_BAM,SST39VF6401B_BASE_ADDRESS);
  //左对齐,数据宽度为16bit
  //flexbus_set_mode(FB_CS0,FB_BLS_LEFT,FB_PS_16BIT);
 
 
 
 
  //SRAM
  flexbus_sram_init(FB_CS3,SRAM_BAM,SRAM_BASE_ADDRESS);
 
  FB_CSPMCR = FB_CSPMCR_GROUP1(0)|FB_CSPMCR_GROUP2(2) | FB_CSPMCR_GROUP3(2)|FB_CSPMCR_GROUP5(1);   
}


//100M的主频:一个时钟周期是10ns

void sst39vf6401b_delay_cycles(unsigned long i)
{
  while(i--)
  { 
    __no_operation();
  }
}
 
 
 
回复 支持 反对

使用道具 举报

该用户从未签到

16

主题

705

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1745
最后登录
1970-1-1
发表于 2013-12-10 17:40:12 | 显示全部楼层

RE:FlexBus的CS3无信号

学习了!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-9-10 13:18 , Processed in 0.087015 second(s), 23 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表