华芯微特开发论坛

 找回密码
 立即注册
搜索
热搜: SWM341 资料
查看: 878|回复: 0

SWM320 和 SWM34S 的 micropython 移植。。

[复制链接]

14

主题

61

帖子

789

积分

超级版主

Rank: 8Rank: 8

积分
789
发表于 2024-1-8 17:47:34 | 显示全部楼层 |阅读模式
本帖最后由 XIVN1987 于 2024-1-8 17:51 编辑

源码:https://gitee.com/synwit-co-ltd/micropython

User Guide 中有每个外设的使用示例代码。。

读写 SPI FLash 示例代码:
  1. import machine, time
  2. from machine import Pin, SPI
  3. from array import array

  4. spi = machine.SPI(1, 1000000, mosi='PC4', miso='PC5', sck='PC3')
  5. spi_ss = machine.Pin('PC6', Pin.OUT)
  6. spi_ss.high()

  7. GD25Q21_CMD_READ_CHIPID   = 0x90
  8. GD25Q21_CMD_READ_DATA     = 0x03
  9. GD25Q21_CMD_WRITE_PAGE    = 0x02
  10. GD25Q21_CMD_ERASE_SECTOR  = 0x20
  11. GD25Q21_CMD_WRITE_ENABLE  = 0x06
  12. GD25Q21_CMD_WRITE_DISABLE = 0x04

  13. def flash_identify():
  14.     spi_ss.low()
  15.     spi.write(array('B', [GD25Q21_CMD_READ_CHIPID,  0x00, 0x00, 0x00]))
  16.     memview = spi.read(2)
  17.     spi_ss.high()

  18.     return array('B', memview)

  19. def flash_erase(addr):
  20.     spi_ss.low()
  21.     spi.write(array('B', [GD25Q21_CMD_WRITE_ENABLE]))
  22.     spi_ss.high()

  23.     spi_ss.low()
  24.     spi.write(array('B', [GD25Q21_CMD_ERASE_SECTOR, (addr >> 16) & 0xFF, (addr >>  8) & 0xFF, (addr >>  0) & 0xFF]))
  25.     spi_ss.high()

  26. def flash_write(addr, buf):
  27.     spi_ss.low()
  28.     spi.write(array('B', [GD25Q21_CMD_WRITE_ENABLE]))
  29.     spi_ss.high()

  30.     spi_ss.low()
  31.     spi.write(array('B', [GD25Q21_CMD_WRITE_PAGE,   (addr >> 16) & 0xFF, (addr >>  8) & 0xFF, (addr >>  0) & 0xFF]))
  32.     spi.write(buf)
  33.     spi_ss.high()

  34. def flash_read(addr, cnt):
  35.     spi_ss.low()
  36.     spi.write(array('B', [GD25Q21_CMD_READ_DATA,    (addr >> 16) & 0xFF, (addr >>  8) & 0xFF, (addr >>  0) & 0xFF]))
  37.     memview = spi.read(cnt)
  38.     spi_ss.high()

  39.     return array('B', memview)

  40. flash_identify()
  41. flash_erase(0x1000)
  42. time.sleep(2)
  43. flash_read(0x1000, 32)
  44. flash_write(0x1000, array('B', [i for i in range(32)]))
  45. time.sleep(1)
  46. flash_read(0x1000, 32)
复制代码





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|华芯微特开发论坛

GMT+8, 2025-1-10 06:22 , Processed in 0.031452 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表