1553B总线控制器 BU64843模式配置

寄存器地址

#define  INT_SHIELD_REG              0x0000u  //中断屏蔽寄存器
#define  CONFIGURE_REG1              0x0001u  //配置寄存器1
#define  CONFIGURE_REG2              0x0002u  //配置寄存器2
#define  RESET_REG                   0x0003u  //启动/复位寄存器(写)
#define  BC_RT_CMDREG                0x0003u  //非增强BC/RT命令栈指针寄存器/增强BC指令表指针寄存器(读)
#define  BC_RT_CTRL_REG              0x0004u  //BC控制字/RT子地址控制字寄存器(读/写)
#define  TICK_REG                    0x0005u  //时标寄存器
#define  INT_STATE_REG               0x0006u  //中断状态寄存器1
#define  CONFIGURE_REG3              0x0007u  //配置寄存器3
#define  CONFIGURE_REG4              0x0008u  //配置寄存器4
#define  CONFIGURE_REG5              0x0009u  //配置寄存器5
#define  RT_MT_DATA_REG              0x000au  //RT/MT数据栈地址寄存器(读)
#define  BC_FRAME_TIME_REG           0x000bu  //BC帧时间保留寄存器(读)       
#define  BC_MSG_TIME_REG             0x000cu  //BC消息间时间保留寄存器(读)
                                     
#define  DBC_INIT_MSG_REG            0x000du   //非增强BC消息帧/增强BC初始化指令指针RT上一个命令字/MT触发字寄存器(读/写)
#define  RT_STATE_REG                0x000eu   // RT状态字寄存器(读)
#define  RT_BYTE_REG                 0x000fu  //  RT比特字寄存器(读)
#define  TEST_REG0                   0x0010u  //测试寄存器0
#define  TEST_REG1                   0x0011u  //测试寄存器.
#define  TEST_REG2                   0x0012u  //测试寄存器.
#define  TEST_REG3                   0x0013u  //测试寄存器.
#define  TEST_REG4                   0x0014u  //测试寄存器.
#define  TEST_REG5                   0x0015u  //测试寄存器.
#define  TEST_REG6                   0x0016u  //测试寄存器.
#define  TEST_REG7                   0x0017u  //测试寄存器7
#define  CONFIGURE_REG6              0x0018u  //配置寄存器6
#define  CONFIGURE_REG7              0x0019u  //配置寄存器7
                                     
#define  BC_CONDITON_REG             0x001bu  //BC条件码寄存器(读)
#define  BC_GENERAL_REG              0x001bu  // BC通用标记寄存器(写)
#define  IN_TEST_STATE_REG           0x001cu  //内建自测试状态寄存器(读)
#define  INT_SHIELD_REG2             0x001du  //中断屏蔽寄存器2
#define  INT_STATE_REG2              0x001eu  //中断状态寄存器2
                                     
#define  BC_RT_MT_GENERAL_REG        0x001fu  //BC通用序列指针寄存器/RT-MT中断状态序列指针寄存器(读/写)


/* RT MEM映射 */
#define RT_A_STACK_START             0x0000u    //栈区A的起始地址
#define RT_A_STACK_END               0x00ffu    //栈区A的结束地址
#define POINTER_A_STACK              0x0100u    //区域A栈指针(固定地址)
#define POINTER_B_STACK              0x0104u    //区域B栈指针(固定地址)
#define MODE_CODE_TABLE_STATR        0x0108u    //方式码选择性中断表起始地址
#define MODE_CODE_TABLE_END          0x010fu    //方式码选择性中断表结束地址
#define MODE_CODE_DATA_START         0x0110u    //方式码数据
#define LOOK_TABLE_A_START           0x0140u    //查询表A起始地址
#define LOOK_TABLE_A_END             0x01bfu    //查询表A结束地址
#define LOOK_TABLE_B_START           0x01C0u    //查询表B起始地址
#define LOOK_TABLE_B_END             0x023fu    //查询表B结束地址
#define BUSY_LOOK_TABLE_START        0x0240u    // 忙查询表起始地址
#define BUSY_LOOK_TABLE_END          0x0247u    // 忙查询表结束地址

#define DATA_BLOCK_BASE_ADDR_0       0x0260u    // 数据块0的起始地址
#define DATA_BLOCK_BASE_ADDR_1_4     0x0280u   // 数据块1-4的起始地址范围起始值
#define DATA_BLOCK_SIZE              0x001fu    // 每个地址块的大小
#define DATA_BLOCK_SPECIAL_ADDR_5    0x4000u  // 数据块5的起始地址
// 计算数据块x的起始地址
#define DATA_BLOCK_ADDR(x)      \
    ((x) == 0 ? DATA_BLOCK_BASE_ADDR_0 : \
     ((x) >= 1 && (x) <= 4 ? DATA_BLOCK_BASE_ADDR_1_4 + ((x) - 1) * DATA_BLOCK_SIZE : \
      ((x) == 5 ? DATA_BLOCK_SPECIAL_ADDR_5 : \
       /* 从数据块6开始又恢复为连续分布 */ \
       DATA_BLOCK_BASE_ADDR_1_4 + 4 * DATA_BLOCK_SIZE + ((x) - 6) * DATA_BLOCK_SIZE)))    

#define ILLEGAL_COMMAND_TABLE_START  0x0300u  //命令非法化表起始地址
#define ILLEGAL_COMMAND_TABLE_END    0x03ffu  

/* RT查询表 A*/
#define RECV_LOOK_TABLEA_START       0x0140u       //接收(广播)查询表起始地址
#define RECV_LOOK_TABLEA_END         0x015fu       //接收(广播)查询表结束地址
#define SEND_LOOK_TABLEA_START       0x0160u       //发送查询表起始地址
#define SEND_LOOK_TABLEA_END         0x017fu         
#define RADIO_LOOK_TABLEA_START      0x0180u       //广播查询表起始地址
#define RADIO_LOOK_TABLEA_END        0x019fu
#define ADDR_CTRL_BYTE_TABLEA_START  0x01a0u     //字地址控制字查询表起始地址
#define ADDR_CTRL_BYTE_TABLEA_END    0x01bfu

/* RT查询表 B*/                      
#define RECV_LOOK_TABLEB_START       0x01c0u       //接收(广播)查询表起始地址
#define RECV_LOOK_TABLEB_END         0x01dfu       //接收(广播)查询表结束地址
#define SEND_LOOK_TABLEB_START       0x01e0u       //发送查询表起始地址
#define SEND_LOOK_TABLEB_END         0x01ffu         
#define RADIO_LOOK_TABLEB_START      0x0200u       //广播查询表起始地址
#define RADIO_LOOK_TABLEB_END        0x021fu
#define ADDR_CTRL_BYTE_TABLEB_START  0x0220u     //字地址控制字查询表起始地址
#define ADDR_CTRL_BYTE_TABLEB_END    0x023fu

BC模式

	WR_1553B_REG(0x0003,0x0001);
	WR_1553B_REG(0x0007,0x8000);
	WR_1553B_REG(0x0007,0x8000);
	WR_1553B_REG(0x0000,0x0000);
	WR_1553B_REG(0x0001,0x0170);
	WR_1553B_REG(0x0002,0x8400);
	WR_1553B_REG(0x0005,0x0000);
	WR_1553B_REG(0x0008,0x1060);
	WR_1553B_REG(0x0009,0x0902);
	WR_1553B_REG(0x000D,0x0008);
	
	WR_1553B_MEM(0x0100,0x0000);
	WR_1553B_MEM(0x0101,0xFFFE);
	WR_1553B_MEM(0x0102,0x0000);
	WR_1553B_MEM(0x0103,0xFFFE);	
	WR_1553B_MEM(0x0000,0x0000);
	WR_1553B_MEM(0x0001,0x0000);
	WR_1553B_MEM(0x0002,0x0000);
	WR_1553B_MEM(0x0003,0x0108);

	WR_1553B_MEM(0x0108,0x0180);    
	WR_1553B_MEM(0x0109,0x0820);
	
	for(int i=0;i<0x20;i++)
	{
		WR_1553B_MEM(0x010A+i,0x0060+i);  
	}
	
	WR_1553B_MEM(0x012A,0x0000);
	WR_1553B_MEM(0x012B,0x0000);
	
	WR_1553B_REG(0x0003,0x0002);

RT模式

WR_1553B_REG(0x0003,0x0001);
    WR_1553B_REG(0x0007,0x8000);
    WR_1553B_REG(0x0000,0x0000);
    WR_1553B_REG(0x0002,0xB803);
    WR_1553B_REG(0x0007,0x809D);
    WR_1553B_REG(0x0008,0x2008);
    WR_1553B_REG(0x0009,0x0902);

    BlockWR_1553B_MEM(0x0000,0x00FF,0x0000);

    WR_1553B_MEM(0x0100,0x0000);
    WR_1553B_MEM(0x0120,0x1122);

    BlockWR_1553B_MEM(0x0140,0x015F,0x0400); 
    BlockWR_1553B_MEM(0x0160,0x017F,0x0800);
    BlockWR_1553B_MEM(0x01A0,0x01BF,0x0000);
    WR_1553B_MEM(0x01A1,0x0000);

    BlockWR_1553B_MEM(0x0240,0x0247,0x0000);

    BlockWR_1553B_MEM(0x0300,0x03FF,0x0000);

     for(int i=0;i<32;i++)
     {
         WR_1553B_MEM(0x0800+i,0x00A0+i);
     }
     
     WR_1553B_REG(0x0001,0x8F80);

MT模式

	//选择性消息监测模式
	WR_1553B_REG(0x0003,0x0001);
	WR_1553B_REG(0x0007,0x8000);
	WR_1553B_REG(0x0007,0x8D00);
	WR_1553B_REG(0x0001,0x5000);

	WR_1553B_MEM(0x0102,0x0400);
	WR_1553B_MEM(0x0103,0x0800);
	for(i=0;i<0x80;i++)
	{
		WR_1553B_MEM(0x0280+i,0xFFFF);
	}
	WR_1553B_REG(0x0003,0x0002);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值