WIZnet-io6Lirbrary库如何使用

概观

io6Library是一个IPv6集成库,可以轻松集成和管理使用WIZnet硬连线双TCP / IP堆栈控制器(WIZCHIP)产品系列的用户应用程序。

io6Library用于管理依赖于用户特定MCU的代码,因此用户无需根据用户MCU执行io6Library的移植操作。(有关更多信息,请参见如何使用)


内容

io6Library可分为以下三种类型。

 

  • Reigsters Defintion

    • 通用寄存器:定义通用寄存器,如网络信息,模式,中断等。
    • 套接字寄存器:定义SOCKET寄存器,如套接字模式,套接字通信,套接字中断等。
  • 每个WIZCHIP I / O访问功能

    • 基本I / O功能:通过WIZCHIP定义的HOST接口(SPI,BUS等)访问输入/输出的基本单元功能
    • 公共寄存器访问功能:基于基本I / O功能访问公共寄存器的功能
    • SOCKET寄存器访问功能:基于基本I / O功能访问SOCKET寄存器的功能
  • WIZCHIP控制API,用于用户应用程序集成,管理和迁移

    • SOCKET API:与BSD SOCKET API一样,SOCKET API提供可以与socket socket commuuincation相关的函数集
    • 额外的API:它提供支持用户应用程序集成的功能,无论WIZCHIP特定的Regiter / Memory,Address Map,Features等等。:对于User Application的小占用空间,可以使用WIZCHIP I / O Access功能替换它。

      有关更多详细信息,请参阅io6Library.chm

io6Library.chm可能不是最新的,所以请参考doxygen程序程序使用Doxyfile.dox项目制作的文档。如果您愿意,Doxygen程序可以将文档设置为chm,html或pdf。


目录

 

io6Library用户可以通过在wizchip_conf.h中仅修改一些定义来立即使用它。有关更多信息,请参见如何使用。


如何使用

io6Library配置

定义wizchip_conf.h中定义的WIZCHIP的类型和接口,以满足您的预期用途。

  • 选择要使用的硬连线双TCP / IP堆栈控制器。在下图中,选择蓝色框中的列表之一,并将其​​选定为_WIZCHIP_,如红框。

  • 选择用户将用于WIZCHIP Access的主机接口(并行总线,串行总线模式等)。在下图中,选择蓝色框中的列表之一,并将其​​选定为_WIZCHIP_IO_MODE_,如红框。

    • 仅当使用并行总线模式时,必须将HOST的存储区基地址设置为WIZCHIPCHIP,如红色框。               
  • WIZCHIP PHY访问模式配置如下图所示,选择蓝色框中定义的以太网PHY访问模式的两种方法之一,并将其​​定义为红色框。

    • _PHY_IO_MODE_PHYCR_:它通过PHY命令和状态寄存器提供对WIZCHIP的以太网PHY的简单控制,如PHY操作模式和链路状态。
    • _PHY__IO_MODE_MII_:通过MDC / MDIO信号直接控制WIZCHIP PHY的以太网PHY寄存器。

 

WIZCHIP I / O访问创建用户定义的功能

根据您的HOST界面自行创建基本的Access I / O功能。这是因为每个用户HOST的接口控制方法不同。所以,你应该成功。

例如,如果您使用STM32FXXX的SPI1定义以下内容并控制WIZCHIP

 

#定义 _WIZCHIP_IO_MODE_        _WIZCHIP_IO_MODE_SPI_VDM_

 

通过SPI接口创建基本单元功能,如WIZCHIP选择/取消选择,1字节读/写,临界区进入/退出等,如下所示。

通过SPI接口进行基本I / O访问功能,如WIZCHIP选择/取消选择,1字节读/写和临界区进入/退出,如下所示。

  • WIZCHIP选择/取消选择:用于设置/复位与WIZCHIP的CSn引脚相连的STM32FXXX的任何GPIO的功能
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 } 


  • WIZCHIP 1字节读/写:通过SPI接口读写1字节的功能
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 } 

  • WIZCHIP关键部分进入/退出:在WIZCHIP访问时防止诸如interupts和任务切换等事件的功能
01 void  your_critical_enter(void)
02 {
03   __disable_irq();
04 } 
05 void  your_critical_exit(void)
06 {
07   __enable_irq();
08 } 


  • WIZCHIP N字节读/写功能:不是强制性的。:但是,如果要使用WIZCHIP使用DMA等外设进行高速访问,请按以下步骤进行操作。:即使不这样做,也可以使用N字节读/写访问,因为它是通过重复您的1字节读/写功能来执行的。
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 } 

将您定义的函数注册到io6Library

在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/

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值