io6Library是一个IPv6集成库,可以轻松集成和管理使用WIZnet硬连线双TCP / IP堆栈控制器(WIZCHIP)产品系列的用户应用程序。
io6Library用于管理依赖于用户特定MCU的代码,因此用户无需根据用户MCU执行io6Library的移植操作。(有关更多信息,请参见如何使用)
Reigsters Defintion
每个WIZCHIP I / O访问功能
WIZCHIP控制API,用于用户应用程序集成,管理和迁移
有关更多详细信息,请参阅io6Library.chm。
io6Library.chm可能不是最新的,所以请参考doxygen程序程序使用Doxyfile.dox项目制作的文档。如果您愿意,Doxygen程序可以将文档设置为chm,html或pdf。
io6Library用户可以通过在wizchip_conf.h中仅修改一些定义来立即使用它。有关更多信息,请参见如何使用。
定义wizchip_conf.h中定义的WIZCHIP的类型和接口,以满足您的预期用途。
根据您的HOST界面自行创建基本的Access I / O功能。这是因为每个用户HOST的接口控制方法不同。所以,你应该成功。
例如,如果您使用STM32FXXX的SPI1定义以下内容并控制WIZCHIP
#定义 _WIZCHIP_IO_MODE_ _WIZCHIP_IO_MODE_SPI_VDM_
通过SPI接口创建基本单元功能,如WIZCHIP选择/取消选择,1字节读/写,临界区进入/退出等,如下所示。
通过SPI接口进行基本I / O访问功能,如WIZCHIP选择/取消选择,1字节读/写和临界区进入/退出,如下所示。
01 void your_wizchip_enable(void)
02 {
03 / * void HAL_GPIO_WritePin(GPIO_TypeDef * GPIOx,uint16_t
GPIO_Pin,GPIO_PinState PinState)* /
04 HAL_GPIO_WritePin(GPIOD,GPIO_PIN_7,GPIO_PIN_RESET)
05 }
06
07 void your_wizchip_disable(void)
08 {
09 HAL_GPIO_WritePin(GPIOD,GPIO_PIN_7,GPIO_PIN_SET)
10 }
01 / *通过SPI读取1个字节* /
02 uint8_t your_spi_read_byte()
03 {
04 uint8_t ret;
05 /*HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef
06 *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout)*/
07 HAL_SPI_Receive(SPI1,&RET,1,1000);
08 return ret;
09 }
10
11 / *通过SPI写入1个字节* /
12 void your_spi_wite_byte( uint8_t wd)
13 {
14 / * HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef
15 * hspi,uint8_t * pData,uint16_t Size,uint32_t Timeout); * /
16 HAL_SPI_Transmit(SPI1,&wd, 1, 1000);
17 }
01 void your_critical_enter(void)
02 {
03 __disable_irq();
04 }
05 void your_critical_exit(void)
06 {
07 __enable_irq();
08 }
01 void your_spi_dma_write_buf(uint8_t * pbuf,iodata_t len)
02 {
03 / * HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef * hspi,
uint8_t * pData,uint16_t Size)* /
04 HAL_SPI_Transmit_DMA(SPI1,pbuf,(uint16_t)len);
05 }
06 void your_spi_dma_read_buf(uint8_t * pbuf,iodata_t len)
07 {
08 / * HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef * hspi,
uint8_t * pData,uint16_t Size)* /
09 HAL_SPI_Receive_DMA(SPI1,pbuf,( uint16_t)len);
10 }
在WIZCHIP初始化之前注册您在上述示例中制作的定义代码,如下所示。
01 #include "wizchip_conf.h" // Just only included for using ioLibrary
02 void main(void)
03 {
04 uint16_t chip_id;
05 wiz_NetTimeout tmp_timeout = 0 ;
06 / *
07 //初始化目标系统,如SPI,UART,DMA等。
08 * /
09 / *将您的基本访问功能注册到io6Library * /
10 // WIZCHIP启用/禁用
11 reg_wizchip_cs_cbfunc(your_wizchip_enable,your_wizchip_disable);
12 // WIZCHIP Critical Section
13 reg_wizchip_cris_cbfunc(your_critical_enter,your_critical_exit);
14 // WIZCHIP读/写功能
15 reg_wizchip_spi_cbfunc(your_spi_read_byte,
your_spi_write_byte, 0, 0);
16 //如果您为readign/writting函数创建DMA函数,您可以注册如下
17 //reg_wizchip_spi_cbfunc(your_spi_read_byte, your_spi_write_byte,
your_spi_dma_read_buf, your_spi_dma_write_buf);
18
19 / *对于io6Library读/写测试* /
20 //读取测试
21 ctlwizchip(CW_GET_ID,&chip_id);
22 //Check WIZCHIP ID value for read test
23 if(chip_id != 0x6100) printf("ERROR : HOST I/F READ\r\n")
24 //这只是W6100的例子41
25
26 //写测试
27 ctlwizchip(CW_PHY_RESET, 0);
28 //检查物理PHY Link Led关闭然后再打开。
29 }
io6Library下载:https://github.com/Wiznet/io6Library
WIZnet官网:https://www.iwiznet.cn/