完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用STM32,通过spi的dma 收发,运行多次读写以后w5500发送正常,接收卡死,高人帮忙看看
void PY_W5500_Read(uint8_t ah, uint8_t al, uint8_t ctl, uint8_t* data, uint16_t length) { PY_W5500_CS_EN PY_SPIDMA__Status = 1; PY_CMD_Seg[0] = ah; PY_CMD_Seg[1] = al; PY_CMD_Seg[2] = ctl & 0xfb;//hwy----三个函数主要是控制字区别 //HAL_SPI_Transmit_DMA(&hspi2, PY_CMD_Seg, 3); HAL_SPI_Transmit(&hspi2, PY_CMD_Seg, 3,4096); //while(PY_SPIDMA__Status == 1) ; //DWT_DELAY_uS(1); PY_SPIDMA__Status = 1; //HAL_SPI_Receive_DMA(&hspi2, data, length); HAL_StatusTypeDef st = HAL_SPI_Receive(&hspi2, data, length,4096);//注意超时参数 if(st == HAL_tiMEOUT) { PY_SPIDMA__Status = 2; } // uint8_t timeout_temp = 0; // while(PY_SPIDMA__Status == 1)// ;//卡卡卡 // { // DWT_DELAY_uS(1); // timeout_temp++; // if(timeout_temp > 200) // break; // } PY_W5500_CS_DEN DWT_DELAY_uS(1); } //---------发送缓冲区地址高位,地址低位,控制字,数据,长度 void PY_W5500_Send(uint8_t ah, uint8_t al, uint8_t ctl, uint8_t* data, uint16_t length) { PY_W5500_CS_EN PY_SPIDMA__Status = 1; PY_CMD_Seg[0] = ah; PY_CMD_Seg[1] = al; PY_CMD_Seg[2] = ctl | 0x04;//hwy----三个函数主要是控制字区别 //HAL_SPI_Transmit_DMA(&hspi2, PY_CMD_Seg, 3); HAL_SPI_Transmit(&hspi2, PY_CMD_Seg, 3,4096); //while(PY_SPIDMA__Status == 1) ;//发送命令码要等发送完 PY_SPIDMA__Status = 1; //HAL_SPI_Transmit_DMA(&hspi2, data, length); HAL_SPI_Transmit(&hspi2, data, length,4096); //while(PY_SPIDMA__Status == 1) ;//发送内容完全可以不等 PY_W5500_CS_DEN DWT_DELAY_uS(1); } |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
479个成员聚集在这个小组
加入小组5099 浏览 1 评论
12118 浏览 5 评论
3504 浏览 2 评论
2971 浏览 0 评论
12700 浏览 2 评论
w5500 作为tcp server,客户端异常发送【RST,ACK】断开连接问题
1652浏览 1评论
1089浏览 0评论
使用stm32,通过spi的dma 收发,运行多次读写以后w5500发送正常,接收卡死,高人帮忙看看
6299浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 08:16 , Processed in 0.409465 second(s), Total 45, Slave 34 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号