在线时间0 小时
UID171528
注册时间2010-2-17
NXP金币0
该用户从未签到
中级会员
 
- 积分
- 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();
}
}
|
|