fix: libfota2的URL应该只合成一次
[LuatOS.git] / demo / spi / main.lua
blobb1d99d3fc49cb1aafffd1abaab3bb3291f001055
2 -- LuaTools需要PROJECT和VERSION这两个信息
3 PROJECT = "w25q_spi_demo"
4 VERSION = "1.0.1"
6 sys = require("sys")
8 --spi编号,请按实际情况修改!
9 local spiId = 0
10 --cs脚,请按需修改!
11 local cs = 17
12 local cspin = gpio.setup(cs, 1)
14 --收发数据
15 local function sendRecv(data,len)
16 local r = ""
17 cspin(0)
18 if data then spi.send(spiId,data) end
19 if len then r = spi.recv(spiId,len) end
20 cspin(1)
21 return r
22 end
25 sys.taskInit(function()
27 local result = spi.setup(
28 spiId,--串口id
29 nil,
30 0,--CPHA
31 0,--CPOL
32 8,--数据宽度
33 100000--,--频率
34 -- spi.MSB,--高低位顺序 可选,默认高位在前
35 -- spi.master,--主模式 可选,默认主
36 -- spi.full--全双工 可选,默认全双工
38 print("open",result)
39 if result ~= 0 then--返回值为0,表示打开成功
40 print("spi open error",result)
41 return
42 end
44 --检查芯片型号
45 local chip = sendRecv(string.char(0x9f),3)
46 if chip == string.char(0xef,0x40,0x16) then
47 log.info("spi", "chip id read ok 0xef,0x40,0x16")
48 else
49 log.info("spi", "chip id read error")
50 for i=1,#chip do
51 print(chip:byte(i))
52 end
53 return
54 end
56 local data = "test data 123456"
58 --enable write
59 sendRecv(string.char(0x06))
61 --写页数据到地址0x000001
62 sendRecv(string.char(0x02,0x00,0x00,0x01)..data)
63 log.info("spi","write",data)
65 sys.wait(500)--等写入操作完成
67 --读数据
68 local r = sendRecv(string.char(0x03,0x00,0x00,0x01),data:len())
69 log.info("spi","read",r)
71 --disable write
72 sendRecv(string.char(0x04))
74 spi.close(spiId)
75 end)
77 -- 结尾总是这一句哦
78 sys.run()