add iic support for stm32 and pikastd device

This commit is contained in:
lyon1998 2021-10-22 22:28:54 +08:00
parent 830168289e
commit d2c55c1be4
4 changed files with 81 additions and 10 deletions

View File

@ -735,6 +735,16 @@
<FileType>1</FileType> <FileType>1</FileType>
<FilePath>..\pikascript\pikascript-api\STM32-api.c</FilePath> <FilePath>..\pikascript\pikascript-api\STM32-api.c</FilePath>
</File> </File>
<File>
<FileName>PikaStdDevice_IIC-api.c</FileName>
<FileType>1</FileType>
<FilePath>..\pikascript\pikascript-api\PikaStdDevice_IIC-api.c</FilePath>
</File>
<File>
<FileName>STM32_IIC-api.c</FileName>
<FileType>1</FileType>
<FilePath>..\pikascript\pikascript-api\STM32_IIC-api.c</FilePath>
</File>
</Files> </Files>
</Group> </Group>
<Group> <Group>
@ -825,6 +835,16 @@
<FileType>1</FileType> <FileType>1</FileType>
<FilePath>..\pikascript\pikascript-lib\STM32\STM32_UART.c</FilePath> <FilePath>..\pikascript\pikascript-lib\STM32\STM32_UART.c</FilePath>
</File> </File>
<File>
<FileName>STM32_IIC.c</FileName>
<FileType>1</FileType>
<FilePath>..\pikascript\pikascript-lib\STM32\STM32_IIC.c</FilePath>
</File>
<File>
<FileName>PikaStdDevice_IIC.c</FileName>
<FileType>1</FileType>
<FilePath>..\pikascript\pikascript-lib\PikaStdDevice\PikaStdDevice_IIC.c</FilePath>
</File>
</Files> </Files>
</Group> </Group>
<Group> <Group>

View File

@ -1,25 +1,24 @@
import PikaStdLib import PikaStdLib
import PikaMath
import STM32 import STM32
import PikaPiZero import PikaPiZero
time = STM32.Time()
uart = STM32.UART() uart = STM32.UART()
adc = STM32.ADC()
pin = STM32.GPIO()
pwm = STM32.PWM()
uart = STM32.UART() uart = STM32.UART()
rgb = PikaPiZero.RGB() rgb = PikaPiZero.RGB()
mem = PikaStdLib.MemChecker() mem = PikaStdLib.MemChecker()
op = PikaMath.Operator()
uart.init() uart.init()
uart.setId(1) uart.setId(1)
uart.setBaudRate(115200) uart.setBaudRate(115200)
uart.enable() uart.enable()
rgb.init() iic = STM32.IIC()
rgb.enable() iic.init()
iic.setPinSDA('PB0')
iic.setPinSCL('PB1')
iic.setDeviceAddr(88)
iic.enable()
print(iic.read(4))
print('hello 2') print('hello 2')
print('mem used max:') print('mem used max:')
@ -28,7 +27,6 @@ mem.max()
i = 0 i = 0
while i < 100: while i < 100:
i = i + 1 i = i + 1
rgb.flow()
print(i) print(i)
print('Hello PikaScript!') print('Hello PikaScript!')

View File

@ -114,6 +114,41 @@ class UART(TinyObj):
pass pass
class IIC(TinyObj):
def init():
pass
def setPinSCL(pin: str):
pass
def setPinSDA(pin: str):
pass
def setDeviceAddr(addr: int):
pass
def enable():
pass
def write(addr: int, data: str):
pass
def read(addr: int, length: int) -> str:
pass
# need override
def platformEnable():
pass
# need override
def platformWrite(addr: int, data: str):
pass
# need override
def platformRead(addr: int, length: int) -> str:
pass
class PWM(TinyObj): class PWM(TinyObj):
def init(): def init():
pass pass

View File

@ -57,6 +57,7 @@ class UART(PikaStdDevice.UART):
def platformRead(id: int, length: int) -> str: def platformRead(id: int, length: int) -> str:
pass pass
class PWM(PikaStdDevice.PWM): class PWM(PikaStdDevice.PWM):
# override # override
def platformEnable(pin: str, freq: int, duty: float): def platformEnable(pin: str, freq: int, duty: float):
@ -68,4 +69,21 @@ class PWM(PikaStdDevice.PWM):
# override # override
def platformSetDuty(pin: str, duty: float): def platformSetDuty(pin: str, duty: float):
pass pass
class IIC(PikaStdDevice.IIC):
SCL = GPIO()
SDA = GPIO()
# override
def platformEnable():
pass
# override
def platformWrite(addr: int, data: str):
pass
# override
def platformRead(addr: int, length: int) -> str:
pass