OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 15745|回复: 10

STM8S103 SPI 单线双向数据模式 問題

[复制链接]

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2013-8-14
在线时间
0 小时
发表于 2013-8-14 22:10:36 | 显示全部楼层 |阅读模式
各位想請教一下,
STM8的SPI 硬件在 单线双向数据模式 在接收模式是如何使用的,
單線發送就比較簡單, 小弟一直都在用, 
程序如下, 

/* ==================================
             SPI init
================================== */
void SPI_init(void){
    SPI_ICR = 0;
    SPI_CRCPR = 0;
    SPI_CR1 = (1<<7| 1<<6| 0<<5| 0<<4| 1<<3| 1<<2| 1<<1| 1<<0);// 
    SPI_CR2 = (1<<7| 1<<6| 0<<5| 0<<4| 0<<3| 0<<2| 0<<1| 1<<0);//
}

/* ==================================
               SPI Out
================================== */
void SPI_Send(unsigned char DataToSend){
    while(!SPI_SR_TXE);
    SPI_DR = DataToSend;
}

以上簡單設置就可以了, 
但是在接收模式的話, 假如, 
我寫以下其中一句,
SPI_CR2_RXONLY = 1;
SPI_CR2_BDOE = 0;
SPI的SCK腳就會一直工作


假如我在READ的程序, 用SPI RXNE來檢測
程序:
char SPI_Read(){
    unsigned RXBf;
    SPI_CR2_BDOE = 0;
    while(!SPI_SR_RXNE);
    SPI_CR2_BDOE = 1;
    RXBf = SPI_DR;
    return RXBf;
}


void ReadData(){
    for(unsigned j = 0;j<5;j++){
        DataBuf[j] = SPI_Read();
    }
}

程序上理論只有讀5次, 而實際讀了一共是8次, 同時, 關上SPI READ的時間完全找不到對準的方法
希望有高人指教, 這是SPI硬件的問題, 還是我的程序問題, 如何改動
萬分感激

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

39

主题

2028

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2020
金钱
2020
注册时间
2013-5-1
在线时间
87 小时
发表于 2013-8-14 22:22:48 | 显示全部楼层
LZ这个拿什么仿真的?  很给力的样子...
博观而约取,厚积而薄发。
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2013-8-14
在线时间
0 小时
 楼主| 发表于 2013-8-14 22:29:20 | 显示全部楼层
回复【2楼】745021926:
---------------------------------
淘寶找的幾十塊錢的分析器而已
回复 支持 反对

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164897
金钱
164897
注册时间
2010-12-1
在线时间
2100 小时
发表于 2013-8-14 22:49:05 | 显示全部楼层
翻翻数据手册,看数据手册怎么说吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2013-8-14
在线时间
0 小时
 楼主| 发表于 2013-8-14 23:17:49 | 显示全部楼层








回复 支持 反对

使用道具 举报

4

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2013-8-8
在线时间
2 小时
发表于 2013-8-15 16:54:37 | 显示全部楼层
回复【3楼】edgarcyk:
回复【2楼】745021926: --------------------------------- 淘寶找的幾十塊錢的分析器而已
---------------------------------
那岂不是把虚拟逻辑分析仪都淘汰掉了? 不过花600块钱买个那个东西 也不错 能接出来好多引脚
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2013-8-14
在线时间
0 小时
 楼主| 发表于 2013-8-15 16:58:36 | 显示全部楼层
很基本的都做到, 要求也不高完全沒問題
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2013-8-14
在线时间
0 小时
 楼主| 发表于 2013-8-16 01:49:10 | 显示全部楼层
完全正實了,
STM8的 SPI模塊 在單工模式下是沒可能在第9個CLK之前停下來, 
如果要做到的話只能用軟件模擬來實現了, 
即使是用庫也好, 直接寫也是一樣, 要不就到BUSY, 之後強行關上SPI, 
要不就等到10-12個CLK時關上輸出, 之後到第16就會停下來,

真的無話可說了~~~~~~

回复 支持 反对

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164897
金钱
164897
注册时间
2010-12-1
在线时间
2100 小时
发表于 2013-8-16 10:34:11 | 显示全部楼层
回复【8楼】edgarcyk:
---------------------------------
呵呵,谢谢分享。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2013-8-14
在线时间
0 小时
 楼主| 发表于 2013-8-16 16:39:08 | 显示全部楼层
FAE都完全不會幫我解決問題
回复 支持 反对

使用道具 举报

1

主题

23

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
454
金钱
454
注册时间
2017-9-4
在线时间
70 小时
发表于 2020-12-25 18:03:59 | 显示全部楼层
楼主解决了嘛
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-9 11:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表