spi.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. '''
  2. SPI test for the CC3200 based boards.
  3. '''
  4. from machine import SPI
  5. import os
  6. mch = os.uname().machine
  7. if 'LaunchPad' in mch:
  8. spi_pins = ('GP14', 'GP16', 'GP30')
  9. elif 'WiPy' in mch:
  10. spi_pins = ('GP14', 'GP16', 'GP30')
  11. else:
  12. raise Exception('Board not supported!')
  13. spi = SPI(0, SPI.MASTER, baudrate=2000000, polarity=0, phase=0, firstbit=SPI.MSB, pins=spi_pins)
  14. print(spi)
  15. spi = SPI(baudrate=5000000)
  16. print(spi)
  17. spi = SPI(0, SPI.MASTER, baudrate=200000, bits=16, polarity=0, phase=0)
  18. print(spi)
  19. spi = SPI(0, SPI.MASTER, baudrate=10000000, polarity=0, phase=1)
  20. print(spi)
  21. spi = SPI(0, SPI.MASTER, baudrate=5000000, bits=32, polarity=1, phase=0)
  22. print(spi)
  23. spi = SPI(0, SPI.MASTER, baudrate=10000000, polarity=1, phase=1)
  24. print(spi)
  25. spi.init(baudrate=20000000, polarity=0, phase=0)
  26. print(spi)
  27. spi=SPI()
  28. print(spi)
  29. SPI(mode=SPI.MASTER)
  30. SPI(mode=SPI.MASTER, pins=spi_pins)
  31. SPI(id=0, mode=SPI.MASTER, polarity=0, phase=0, pins=('GP14', 'GP16', 'GP15'))
  32. SPI(0, SPI.MASTER, polarity=0, phase=0, pins=('GP31', 'GP16', 'GP15'))
  33. spi = SPI(0, SPI.MASTER, baudrate=10000000, polarity=0, phase=0, pins=spi_pins)
  34. print(spi.write('123456') == 6)
  35. buffer_r = bytearray(10)
  36. print(spi.readinto(buffer_r) == 10)
  37. print(spi.readinto(buffer_r, write=0x55) == 10)
  38. read = spi.read(10)
  39. print(len(read) == 10)
  40. read = spi.read(10, write=0xFF)
  41. print(len(read) == 10)
  42. buffer_w = bytearray([1, 2, 3, 4, 5, 6, 7, 8, 9, 0])
  43. print(spi.write_readinto(buffer_w, buffer_r) == 10)
  44. print(buffer_w == buffer_r)
  45. # test all polaritiy and phase combinations
  46. spi.init(polarity=1, phase=0, pins=None)
  47. buffer_r = bytearray(10)
  48. spi.write_readinto(buffer_w, buffer_r)
  49. print(buffer_w == buffer_r)
  50. spi.init(polarity=1, phase=1, pins=None)
  51. buffer_r = bytearray(10)
  52. spi.write_readinto(buffer_w, buffer_r)
  53. print(buffer_w == buffer_r)
  54. spi.init(polarity=0, phase=1, pins=None)
  55. buffer_r = bytearray(10)
  56. spi.write_readinto(buffer_w, buffer_r)
  57. print(buffer_w == buffer_r)
  58. # test 16 and 32 bit transfers
  59. buffer_w = bytearray([1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2])
  60. buffer_r = bytearray(12)
  61. spi.init(SPI.MASTER, baudrate=10000000, bits=16, polarity=0, phase=0, pins=None)
  62. print(spi.write_readinto(buffer_w, buffer_r) == 12)
  63. print(buffer_w == buffer_r)
  64. buffer_r = bytearray(12)
  65. spi.init(SPI.MASTER, baudrate=10000000, bits=32, polarity=0, phase=0, pins=None)
  66. print(spi.write_readinto(buffer_w, buffer_r) == 12)
  67. print(buffer_w == buffer_r)
  68. # check for memory leaks...
  69. for i in range (0, 1000):
  70. spi = SPI(0, SPI.MASTER, baudrate=1000000)
  71. # test deinit
  72. spi = SPI(0, SPI.MASTER, baudrate=1000000)
  73. spi.deinit()
  74. print(spi)
  75. spi = SPI(0, SPI.MASTER, baudrate=1000000)
  76. # next ones must fail
  77. try:
  78. spi = SPI(0, 10, baudrate=10000000, polarity=0, phase=0)
  79. except:
  80. print("Exception")
  81. try:
  82. spi = SPI(0, mode=SPI.MASTER, baudrate=10000000, polarity=1, phase=2)
  83. except:
  84. print("Exception")
  85. try:
  86. spi = SPI(1, mode=SPI.MASTER, baudrate=10000000, polarity=1, phase=1)
  87. except:
  88. print("Exception")
  89. try:
  90. spi = SPI(0, mode=SPI.MASTER, baudrate=2000000, polarity=2, phase=0)
  91. except:
  92. print("Exception")
  93. try:
  94. spi = SPI(0, mode=SPI.MASTER, baudrate=2000000, polarity=2, phase=0, firstbit=2)
  95. except:
  96. print("Exception")
  97. try:
  98. spi = SPI(0, mode=SPI.MASTER, baudrate=2000000, polarity=2, phase=0, pins=('GP1', 'GP2'))
  99. except:
  100. print("Exception")
  101. try:
  102. spi = SPI(0, mode=SPI.MASTER, baudrate=2000000, polarity=0, phase=0, bits=9)
  103. except:
  104. print("Exception")
  105. spi.deinit()
  106. try:
  107. spi.read(15)
  108. except Exception:
  109. print("Exception")
  110. try:
  111. spi.spi.readinto(buffer_r)
  112. except Exception:
  113. print("Exception")
  114. try:
  115. spi.spi.write('abc')
  116. except Exception:
  117. print("Exception")
  118. try:
  119. spi.write_readinto(buffer_w, buffer_r)
  120. except Exception:
  121. print("Exception")
  122. # reinitialization must work
  123. spi.init(baudrate=500000)
  124. print(spi)