最近用STM32103 度TI的 ADC161S626,一直读不到数据,后来发现只要设置为单线接收模式,不管发不发数据SCK都一直保持时钟输出没有空闲高电平,改成双线模式就恢复成空闲高电平。求助单线只接收模式到低到低该怎么用。是不是设置不对
void SPI2_Init(void)
{
SPI_InitTypeDef SPI_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE);//¿ªÆôGPIOB£¬¿ªÆô¸´Óù¦ÄÜʱÖÓ
/* SPI2 Periph clock enable */
/// 12 nss 13 14miso 15mosi
/* Configure SPI2 pins: NSS, SCK, MISO and MOSI */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //¸´ÓÃÍÆÍìÊä³ö
GPIO_Init(GPIOB, &GPIO_InitStructure);
//ÉèÖÃADCµÄcs pin
//
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);//¿ªÆôSPI2ʱÖÓ
SPI_Cmd(SPI2,DISABLE); //ÏȽûÓÃSPI2
/* SPI1 configuration */
SPI_InitStructure.SPI_Direction =SPI_Direction_1Line_Rx; //
SPI_InitStructure.SPI_Mode = SPI_Mode_Master; // SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b; //16λÕê½á¹¹
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High; // ʱÖÓÐü¿Õ ²»·¢ËÍʱΪ¸ß adc161s
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; //Êý¾Ý²¶»ñΪµÚ2¸öʱÖÓ while the 2nd SCLK falling edge clo
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; // NSSÐźÅÓÉSSIλ¿ØÖÆ Ö÷ģʽΪ1
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;//²¨ÌØÂÊÔ¤·ÖƵ Ϊ4
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; //Êý¾Ý´«Êä´Ó×î¸ßÓÐЧλ¿ªÊ¼
SPI_InitStructure.SPI_CRCPolynomial = 7; //CRCУÑé¶àÏîʽ
SPI_Init(SPI2, &SPI_InitStructure);
/* Enable SPI2 */
SPI_Cmd(SPI2, ENABLE); //¿ªÆôSPI
///
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>