CH32V103 主機(jī)模式NSS片選設(shè)置

遇到的問題:我想要設(shè)置主模式,用NSS作為片選引腳去控制從機(jī),但是不管我怎么設(shè)置,不管是硬件控制還是軟件控制,NSS(PA4)都沒有信號產(chǎn)生,如何設(shè)置才能夠使PA4產(chǎn)生片選信號?

SPI初始化程序:

void SPI_FullDuplex_Init(void)

{

? ? GPIO_InitTypeDef GPIO_InitStructure = {0};

? ? SPI_InitTypeDef? SPI_InitStructure = {0};


? ? RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_SPI1, ENABLE);


? ? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;

? ? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

? ? GPIO_Init(GPIOA, &GPIO_InitStructure);

? ? GPIO_SetBits(GPIOA, GPIO_Pin_4);


? ? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;

? ? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

? ? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

? ? GPIO_Init(GPIOA, &GPIO_InitStructure);


? ? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;

? ? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

? ? GPIO_Init(GPIOA, &GPIO_InitStructure);


? ? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;

? ? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

? ? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

? ? GPIO_Init(GPIOA, &GPIO_InitStructure);




? ? SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;

? ? SPI_InitStructure.SPI_Mode = SPI_Mode_Master;


? ? SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;

? ? SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;

? ? SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;

? ? SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;

? ? SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64;

? ? SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_LSB;

? ? SPI_InitStructure.SPI_CRCPolynomial = 0;


? ? SPI_Init(SPI1, &SPI_InitStructure);


//? ? SPI_SSOutputCmd(SPI1, ENABLE);


? ? SPI_Cmd(SPI1, ENABLE);

}



主函數(shù):

? ? SPI_FullDuplex_Init();

? ? Delay_Ms(10);



? ? while(1)

? ? {

? ? ? ? u8 retry;

? ? ? ? retry = 0;

//? ? ? ? while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET) //等待發(fā)送區(qū)空

//? ? ? ? {

//? ? ? ? ? ? retry++;

//? ? ? ? ? ? if(retry>200)return 0;

//? ? ? ? }

? ? ? ? GPIO_ResetBits(GPIOA, GPIO_Pin_4);

? ? ? ? Delay_Us(10);

? ? ? ? SPI_I2S_SendData(SPI1, 1000);

? ? ? ? Delay_Us(100);

? ? ? ? GPIO_SetBits(GPIOA, GPIO_Pin_4);

? ? ? ? Delay_Ms(1000);


你好,按照你的配置(軟件片選),片選信號需由自己手動拉高或者拉低,此時(shí)GPIO口不可以復(fù)用成SPI的片選腳,即GPIO口應(yīng)配置為普通推挽輸出模式(out --pp),同時(shí)看你程序?qū)O口配置成輸出模式時(shí),并沒有設(shè)置速度,不配置速度此時(shí)是輸入模式。

image.pngimage.png

這個可以參考我們官網(wǎng)EVT中操作spi-flash的例程,下載鏈接:http://www.findthetime.net/downloads/CH32V103EVT_ZIP.html?。如若使用硬件片選,可參考這篇博客:https://www.cnblogs.com/wchmcu/p/17340422.html,后續(xù)若有問題,可郵箱(yrl@wch.cn)與我溝通


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

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