This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS570LC4357:TMS570LC4357:带有 tms570lc4357的 WIZnet

Guru**** 1785650 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1389178/tms570lc4357-tms570lc4357-wiznet-with-tms570lc4357

器件型号:TMS570LC4357

工具与软件:

我尝试 针对简单的 TCP 客户端应用、将 w5500与 mibspi 5连接起来  

/*
* w5500_spi.c
*
*创建时间: 2024年7月17日
*作者:安舒尔·萨胡(AMS)阿尔泰克新能源有限公司
*/

#include "wizchip_conf.h"
#include "stdio.h"
#include "w5500_spi.h"
#include "Device_header.h"
//#include "Device_TMS570LC43.h"
#include "Device_types.h"
#include "HL_sys_common.h"
#include "HL_system.h"
#include "HL_Gio.h"
#include "HL_mibspi.h"
#define CS_PIN PIN_CS0
#define RESET_PIN 7U //使用 GIOA7进行复位

//初始化 mibspi5的函数
void mibspi5_init (void){
printf ("Initializing SPI...\n");
mibspiInit();
mibspiSetFunctional (mibspiREG5、CS_PIN);//设置 CS0的功能模式
printf ("SPI initialized.\n");
}

uint8_t SPIReadWrite (uint8_t data){
uint32_t data1_value = 0x00000000;
data1_value |=(uint32_t)(data 和0xFF);//数据位(低8位)
//片选(示例放置)

mibspiREG5->DAT1 = data1_value;//使用其他配置写入数据

//调试:等待前打印状态


//等待传输完成
while (!(mibspireG5->FLG 和0x00000100));//检查 TXINTFLG 位(第9位)是否完成传输

return (uint8_t)(mibspiREG5->BUF 和0xFF);//读取接收的数据
}

// SPI 芯片选择和取消选择功能
void wizchip_select(void){
mibspiREG5->PC3 &=~(1U << CS_PIN);// CS low
}

void wizchip_decope(void){
mibspiREG5->PC3 |=(1U << CS_PIN);// CS HIGH
}

// SPI 读写函数
uint8_t wizchip_read (void){
返回 SPIReadWrite (0x00);
}

void wizchip_WRITE(uint8_t wb){
SPIReadWrite (WB);
}

// SPI 突发读取和写入函数
void wizchip_readburst (uint8_t* pBuf、uint16_t len){
uint16_t i;
对于(i = 0;i < len;i++){
* pBuf = SPIReadWrite (0x00);
pBuf++;
}
}

void wizchip_writeburst (uint8_t* pBuf、uint16_t len){
uint16_t i;
对于(i = 0;i < len;i++){
SPIReadWrite(*pBuf);
pBuf++;
}
}

//用于初始化 GPIO 引脚的函数
void W5500IOInit (void){
gioInit ();
gioSetDirection (gioPORTA、1U << RESET_PIN);//将 GIOA7设置为输出
gioSetBit (gioPORTA、RESET_PIN、1);//将 GIOA7设置为高电平(默认状态)
}

//此函数用于初始化 W5500
void W5500Init (void){
uint8_t memsize[2][8]={{2、2、2、2、2、 2、2、2}、{2、2、 2、2、2、2、2、 2};

W5500IOInit();

//在 RESET 引脚上发送脉冲
gioSetBit (gioPORTA、RESET_PIN、0);//重置为低电平
volatile int i;
对于(I = 0;I < 10000;I++);//短延迟
gioSetBit (gioPORTA、RESET_PIN、1);//重置为高电平

reg_wizchip_cs_cbfunc(Wizchip_select, wizchip_decope);
reg_wizchip_spi_cbfunc (wizchip_read、wizchip_write);
reg_wizchip_spirburst_cbfunc (wizchip_readburst、wizchip_writeburst);

// WIZChip 初始化
if (ctlwizchip(cw_init_WIZCHIP,(void*) memsize)==-1){
printf ("WIZCHIP 初始化失败。\r\n");
while (1);
}
printf ("WIZCHIP 初始化成功。\r\n");
}  

如果 WIZnet 成功但无法使用 mibspi5读取套接字编号 、则说明有任何正常运行的示例或任何其他引用