OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2816|回复: 0

spi自收发问题。

[复制链接]

8

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2019-1-16
在线时间
28 小时
发表于 2019-1-21 10:15:14 | 显示全部楼层 |阅读模式
STM32 F4/F7/H7开发板,使用SPI2做自收发实验,将PB14、PB15(MISO和MOSI)两个引脚连接,进行数据传输。
传输时发现,当数据总长度不超过16个字节时收发正常,超过16个字节接收到的数据全是0,请问是什么情况。。

附代码如下:
#define DATA_NUM 9
void SPI_Init(void)
{
        int i = 0;
        uint16_t tx[DATA_NUM] = {0x1234, 0x2234, 0x3234, 0x4234, 0x5234, 0x6234, 0x7234, 0x8234, 0x9234};//, 0xa234};
        uint16_t rx[DATA_NUM] = {0};
        SPI_HandleTypeDef SPI_Handler;
        SPI_Handler.Instance = SPI2;
        SPI_Handler.Init.Mode = SPI_MODE_MASTER;
        SPI_Handler.Init.Direction = SPI_DIRECTION_2LINES;
        SPI_Handler.Init.DataSize = SPI_DATASIZE_16BIT;
        SPI_Handler.Init.CLKPolarity = SPI_POLARITY_HIGH;
        SPI_Handler.Init.CLKPhase = SPI_PHASE_1EDGE;
        SPI_Handler.Init.NSS = SPI_NSS_SOFT;
        SPI_Handler.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256;
        SPI_Handler.Init.FirstBit = SPI_FIRSTBIT_MSB;
        SPI_Handler.Init.TIMode = SPI_TIMODE_DISABLE;
        SPI_Handler.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
        SPI_Handler.Init.CRCPolynomial = 7;
        HAL_SPI_Init(&SPI_Handler);
        __HAL_SPI_ENABLE(&SPI_Handler);
        HAL_SPI_TransmitReceive(&SPI_Handler, (uint8_t *)tx, (uint8_t *)rx, sizeof(uint16_t) * DATA_NUM, 1000);
        for(i = 0; i < DATA_NUM; i++)
                printf("rx[%d] = %x\r\n",i, rx[i]);
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 13:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表