CH573無法使用映射引腳SPI

RT

PRINT(?"1.spi0?mul?slave?mode?\n");
??GPIOPinRemap(ENABLE,RB_PIN_SPI0);
??GPIOA_ModeCfg(GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15,?GPIO_ModeIN_PU);
??GPIOB_ModeCfg(GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15,?GPIO_ModeIN_PU);
??SPI0_SlaveInit();
??/*i?=?SPI0_SlaveRecvByte();
??PRINT(?"recv:%d\n",i);
??SPI0_SlaveSendByte(?~i?);*/

??SPI0_SlaveRecv(?spiBuffrev,?5?);
??PRINT(?"%d",spiBuffrev[0]);
??PRINT(?"%d",spiBuffrev[1]);
??PRINT(?"%d",spiBuffrev[2]);
??PRINT(?"%d",spiBuffrev[3]);
??PRINT(?"%d\n",spiBuffrev[4]);
??SPI0_SlaveTrans(?spiBuffrev,?5?);
??SPI0_SlaveDMARecv(?spiBuffrev,?12?);
??SPI0_SlaveDMATrans(?spiBuffrev,?12?);

使用PB引腳,作為從機時,只能接收到數(shù)據(jù)而不能發(fā)送數(shù)據(jù)。使用PA引腳沒有這個問題


熱門產(chǎn)品 : USB3.0 HUB控制器:CH634

您好,CH573如果需要更改映射引腳,可以參考手冊,如果需要修改,只要對這位寄存器進行操作即可

image.png


GPIOPinRemap(ENABLE,RB_PIN_SPI0);

已經(jīng)操作過了,看上面代碼。沒用,只能接收不能發(fā)送


/******************************************************************************

? ? ? 函數(shù)說明:LCD得SPI接口初始化,使用SPI0(PB腳),模式0.

? ? ?入口數(shù)據(jù):無

? ? ? 返回值:? 無

******************************************************************************/

void LCD_SPI_Init(void)

{

? 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();

}


你可以參考這個例子,然后移植過去試一下。



麻煩自己親自試下,你的代碼里有幾個問題,1.我是SPI從機,你這個是主機,GPIOB_ModeCfg我只能設(shè)為輸入。

我把GPIO配成輸出連接收都不行


?R16_PIN_ALTERNATE |= 0x0100;

//? GPIOA_ModeCfg(GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15, GPIO_ModeIN_PU);

GPIOB_ModeCfg(GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14,?GPIO_ModeIN_PU);

GPIOB_SetBits( GPIO_Pin_15 );

GPIOB_ModeCfg( GPIO_Pin_15 ,?GPIO_ModeOut_PP_5mA?);

? SPI0_SlaveInit();

i = SPI0_SlaveRecvByte();

? SPI0_SlaveSendByte( i );

CH573代碼。

GPIOA_SetBits( GPIO_Pin_12 );

GPIOA_ModeCfg(GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14, GPIO_ModeOut_PP_5mA);

??? SPI0_MasterDefInit( );

?

// 單字節(jié)發(fā)送

GPIOA_ResetBits( GPIO_Pin_12 );???

??? SPI0_MasterSendByte(0x55);

GPIOA_SetBits( GPIO_Pin_12 );

DelayMs( 1 );

GPIOA_ResetBits( GPIO_Pin_12 );

i = SPI0_MasterRecvByte();

GPIOA_SetBits( GPIO_Pin_12 );

DelayMs( 2 );

CH579主機代碼。

image.png

image.png


SPI0_SlaveInit();
i?=?SPI0_SlaveRecvByte();
??SPI0_SlaveSendByte(?i?);

不知道這個是不是從機,我這里不知道為什么就是不行,切換到PA腳就沒問題,用的是CH573開發(fā)板


從機PB可以接收,但是發(fā)送不行SPI0_SlaveSendByte(?i?),不知道你發(fā)出去沒


邏輯分析儀抓到了PB發(fā)出去的數(shù)據(jù),你把我那個573那段代碼復(fù)制過去試一下。別忘了?R16_PIN_ALTERNATE |= 0x0100;這句。


可以了,多謝,關(guān)鍵的一句話

GPIOB_SetBits(?GPIO_Pin_15?);
GPIOB_ModeCfg(?GPIO_Pin_15?,?GPIO_ModeOut_PP_5mA?);

需要吧MISO設(shè)置為輸出,不然PB不行。PA的話就算設(shè)置為輸入,他也會自己切換。

@管理員 573的手冊要更新一下了


搭車問下,CH573的SPI工作頻率最高能到多少?是否可以到主頻的一半30M左右?

GPIO的5mA和20mA驅(qū)動能力分別對應(yīng)工作頻率是多少?


image.png
image.png

SPI的時鐘是最高可以接近主頻的1半

IO的驅(qū)動能力跟頻率在我們的芯片應(yīng)用上沒有直接關(guān)系。


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频