英飞凌XMC2GO控制读写英飞凌BGT24LTR22射频板寄存器

BGT24LTR22是英飞凌推出的一款雷达射频芯片,用它可以产生24Ghz的雷达信号。

这是BGT24LTR22的评估版,本篇文章旨在使用XMS2Go与BGT24LTR22芯片进行SPI通信,以达到控制射频板的目的。

首先使用Dave软件进行编程

#define TICKS_PER_SECOND 1000
#define TICKS_WAIT 1000
uint8_t i=0;

const uint8_t data[9] = {0x01,0x00,0x63,0x03,0x03,0xFD,0x02,0x00,0x00};
XMC_GPIO_CONFIG_t rx_pin_config;
XMC_GPIO_CONFIG_t tx_pin_config;
XMC_GPIO_CONFIG_t selo_pin_config;
XMC_GPIO_CONFIG_t clk_pin_config;

void loop_delay(uint32_t time)
{
	while(time--);
}

XMC_SPI_CH_CONFIG_t spi_config =
{
  .baudrate = 10000,
  .bus_mode = XMC_SPI_CH_BUS_MODE_MASTER,
  .selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS,
  .parity_mode = XMC_USIC_CH_PARITY_MODE_NONE
};
void SysTick_Handler(void)
{

  static uint32_t ticks = 0;
  ticks++;
  if (ticks == TICKS_WAIT)
  {

	  	

    while(i<9)
    {
	i =0;
	XMC_SPI_CH_EnableSlaveSelect(XMC_SPI0_CH0, XMC_SPI_CH_SLAVE_SELECT_0);
      XMC_SPI_CH_Transmit(XMC_SPI0_CH0,data[i++],XMC_SPI_CH_MODE_STANDARD);
      while((XMC_SPI_CH_GetStatusFlag(XMC_SPI0_CH0) & XMC_SPI_CH_STATUS_FLAG_TRANSMIT_SHIFT_INDICATION) == 0U);
      XMC_SPI_CH_ClearStatusFlag(XMC_SPI0_CH0, XMC_SPI_CH_STATUS_FLAG_TRANSMIT_SHIFT_INDICATION);

      XMC_SPI_CH_Transmit(XMC_SPI0_CH0,data[i++],XMC_SPI_CH_MODE_STANDARD);
      while((XMC_SPI_CH_GetStatusFlag(XMC_SPI0_CH0) & XMC_SPI_CH_STATUS_FLAG_TRANSMIT_SHIFT_INDICATION) == 0U);
      XMC_SPI_CH_ClearStatusFlag(XMC_SPI0_CH0, XMC_SPI_CH_STATUS_FLAG_TRANSMIT_SHIFT_INDICATION);

      XMC_SPI_CH_Transmit(XMC_SPI0_CH0,data[i++],XMC_SPI_CH_MODE_STANDARD);
      while((XMC_SPI_CH_GetStatusFlag(XMC_SPI0_CH0) & XMC_SPI_CH_STATUS_FLAG_TRANSMIT_SHIFT_INDICATION) == 0U);
      XMC_SPI_CH_ClearStatusFlag(XMC_SPI0_CH0, XMC_SPI_CH_STATUS_FLAG_TRANSMIT_SHIFT_INDICATION);
         XMC_SPI_CH_DisableSlaveSelect(XMC_SPI0_CH0);
    }

    ticks = 0;
  }
}
int main(void)
{

  XMC_SPI_CH_Init(XMC_SPI0_CH0, &spi_config);
  XMC_SPI_CH_SetInputSource(XMC_SPI0_CH0, XMC_SPI_CH_INPUT_DIN0, USIC0_C0_DX0_P2_0);

  XMC_SPI_CH_SetBitOrderMsbFirst(XMC_SPI0_CH0);

  XMC_SPI_CH_ConfigureShiftClockOutput(XMC_SPI0_CH0,XMC_SPI_CH_BRG_SHIFT_CLOCK_PASSIVE_LEVEL_0_DELAY_ENABLED,XMC_SPI_CH_BRG_SHIFT_CLOCK_OUTPUT_SCLK);
  XMC_SPI_CH_Start(XMC_SPI0_CH0);

  rx_pin_config.mode = XMC_GPIO_MODE_INPUT_TRISTATE;
  XMC_GPIO_Init(XMC_GPIO_PORT2,0, &rx_pin_config);

  tx_pin_config.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT6;
  XMC_GPIO_Init(XMC_GPIO_PORT0,14, &tx_pin_config);

  selo_pin_config.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT6;
  XMC_GPIO_Init(XMC_GPIO_PORT0,9, &selo_pin_config);

  clk_pin_config.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT6;
  XMC_GPIO_Init(XMC_GPIO_PORT0,8, &clk_pin_config);

  P0_0_set_mode(OUTPUT_PP_GP);

  P0_5_set_mode(OUTPUT_PP_GP);
  P0_0_reset();
  loop_delay(50000);
  P0_0_set();
  P0_5_set();

  SysTick_Config(SystemCoreClock / TICKS_PER_SECOND);

  while(1)
  {
    
  }
}

代码对定义了四个SPI管脚,发射拐角0.14,时钟拐角0.8,片选拐角0.9。

这是BGT24LTR22芯片的时序图,已将spi程序设置为以上时序(片选信号低电平有效,SPI_DI信号在时钟上升沿采样,下降沿跳变)。

连接XMS2Go与BGT24LTR22射频板,将程序下载到XMS2Go中。示波器探头连接时钟拐角,另一探头连接BGT24LTR22芯片Do输出,实验结果如下:

 

 黄色线是时钟线,蓝色线是芯片输出的数据,一个“黄色块”中有24个时钟脉冲,发送24位数据,7位地址+1位读写标识符+16位数据,如图所示,程序写了2个寄存器,第三个黄色块中的命令读取第二个寄存器的,波形与第二个寄存器相同。实验结束。

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值