求SC16IS762中关于通过SPI去控制UART读写的例子--急!!!

mly0904 2008-12-24 09:02:04
各位大哥,我现在要写关于SC16IS762 中通过SPI去控制UART读写的代码,我看过这颗IC的SPEC,上面有写怎样通过SPI去控制UART内部寄存器的格式,可是上面的UART内部寄存器很多,我不知道具体应该怎么去设置UART,例如初始化UART,还有uart读写,我写了一些代码初始化uart,可是好像不行,不知道哪里有问题,请各位高手帮我看看,还有不知有人用过这颗ic吗?有例子给我参考吗?我在这先谢谢啦!
我初始化uart的代码如下:
// Ensure that UART interrupts are turned off.
SPI1_Write(LCR,channel,0xBF);//使能EFR寄存器
SPI1_Write(EFR,channel,0x00);//禁能
SPI1_Write(IER,channel,0x00);
SPI1_Write(LCR,channel,0x00);


// Set the Baud Rate (Divisor low = UART_BAUD_38400).
SPI1_Write(LCR,channel,0x80);
SPI1_Write(DLL,channel,UART_BAUD_38400);
SPI1_Write(DLH,channel,0x00);
SPI1_Write(LCR,channel,0x00);

//Setting UART properties to 8N1
SPI1_Write(LCR,channel,0x03);//8 bits, 1 stop, no parity. Also LCR DLAB bit = 0.

SPI1_Write(FCR,channel,0x01);// Enable the FIFO.
SPI1_Write(FCR,channel,0x07);// Clear Rx,Tx FIFOs.

SPI1_Write(IER,channel,0x00);// Don't enable UART interrupts

SPI1_Write(MCR,channel,0x00);// UART is in normal mode.
...全文
329 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
mly0904 2009-01-13
  • 打赏
  • 举报
回复
那应该怎么设置阿?我看cpu的寄存器里面只有SPH,SPO这两位是关于clk的阿?
还有你的code不知道找到没有啊?发给我看看吧
邮箱 Ma.Li-Yan@iac.com.tw
shuiyan 2009-01-11
  • 打赏
  • 举报
回复
spi的clk有上升沿有效或下降沿有效的配置。
你这个ic是将上升沿作为锁存数据的开始依据,就是每个上升沿从数据线上获取信号。
mly0904 2009-01-08
  • 打赏
  • 举报
回复
我有查过,模式0就是 the SCK signal is 0 when idle and transitions to 1 whenever doing a data transfer; and the receiver latches the data on the first transition of SCK from idle state.
简单的说就是 clock is positive polarity and the data is latched on the positive edge of SCK
你能理解吗?我不知道SPH,SPO这两位是不是都应该是0阿?
我想看你的CODE是因为我想看看你得SPI init 和SPI write ,SPI read 是怎么写的,我总觉得自己有个什么地方没设置好,以至于老是读不到数据,你可以给我这三部分看看吗?非常感谢!
还有你用SPI与WIFI模块通讯这一份功能应该是实现了吧?

shuiyan 2009-01-07
  • 打赏
  • 举报
回复
今天一直忙,现在才有时间看。code我明天找一下,将SPI init部分给你应该没问题。
IC说的 模式0是什么意思?对应的时序(波形)图有什么特殊吗?

FRAME配成特殊功能脚就是作为#CS了。
mly0904 2009-01-07
  • 打赏
  • 举报
回复
我用的是300,你把你用SPI与WIFI模块通讯的code给我看看吧 邮箱:Ma.Li-Yan@iac.com.tw,还有个问题,就是ic上说要用SPI模式0,那我在设置cpu sscr1寄存器的 SPH,SPO这两位是不是都应该是0阿?
还有 需要将SPI_FRAME配为对应的片选脚(#CS,使能IC芯片),这句是什么意思啊?怎么配置阿?
不是只要将SPI_CLK/SPI_FRAME/SPI_MOSI/SPI_MISO设置为特殊功能脚就可以了吗?
shuiyan 2009-01-05
  • 打赏
  • 举报
回复
用的Marvell的哪颗?270?300/310?
我们在270/300/310上都用SPI与WIFI模块通讯,也用总线与串口扩展芯片通讯(NXP,也是SC开头的,1扩4)。不过没用过SPI配串口扩展的。


IC仅有从模式,那么CPU就是设为Master Mode(主模式)。需要配置SPI_CLK频率和极性(上升沿读下降沿写,或者上写下读),需要将SPI_FRAME配为对应的片选脚(#CS,使能IC芯片),而SPI_CLK/SPI_FRAME/SPI_MOSI/SPI_MISO当然肯定要是特殊功能脚,而不能是GPIO。

先用示波器测试SPI的波形是否正确。
再看IC有了SPI输入后,是否有SPI数据输出(到CPU)。
mly0904 2009-01-05
  • 打赏
  • 举报
回复
怎么都没人啊?各位帮帮忙啊
mly0904 2008-12-25
  • 打赏
  • 举报
回复
我cpu这边spi写的时候
while(v_pSSP3Regs->sssr & 0x10);

v_pSSP3Regs->ssdr =writedata;//写命令

while(v_pSSP3Regs->sssr & 0x10);
v_pSSP3Regs->ssdr =data;//写数据到寄存器

while(v_pSSP3Regs->sssr & 0x10);
读的时候
while(v_pSSP4Regs->sssr & 0x10);

v_pSSP4Regs->ssdr =writedata;//写命令

while(v_pSSP4Regs->sssr & 0x10);

readdata=v_pSSP4Regs->ssdr;//从寄存器里读数据
不知道这样写对不对阿
因为我现在先对一个寄存器写一个值,然后去读老是0,不对阿,帮我看看吧,这样写哪里有错阿?
mly0904 2008-12-25
  • 打赏
  • 举报
回复
我的是Marvell的ARM,是啊,我现在就是SPI这边读寄存器的值读不出来,还有CPU这边设置SPI的时候,到底是要设置成Master Mode 还是slave mode阿,还有那颗ic资料上说spi
gooogleman 2008-12-24
  • 打赏
  • 举报
回复
这个应该是SPI转串口的吧。

建议你现在ADS下测试成功,然后再放到PB下。

——这个问题,大家只能提示,哪能帮你搞定呢?据我所知,这个东西并不难的。
wohuazhen 2008-12-24
  • 打赏
  • 举报
回复
我没做过。不知道。
但有个建议,你是否可以把你写到UART寄存器中的设定值读出来。读出来看看和你想要设置的是否一致?
如果一致,再考虑你的设定是否有误?UART的设置,你可以参考你用的处理器上的UART的设置方式,我想都是差不多的吧。
如果不一致,那就要检查你的spi通信是否正确?
gooogleman 2008-12-24
  • 打赏
  • 举报
回复
是三星的ARM吗?如果是2440就可以参考提供的测试程序吧,记得有SPI的,先不要搞那么快先,先弄个SPI的例子看看一步一步来、、

我用的是并口转串口的,我看寄存器设置和你差不多。
mly0904 2008-12-24
  • 打赏
  • 举报
回复
我没有想让别人帮我搞定,我现在就是搞不出来想来要点提示。现在都有点混乱拉,我看http://www.21ic.com/news/html/70/show30941.htm
上讲到SPI要设置成从模式,可是我是在CPU端设置SPI阿,这样设置SPI的时候也要设置成从模式吗?
唉,现在都不知道哪里有问题啦!改的我有点头痛拉,我就是想看有没有人用过这颗IC,有什么地方要注意的阿,参考阿!
我都搞了两天啦!

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧