CH579 SPI接口映射

我用到了SPI0接口映射
SPI0:  PA12/PA13/PA14/PA15 -> PB12/PB13/PB14/PB15
GPIOPinRemap()除了用这个函数,还需要其他处理吗。
我的代码如下:
  GPIOB_SetBits( ICM_CS_Pin|ICM_SCK_Pin|ICM_MOSI_Pin );
  GPIOB_ModeCfg(ICM_CS_Pin|ICM_SCK_Pin|ICM_MOSI_Pin, GPIO_ModeOut_PP_5mA);        
        GPIOPinRemap(ENABLE,RB_PIN_SPI0);
        GPIOB_ModeCfg(ICM_INT1_Pin | ICM_INT2_Pin,GPIO_ModeOut_PP_5mA);

  SPI0_MasterDefInit();
  SPI0_CLKCfg(4);
  SPI0_DataMode(Mode0_HighBitINFront);//高位在前  

  GPIOB_ResetBits( ICM_CS_Pin );
        SPI0_MasterSendByte(addr);  
        value = SPI0_MasterRecvByte();
        GPIOB_SetBits( ICM_CS_Pin );
接收到的数据,一直是0,是哪里还要改吗

  R16_PIN_ALTERNATE |= 0x0100;

  LCD_GPIO_Init();

  GPIOB_SetBits( GPIO_Pin_12 );

  GPIOB_ModeCfg( GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15, GPIO_ModeOut_PP_5mA );

  SPI0_MasterDefInit();

具体可以看CH579的功能引脚重映射寄存器(R16_PIN_ALTERNATE)



您好,我也遇到了相同的问题。按如下配置后,通过SPI0_MasterSendByte(0x55);发送数据,在逻辑分析仪上并不能接收到相关的波形。而利用默认的SPI0可以收到。

  R16_PIN_ALTERNATE |= 0x0100;

  LCD_GPIO_Init();

  GPIOB_SetBits( GPIO_Pin_12 );

  GPIOB_ModeCfg( GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15, GPIO_ModeOut_PP_5mA );

  SPI0_MasterDefInit();

是否是因为板子上带了网口,与PB12-PB15连接?


已解决,是网口的问题,两个引脚间近似短路,导致无法一个拉高,另一个拉低。


CH579F SPI0 IO映射 我也遇到了一样的问题,还没解决


  1. 可以使用逻辑分析仪抓一下,看看是什么问题,

  2. 看看板子上有无网口,有的话spi0映射脚默认是接在网口的。


只有登录才能回复,可以选择微信账号登录