嵌入式开发者社区

标题: TL138_1808_6748-EVM使用GPIO模拟SPI不能是SIMO为低电平 [打印本页]

作者: lmxcyx    时间: 2015-5-23 19:02
标题: TL138_1808_6748-EVM使用GPIO模拟SPI不能是SIMO为低电平
使用下面的例子代码,不能使SIMO和CS为低电平:% B% }) Z& N: Q* |! C1 C
void PSCInit(void)
4 o$ x8 l1 I; n( h9 ]/ n, V( P% N0 R& v{6 K8 x- N, c' p; H
        PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
# s: N+ |" l" o. z}
5 k8 B! I5 Z, r+ k$ k' d  G
$ P% M% F6 S* vvoid GPIOBankPinMuxSet(void)
* u, W  {) p# [3 w% [{) s! e" J2 u  a; |* C2 E
        // DRDY     ------------ GPIO6[14] -- 111
- l4 [  ?4 W/ F3 z        // SPI1_CLK ------------ GPIO2[13] -- 46
  e% l' `& j0 g8 I) d6 X        // SPI1_SOMI------------ GPIO2[11] -- 44, U' `1 f% e* N7 _; Z# o! O
        // SPI1_SIMO------------ GPIO2[10] -- 43
; X8 A" a) O& O4 Z! B/ g3 O        // SPI1_CS2 ------------ GPIO1[0]  -- 17$ z3 i, A  L7 f+ \0 W9 r+ C! j
        // SPI1_CS3 ------------ GPIO1[1]  -- 18
3 r- G7 N1 J$ h$ }* l) W# T- _7 Z# ^+ K3 i
        HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);- z$ p- r) T4 W2 R. _
        HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
7 P/ u4 M7 N4 C5 v- s; Y  s. a. P        HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
4 {3 T; N8 i8 r! S
6 i7 ^; t- F, F9 d& B        //DRDY8 M+ D0 ^$ E' m; F: o* m
        GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT);  // GPIO6[7] DRDY
' b0 U( d/ G. L# B. |* @        // CS2,CS3
$ Z, t( b7 ~2 P2 i' h' Y: z# j4 S        GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT);   // GPIO1[0] CS2, z3 v9 ^. d# C/ Y% n
        GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT);        // GPIO1[1]        CS3
$ J* L8 l8 o0 V% l9 N' p        //SIMO
% F0 ]8 \9 W  j; ^        GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT);   // GPIO2[10] SIMO% j2 x9 O" Y2 L4 r- \" @  C' n
        //SOMI2 R# C" D/ {( O+ _
        GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT);    // GPIO2[11] DOMI" y' m% ~; ~$ C7 ]5 S
        //CLK4 ]+ H& Z7 a3 W! i8 L2 H
        GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT);   // GPIO2[13] CLK
4 Q) [; S; q6 }% o6 ?4 R. C
# ~; B' r& l; u& H4 w        // LDAC
# ~% v6 F: G  K. g        GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW);  // CLK7 |- H1 _8 Y) L+ r( U+ W/ p$ `$ k
        GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN2 v6 ^, B( Z2 A* f
        GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2$ A+ c9 ~  Z5 U
        GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3& ^3 Y4 j. r, v  v
        GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
& S* k3 Z  I: ^; R+ [}
% K+ Z# `- V* z. [4 a
1 a" I9 s( Q9 v+ D- G! Z( w& sint main(void)( q4 o/ i/ w' u! m
{  b7 _3 l3 M" @, v- o/ a3 Y
        // 外设使能' c/ n& r9 {8 P3 ^6 s7 b
        PSCInit();
; {3 L5 t" D+ U& r. y; M4 J9 G& j9 U+ {8 n- `4 [4 K8 k# \
   
+ [, f, r# y$ i  n    // 管脚复用配置
8 [0 b3 J: P% D7 F' E3 I* V) u    GPIOBankPinMuxSet();0 j( B% M' M. O0 P7 N2 R
    for(;;)
2 |: u9 E3 v5 J! n# `3 _9 m        {/ Z7 X/ E, K) G5 Q, F* V
                SET_SCLK();//时钟正常输出1 R. x% T; \% N  r$ k( F. P2 p& W
                GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2+ `  t: }0 H# j: g, B
    GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
" e& v; B, K& [1 F, x8 J* ^    GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
3 P# A, b; G+ A3 }: h" w( C: j0 V& d% F1 m$ t
    delay(20);
; k. j5 \9 I% [6 m, @" t                CLR_SCLK();
' p) e& U" s$ F8 S                GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3; K! s1 B5 v8 |7 K, N( l
                GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS35 D* f: h& O& |2 {
                GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN/ r+ P9 \) n+ t
                delay(20);' n$ a' z# E5 m/ f6 c, S  U
        }6 l% B6 N* A3 E  ^
}9 x" \$ m; ~$ v

作者: Lewis    时间: 2015-5-25 14:26
这个GPIO的配置是没有问题的,在主函数里并没有使CS2拉低,其他的没有问题的
- z: T* A5 h( M* r9 h9 @




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4