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程序你试试

多谢!多谢!
页: 1 2 3 4 5 [6]
查看完整版本: 用RDA5807做个简单的收音机,求助寄存器设置问题