spi.h
上传用户:wealth48
上传日期:2022-06-24
资源大小:1701k
文件大小:2k
源码类别:

uCOS

开发平台:

C/C++

  1. /***************************************************************************
  2. Copyright (c) 2004-2007 threewater@up-tech.com, All rights reserved.
  3. by threewter 2005.2.26
  4. ***************************************************************************/
  5. /***************************************************************************
  6.     #说明: spi接口驱动程序
  7. ----------------------------------  Bug  --------------------------------------
  8. ----------------------------------  TODO list  --------------------------------------
  9. ----------------------------------修正--------------------------------------
  10. 2005-2-26 创建
  11. ***************************************************************************/
  12. #ifndef __ASM_ARCH_SPI_H__
  13. #define __ASM_ARCH_SPI_H__
  14. #define fSPCON_SMOD Fld(2,5) /* SPI Mode Select */
  15. #define SPCON_SMOD FMsk(fSPCON_SMOD)
  16. #define SPCON_SMOD_POLL FInsrt(0x0, fSPCON_SMOD) /* polling mode */
  17. #define SPCON_SMOD_INT FInsrt(0x1, fSPCON_SMOD) /* interrupt mode */
  18. #define SPCON_SMOD_DMA FInsrt(0x2, fSPCON_SMOD) /* DMA mode */
  19. #define SPCON_ENSCK (1 << 4) /* Enable SCK */
  20. #define SPCON_MSTR (1 << 3) /* Master/Slave select
  21.    0: slave, 1: master */
  22. #define SPCON_CPOL (1 << 2) /* Clock polarity select
  23.    1: active low, 0: active high */
  24. #define SPCON_CPOL_LOW (1 << 2)
  25. #define SPCON_CPOL_HIGH (0 << 2)
  26. #define SPCON_CPHA (1 << 1) /* Clock Phase Select
  27.    0: format A, 1: format B */
  28. #define SPCON_CPHA_FMTA (0 << 1)
  29. #define SPCON_CPHA_FMTB (1 << 1)
  30. #define SPCON_TAGD (1 << 0) /* Tx auto garbage data mode enable
  31. in normal mode, you only want to receive data,
  32. you should tranmit dummy 0xFF data */
  33. #define SPSTA_DCOL (1 << 2) /* Data Collision Error */
  34. #define SPSTA_MULF (1 << 1) /* Multi Master Error */
  35. #define SPSTA_READY (1 << 0) /* data Tx/Rx ready */
  36. #define SPPIN_ENMUL (1 << 2) /* Multi Master Error detect Enable */
  37. #define SPPIN_KEEP (1 << 0) /* Master Out keep */
  38. void SPISend ( unsigned char val, int channel );
  39. unsigned char SPIRecv ( int channel );
  40. void Set_SIO_mode(int channel, int nSPCON, int nSPPRE, int SPPIN,
  41. int *poldnSPCON, int *poldnSPPRE, int *poldSPPIN);
  42. void SPI_initIO(int channel);
  43. __inline static unsigned char SendReadData(unsigned char data, int ch)
  44. {
  45. SPISend(data, ch);
  46. return SPIRecv(ch);
  47. }
  48. #endif