2019-07-20 07:48发布
屋脊雀 发表于 2018-5-18 10:18 函数内部转换了吗?不转换的话16位数据是不是只有低8位发送出去?或者是说u16是分两次发送出去?
最多设置5个标签!
我定义16位的数据:
uint16_t DeTxBuffer[1] ;
uint16_t DeRxBuffer[1] ;
收发时使用数据转换即可:
HAL_SPI_TransmitReceive(&hspi1,(uint8_t *)DeTxBuffer,(uint8_t *)DeRxBuffer,1,1000);
那为什么封装的函数都是8位的?因为大部分情况都是8位的。16位的很少用吧?
如果你有特殊需求,那就自己改一个函数,发16位的。
要不就把16位拆成两个8bit的,分两次发送。
你对这个函数理解的不太对。uint16_t DeTxBuffer[1] 是指DeTxBuffer所存储的数据是16bit,而非DeTxBuffer的地址是16bit,在单片机中一般使用8bit 的地址。
所以函数所需要的是地址,而不是数据;即使你的数据不是8位的也不是16位的,只要地址传递正确,依然可以收发数据。
另外,收发数据理应根据数据的大小来发送数据,最好不要将16位的拆分成8位的数据。
一周热门 更多>