打印
[其他ST产品]

SPI HAL库。每次传输1个字节不对,一次传输多个字节正常。

[复制链接]
89|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小库里|  楼主 | 2025-6-28 21:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
pi, spi, HA, TE, ip
本帖最后由 小库里 于 2025-6-28 22:11 编辑

将一个项目移植到cubeIDE上的freertos。用一个wizNET的W5500作为网络接口,与芯片通信有问题。如果一次就把数据发送到芯片上,能正常工作。
WIZCHIP_CRITICAL_ENTER();
WIZCHIP.CS._ return();
addrsel| =(_W5500_SPI_WRITE_)|#25105;(SPI_VDM_OP);
int [4];
addr[0] =((AddrSel & 0x00FF0000)>> 16);
addr[1] =((AddrSel & 0x0000FF00)>> 8);
addr[2] =((AddrSel & 0x00000FF)>> 0);
int [3];
//wizchip_spi_write_bunch(addr,4); -->
uint32_t res = HAL_SPI_Transmit(wiz->spi,addr,4,wiz->spi_timeout);

WIZCHIP.CS._ return();
WIZCHIP_CRITICAL_EXIT();
但是如果我像这样以8位1字节发送,就工作不正常。
  WIZCHIP_CRITICAL_ENTER();
   WIZCHIP.CS._select();
   AddrSel |= (_W5500_SPI_WRITE_ | _W5500_SPI_VDM_OP_);
   wizchip_spi_write_byte((AddrSel & 0x00FF0000) >> 16);
   wizchip_spi_write_byte((AddrSel & 0x0000FF00) >>  8);
   wizchip_spi_write_byte((AddrSel & 0x000000FF) >> 0);
   wizchip_spi_write_byte(wb);
   //Looks like this
//   void wizchip_spi_write_byte(uint8_t wb)
//   {
//    wiz5500 *wiz = ð
//
//    uint32_t res = HAL_SPI_Transmit(wiz->spi, (uint8_t)wb, 1, wiz->spi_timeout);
//   }
   WIZCHIP.CS._deselect();
   WIZCHIP_CRITICAL_EXIT();
错误提示Update 1 -> you can’t send a ‘0’ with halspi has this in it
if ((pData == NULL) || (Size == 0U))
{
   errorcode = HAL_ERROR;
   goto error;
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

21

帖子

0

粉丝