亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? gx_cat1025.c

?? nios ii sopc關(guān)于ISP1362和DM9000A的工程
?? C
字號(hào):
#include <fcntl.h>
#define  __GLOBAL_DEF__

#include "sys/alt_dev.h"
#include "sys/alt_irq.h"
#include "sys/ioctl.h"
#include "sys/alt_errno.h"

#include "oc_i2c_master.h"

#define  I2C_SPEED    (400000u)  // 400kbps


int gx_cat1025_read(alt_fd* fd, char* ptr, int len)
{
  int count;
  
  gx_cat1025_dev* dev = (gx_cat1025_dev*) fd->dev;

  /* The parameters are valid */
  if(len <= 0 || fd == NULL || ptr == NULL)
  {
  	return -1;
  }

  /* The number of data could not be more than the capactity of CAT1025 */
  if(len > dev->capacity)
  {
  	  len = dev->capacity;
  }
  /*
   * When running in a multi threaded environment, obtain the "read_lock"
   * semaphore. This ensures that reading from the device is thread-safe.
   */

  ALT_SEM_PEND (dev->read_lock, 0);
/******** Implement Selective Read or Sequential Read timing *************/
  /* Send Slave address with start signal */
  I2C_SEND_BYTE_WITH_START(dev->base, dev->slave_addr);
  /* Send Byte address */
  I2C_SEND_BYTE(dev->base, dev->byte_addr);
  dev->byte_addr = 0;
  /* Send Slave address with start signal plus Read Command*/
  I2C_SEND_BYTE_WITH_START(dev->base, dev->slave_addr|0x01);
  /* if the length of data equals to 1 carry out byte read operation */
  if(1 == len)
  {
  	  *ptr = I2C_RECV_BYTE_WITH_STOP(dev->base);
  }
  else{
      for(count=0; count<len-1; count++)
      {
         ptr[count] = I2C_RECV_BYTE_WITH_ACK(dev->base);
      }
  }    
  ptr[count] = I2C_RECV_BYTE_WITH_STOP(dev->base);
   /*
   * Now that Read operation is complete, release the read
   * semaphore so that other threads can access the device.
   */

  ALT_SEM_POST (dev->read_lock);
  return len;
}


int gx_cat1025_write (alt_fd* fd, const char* ptr, int len)
{
  int block;
  int count;

  gx_cat1025_dev* dev = (gx_cat1025_dev*) fd->dev;
  
  /* The parameters are valid */
  if(len <= 0 || fd == NULL || ptr == NULL)
  {
  	return -1;
  }
  block = !(fd->fd_flags & O_NONBLOCK);
  /* The number of data could not be more than a page */
  if(len > dev->page_size)
  {
  	  len = dev->page_size;
  }
  count = len - 1;
  
  /*
   * When running in a multi threaded environment, obtain the "write_lock"
   * semaphore. This ensures that writing to the device is thread-safe.
   */

  ALT_SEM_PEND (dev->write_lock, 0);
/******** Implement Byte Write or Page Write timing *************/

  /* Send Slave address with start signal */
  I2C_SEND_BYTE_WITH_START(dev->base, dev->slave_addr);
  /* Send Byte address */
  I2C_SEND_BYTE(dev->base, dev->byte_addr);
   dev->byte_addr = 0;
  /* if the length of data equals to 1 carry out byte write operation */
  if(1 == len)
  {
  	  I2C_SEND_BYTE_WITH_STOP(dev->base, *ptr);
  }
  else { /* the length of data is more than 1, carry out page write operation */
      do{
       	   I2C_SEND_BYTE(dev->base, *ptr++);
       	   count--;     
      } while (block && count);
      //Send last byte with stop signal  
    	I2C_SEND_BYTE_WITH_STOP(dev->base, *ptr);
  }
  
   /*
   * Now that Write operation is complete, release the write
   * semaphore so that other threads can access the device.
   */

  ALT_SEM_POST (dev->write_lock);
  if (count)
  {
    ALT_ERRNO = EWOULDBLOCK;
  }
  
  return (len - count);
}


int gx_cat1025_lseek(alt_fd* fd, int ptr, int dir)
{
  int err = -1;
  gx_cat1025_dev* dev = (gx_cat1025_dev*) fd->dev;
  if(ptr > dev->capacity)
  {
     dev->byte_addr = ptr;
     err = 1;
  }
  return err;
  
}

void gx_cat1025_init(int base, gx_cat1025_dev* dev)
{
  
  alt_u32 prescale;
	// Calculate the prescale value
	prescale = dev->cpu_freq/((I2C_SPEED<<2) + I2C_SPEED);
  // Setup prescaler for the freq of SCL with sysclk of ALT_CPU_FREQ
  IOWR_OC_I2C_PRERLO(base, prescale & 0xff);
  IOWR_OC_I2C_PRERHI(base,(prescale & 0xff00)>>8);
  // Enable core and  disable interrupt
  IOWR_OC_I2C_CTR(base, 0x80);
  /* 
   * Initialise the read and write semaphores used to protect
   * access to the device when running in a multi-threaded environment.
   */
  ALT_SEM_CREATE (&dev->read_lock, 1);  
  ALT_SEM_CREATE (&dev->write_lock, 1);
  // register drivers into HAL
  alt_dev_reg(&dev->dev);
   
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区精品| 日韩美一区二区三区| 日本不卡1234视频| 国产精品嫩草影院av蜜臀| 欧美精品在线观看播放| jvid福利写真一区二区三区| 日本在线播放一区二区三区| 亚洲日穴在线视频| 国产色产综合产在线视频| 欧美裸体一区二区三区| 一本高清dvd不卡在线观看 | 一区二区三区资源| 26uuu国产一区二区三区| 欧美日韩一区高清| 色综合久久88色综合天天| 极品少妇xxxx偷拍精品少妇| 亚洲h精品动漫在线观看| 亚洲欧美在线视频观看| 国产日韩欧美一区二区三区综合 | 欧美激情资源网| 日韩欧美中文字幕制服| 欧美色综合网站| 91麻豆国产香蕉久久精品| 国产高清久久久| 黑人精品欧美一区二区蜜桃| 日本少妇一区二区| 日韩中文欧美在线| 亚洲国产精品嫩草影院| 一区二区成人在线视频| 亚洲欧美综合网| 综合亚洲深深色噜噜狠狠网站| 久久综合九色综合久久久精品综合| 在线成人小视频| 制服丝袜日韩国产| 欧美巨大另类极品videosbest| 在线观看亚洲精品| 色欧美乱欧美15图片| 91麻豆国产在线观看| 91丝袜美腿高跟国产极品老师 | 国产精品盗摄一区二区三区| 国产亚洲精品资源在线26u| 欧美精品一区二区三区很污很色的 | 久久精品一区八戒影视| 久久久久久久久久久电影| 亚洲精品一区二区三区99| 亚洲精品一区二区三区99| 欧美精品一区二区在线播放| 精品对白一区国产伦| 久久综合色鬼综合色| 久久久美女艺术照精彩视频福利播放| 精品成人佐山爱一区二区| 久久午夜羞羞影院免费观看| 午夜国产精品一区| 日本欧美一区二区| 国内精品在线播放| 国产激情91久久精品导航| 成人动漫av在线| 色噜噜狠狠成人中文综合| 欧美日韩一本到| 日韩天堂在线观看| 精品粉嫩aⅴ一区二区三区四区| 久久精品亚洲乱码伦伦中文| 国产精品毛片高清在线完整版 | 亚洲卡通动漫在线| 午夜久久电影网| 精品无码三级在线观看视频| 国产乱色国产精品免费视频| 9人人澡人人爽人人精品| 在线观看视频91| 日韩视频一区二区三区| 亚洲国产精品成人久久综合一区 | 亚洲一区二区三区视频在线 | 成人美女视频在线观看18| 91成人免费电影| 91精品国产91综合久久蜜臀| 久久久综合激的五月天| 亚洲欧美aⅴ...| 麻豆成人久久精品二区三区小说| 国产成人在线影院| 欧美日韩国产一区| 久久久精品黄色| 亚洲韩国一区二区三区| 国产一区二区免费在线| 色诱亚洲精品久久久久久| 日韩午夜在线观看| 亚洲欧美日韩国产综合| 精品污污网站免费看| 日韩精品中文字幕在线一区| 中文字幕一区二区视频| 男女性色大片免费观看一区二区 | 亚洲精品国产品国语在线app| 日本色综合中文字幕| 95精品视频在线| 欧美电视剧免费全集观看| 亚洲欧美国产77777| 激情综合色综合久久| 一本一道综合狠狠老| 欧美精品一区二区三| 亚洲国产精品久久久久婷婷884| 国产成人综合精品三级| 欧美日韩国产精品自在自线| 国产清纯在线一区二区www| 视频一区二区不卡| 91麻豆国产香蕉久久精品| 久久久久久**毛片大全| 日韩黄色免费电影| 色综合激情五月| 欧美激情一区二区在线| 蜜桃视频免费观看一区| 欧美丝袜丝交足nylons| 国产精品美女久久久久高潮| 激情伊人五月天久久综合| 欧美男人的天堂一二区| 亚洲免费伊人电影| 成人高清视频在线| 久久精品无码一区二区三区| 日本最新不卡在线| 色综合久久久久网| 成人免费在线观看入口| 粉嫩av亚洲一区二区图片| 精品免费国产一区二区三区四区| 亚洲成人福利片| 色偷偷久久一区二区三区| 国产精品网曝门| 国产黄色精品网站| 久久久久久麻豆| 韩国av一区二区| 欧美大片在线观看| 日韩激情视频在线观看| 欧美精品aⅴ在线视频| 亚洲一区二区视频在线| 色婷婷亚洲综合| 亚洲黄色片在线观看| 色综合久久久久久久久久久| 亚洲蜜臀av乱码久久精品蜜桃| 99热99精品| 亚洲精品免费视频| 欧洲视频一区二区| 亚洲成人免费在线观看| 欧美午夜精品理论片a级按摩| 亚洲一二三四区| 欧美在线综合视频| 亚洲资源在线观看| 欧美日韩精品综合在线| 丝袜脚交一区二区| 精品三级在线观看| 国产成人综合亚洲91猫咪| 中文字幕精品—区二区四季| 波多野结衣在线aⅴ中文字幕不卡| 国产精品热久久久久夜色精品三区| 成人免费看片app下载| 亚洲三级小视频| 欧洲国产伦久久久久久久| 日日骚欧美日韩| 精品久久久久久久人人人人传媒| 国产一区二区h| 国产日韩一级二级三级| 91丨porny丨户外露出| 亚洲第一电影网| 日韩欧美电影一二三| 国产福利电影一区二区三区| 欧美韩国日本不卡| 在线精品视频免费播放| 麻豆一区二区三| 国产清纯白嫩初高生在线观看91 | 日韩欧美亚洲国产另类| 国产一区二区免费看| 成人欧美一区二区三区黑人麻豆 | 一二三区精品视频| 91精品欧美综合在线观看最新| 老司机午夜精品99久久| 国产日产欧美一区| 在线观看亚洲a| 久久精品国产99国产精品| 中文字幕一区二区三区视频| 精品视频一区三区九区| 狠狠色丁香久久婷婷综合_中| 中文字幕一区视频| 日韩一区二区电影在线| 99在线精品观看| 蜜桃av一区二区三区电影| 国产精品久久久久7777按摩| 欧美精品18+| aaa亚洲精品| 麻豆国产精品视频| 亚洲日本在线a| 精品第一国产综合精品aⅴ| 在线视频综合导航| 国产成人精品亚洲日本在线桃色| 亚洲国产精品一区二区尤物区| 精品成人一区二区| 欧美色网站导航| 丁香啪啪综合成人亚洲小说| 丝袜亚洲另类欧美| 国产精品久久久久久一区二区三区 | 在线成人午夜影院| aaa欧美色吧激情视频| 久久不见久久见免费视频7| 亚洲精品乱码久久久久久| 精品日韩欧美一区二区|