你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
jackten 发表于 2017-2-21 14:23 我也来学习学习
xmshao 发表于 2017-2-21 16:19 不知你用哪个芯片。 不过不管哪个芯片,STM32各系列库里都有SPI全双工的例程,先用例程跑下。 ...
xuezhimeng2010 发表于 2017-2-21 16:24 贴上代码来看看
查看全部评分
xuezhimeng2010 发表于 2017-2-21 16:55 或许你的初始化配置有问题,贴出你的spi配置图or代码
我已经分析不出了
不过不管哪个芯片,STM32各系列库里都有SPI全双工的例程,先用例程跑下。
STM32L031的 没找到例程
uint8_t liming=0x06;地址
uint8_t liming2=0x00;
uint8_t lmGET_data; 返回数据存放
while(1){
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4 ,GPIO_PIN_RESET );
HAL_SPI_Transmit(&hspi1,&liming2,sizeof(liming2),1000);
HAL_SPI_Receive(&hspi1,&lmGET_data,sizeof(lmGET_data),1000);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4 ,GPIO_PIN_SET );
if(lmGET_data==0x6c)
printf("\r\n LoRaOn \r\n");
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4 ,GPIO_PIN_RESET );
HAL_SPI_Transmit(&hspi1,&liming,sizeof(liming),1000);
HAL_SPI_TransmitReceive(&hspi1, &liming2, &lmGET_data, 1, 1000);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4 ,GPIO_PIN_SET );
if(lmGET_data==0x6c)
printf("\r\n LoRaOn \r\n");
}
评分
查看全部评分
/* SPI1 init function */
void MX_SPI1_Init(void)
{
hspi1.Instance = SPI1;
hspi1.Init.Mode = SPI_MODE_MASTER;
hspi1.Init.Direction = SPI_DIRECTION_2LINES;
hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
hspi1.Init.NSS = SPI_NSS_SOFT;
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_128;//ËÙ¶È×îÂýÊÔÊÔ¿´
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi1.Init.CRCPolynomial = 7;
if (HAL_SPI_Init(&hspi1) != HAL_OK)
{
Error_Handler();
}
}