kkstun
发表于 2018-10-9 23:15:28
免mcu测试。。
w412321
发表于 2018-10-9 23:33:09
是的,我的也是5807FP的片子。
正在看11F02的PDF文件,
感觉学编程比我做电路画板子还难,
英文的编程方法老是感觉怪怪的,头疼中:Q
独来独往66
发表于 2024-2-23 15:27:57
w412321 发表于 2017-9-22 19:36
请 yangcheng84坛友指教。
发上来我写的小程序,见笑了。
我刚刚测试了一下您这个程序
有嗒嗒嗒嗒的声音,在下面这个位置增加一个死循环之后,杂音消失
……
lcall I2C_WRITE ;调用I2C写入程序
SETB SCL
SETBSDA
L1: SJMP L1 在这里增加一行
;---------------------------------------------------------------------------------------
……
joyb
发表于 2024-9-19 10:44:47
RDA5807HP 编程指南V2.5
一. 控制接口:
RDA5807HP提供了I2C作为控制接口,控制模式如下描述:
(一)、I2C控制接口:
I2C接口与I2C-Bus Specification 2.1兼容,包含2个信号:SCLK和SDIO。I2C接口是由START,命令字节,数据字节,及每个字节后的ACK或NACK比特,和STOP组成,命令字节包括一个7比特的chip地址(0010000b)和一个读写r/w命令比特。ACK(或NACK)由接收器发出。
在该接口下,有两种读写方式,分别是连续读写方式和带寄存器地址的标准I2C方式,两种方式通过I2C的器件地址来区分实现,读写方式和器件地址详细描述如下:
1、连续读写方式:在该模式下,寄存器的地址是不可见的,即有一个固定的起始寄存器地址(写操作时为02H,读操作时为0AH),并有一个内部递增计数器,I2C器件地址为0010000B,加上读写标志,即I2C器件地址为0x20(写操作)和0x21(读操作)
(1)、写操作:写操作默认起始寄存器为02H,即所有写操作都是默认从02H开始,即使只写如03H或者05H,都必须从02H写起,MCU写入寄存器的顺序如下:02H的高字节,02H的低字节,03H的高字节,……,直到结束。芯片在MCU写入每个字节后都会返回一个ACK。MCU会给出STOP来结束操作。
(2)、读操作:读操作默认起始寄存器为0AH,即所有写操作都是默认从0AH开始。在对芯片进行读操作时,MCU给出命令字节后,RDA5807HP会送出数据字节,顺序如下:0AH高字节,0AH低字节,0BH高字节,……,直到芯片接收到从MCU发出的NACK, MCU送出STOP,读操作结束。除了最后一个字节,MCU在读到每个字节后都要给出ACK,在读到最后一个字节后,MCU给出NACK,使芯片把总线交给MCU,然后MCU发出STOP,结束整个操作。
(3)、连续读写方式时序图:
图 1 写数据时序
图 2 读数据时序
I2C Timing Characteristics Parameter Symbol Test Condition Min Typ Max Unit
SCLK Frequency fscl 0 - 400 KHz
SCLK High Time thigh 0.6 - - us
SCLK Low Time tlow 1.3 - - us
Setup Time for START Condition tsu:sta 0.6 - - us
Hold Time for START Condition thd:sta 0.6 - - us
Setup Time for STOP condition tsu:sto 0.6 - - us
SDIO Input to SCLK ↑ Setup tsu:dat 100 - - ns
SDIO Input to SCLK ↓ Hold thd:dat 0 - 900 ns
STOP to START Time tbuf 1.3 - - us
SDIO Output Fall Time tf:out 20+0.1Cb - 250 ns
SDIO Input, SCLK Rise/Fall Time tr:in tf:in 20+0.1Cb - 300 ns
Input Spike Suppression tsp - - 50 ns
SCLK, SDIO Capacitive Loading Cb - - 50 pF
2、标准 I2C 读写方式:
由于连续读写方式比较难以理解和实现,下文介绍标准读写方式。
该模式是与标准 I2C 读写方式一致,即带寄存器地址的方式,I2C 器件地址为 0010001B,加上读写标志位,即为 0x22(写操作)和 0x23(读操作),读写方式的格式如下:
图 3 标准 i2c 写格式 图 4 标准 i2c 读格式
写时序:主机发送起始信号,发送从机(RDA5807M)地址加上W位,等待从机响应。从机响应成功后,发送待写入的寄存器地址,等待从机响应。从机响应成功后,发送待写入数据的高八位,等待从机响应。从机响应成功后,发送待写入的数据的低八位,此时从机会响应或不响应。最后,主机发送停止信号。
读时序:主机发送起始信号,发送从机(RDA5807M)地址加上W位,等待从机响应。从机响应成功后,发送待读取的寄存器地址,等待从机响应或不响应。主机发送起始信号,发送从机(RDA5807M)地址加上R位,等待从机响应。从机响应成功后,接收寄存器高八位,主机向从机响应,接收寄存器低八位,主机不响应。最后,主机发送停止信号。
3、另外,RDA5807HP 还有另外一组未使用的 I2C 器件地址 1100000B,加上读写标志,即为 0xC0 和 0xC1,即 RDA5807HP 总共有三组 I2C 器件地址,分别是 0x20 和 0x21,0x22 和 0x23,0xC0 和 0xC1,在硬件设计时,如果RDA5807HP 与其他 I2C 器件共用 I2C 总线时,请注意避免 I2C 器件地址冲突的问题。
xiaocake1
发表于 2025-4-15 15:47:21
RDA5807N系列编程指南V3.5,中文版。
RDA5807N系列包括 RDA5807NP、RDA5807FP、RDA5807NN、RDA5807M
21cnsound
发表于 2025-4-16 23:05:13
独来独往66 发表于 2024-2-23 15:27
我刚刚测试了一下您这个程序
有嗒嗒嗒嗒的声音,在下面这个位置增加一个死循环之后,杂音消失
正解。
相当于没有C51中的while(1)大循环。
地主斌
发表于 2025-4-17 10:39:48
21cnsound 发表于 2025-4-16 23:05
正解。
相当于没有C51中的while(1)大循环。
给个51的C程序你试试
21cnsound
发表于 2025-4-17 19:56:40
地主斌 发表于 2025-4-17 10:39
给个51的C程序你试试
多谢!多谢!