วันพุธที่ 3 มิถุนายน พ.ศ. 2558

ข้อมูลเบื้องต้น ENC28J60 Ethernet

ENC28J60 Ethernet module เป็น module ที่มีคุณสมบัติในการทำ Internet protocol ใช้ microship EN28J60 ในการทำงาน ซึ่งคุณสมบัติคราวๆของ module ชิ้นนี้มีดังนี้

  1. ใช้บัส SPI เป็น interface ในการเชื่อมต่อกับโมดูล
  2. รองรับการใช้งาน TCP/IP protocal, IPv4, UDP, TCP, DHCP, ICMP, FTP และ HTTP
  3. ใช้แรงดันไฟเลี้ยง 3.3v
  4. ความถี่ของสัญญาณ clock ที่ป้อนให้กับ Ethernet โมดูล 25MHz

สำหรับคนที่สนใจรายละเอียดทั้งหมดสามารถดูได้ที่ ลิงค์

            สำหรับการนำ Enthernet โมดูล ENC28J60 มาใช้งานร่วมกับบอร์ด STM32F3Discovery นั้นเราได้ทำการดัดแปลง Library มากจาก arduino_uip ซึ่งเป็น Library ที่ใช้งานกับบอร์ด Arduino สามารถดาวน์โหลด arduino_uip Library ที่นี่ 
    เราได้ทำการปรับแก้ไขโค้ดที่อยู่ภายในไฟล์ utility/Enc28J60Network.cpp จากเดิมที่คำสั่งสำหรับการทำงานต่างๆ จะเป็นของบอร์ด Arduino ก็ได้ทำการเปลี่ยนให้เป็นการทำงานของบอร์ด STM32F3Discovery แทน เช่นตัวอย่างดังด้านล่าง
    โค้ดสำหรับ Arduino
    void Enc28J60Network::writeByte(uint16_t addr, uint8_t data)
    {
      writeRegPair(EWRPTL, addr);
    
      CSACTIVE;
      // issue write command
      SPDR = ENC28J60_WRITE_BUF_MEM;
      waitspi();
      // write data
      SPDR = data;
      waitspi();
      CSPASSIVE;
    }
    
    โค้ดสำหรับ STM32F3
void Enc28J60Network::writeByte(uint16_t addr, uint8_t data) {
    writeRegPair(EWRPTL, addr);

    HAL_GPIO_WritePin(_cs,_cs_num,GPIO_PIN_RESET); //_cs = 0;
    uint8_t temp = (uint8_t)ENC28J60_WRITE_BUF_MEM;
    // issue write command
    HAL_SPI_Transmit(_spi,&temp,sizeof(temp),1000); //_spi.write(ENC28J60_WRITE_BUF_MEM);

    // write data
    HAL_SPI_Transmit(_spi,&data,sizeof(data),1000); //_spi.write(data);
    HAL_GPIO_WritePin(_cs,_cs_num,GPIO_PIN_SET); //_cs = 1;
}
    จากตัวอย่าง จะเห็นได้ว่าโค้ดที่ทำการเปลี่ยนส่วนใหญ่ จะเป็นโค้ดในส่วนการทำงานของ SPI ซึ่งเราจะต้องเปลี่ยนส่วนนี้ทั้งหมดในไฟล์ utility/Enc28J60Network.cpp จากเดิมที่ใช้งานสำหรับบอร์ด Arduino ให้มาเป็นการใช้งาน SPI ของบอร์ด STM32F3 แทน สำหรับ Library ที่ได้ทำการเปลี่ยนแปลงเพื่อให้งานกับบอร์ด STM32F3 สามารถดาวน์โหลดได้ ที่นี่
    สำหรับตัวอย่างการใช้งาน Library กับบอร์ด STM32F3Discovery สามารถอ่านได้จากบทความ "ทดลองอ่านค่าจาก ADC และส่งค่าผ่าน UDP Protocol" อ่านบทความ 

ไม่มีความคิดเห็น:

แสดงความคิดเห็น