|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
0 a1 y4 }6 ]6 K. h& G: Jvoid PSCInit(void)+ x/ N/ [3 e3 ~( l1 ` O
{& p$ Y9 q+ z" e/ q1 [. k i" G. R4 h
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);/ D! P9 \9 w# Y) D; O# g
}
T% a3 u [. W( o8 @0 r' d( ~, D1 }, I! _+ o
void GPIOBankPinMuxSet(void)1 N- H/ q5 F# _+ G* O
{$ J* w l% `! s/ V& R4 S
// DRDY ------------ GPIO6[14] -- 111
4 Y7 Z7 [" d! e4 Y L/ o // SPI1_CLK ------------ GPIO2[13] -- 46/ Z, c6 A0 o& o" w- N9 W
// SPI1_SOMI------------ GPIO2[11] -- 440 l1 a- u7 m" J- F) y) G( P' \2 a
// SPI1_SIMO------------ GPIO2[10] -- 43" p+ R$ u0 N5 F. L B
// SPI1_CS2 ------------ GPIO1[0] -- 17
, b: b2 s) I$ E7 A5 ~ // SPI1_CS3 ------------ GPIO1[1] -- 18
; `4 E7 f7 l, Y7 x: o: D5 ?1 C! j( k: D3 a. i' ^ t& t
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
% m3 t" U! r) n$ H% n' d HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);; M# P. d& r! |5 D* _
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
% [: ^" t! n9 r' C: `* ]
% |) N6 R$ B5 ? F" u //DRDY
9 m- {- s$ ?: F v1 f4 O/ X4 f4 U GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY% D& |7 R8 v9 L/ m8 Y
// CS2,CS3
q" u2 D% |, j4 L) t/ X GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS20 r) U$ X) t0 ?7 G1 v. {3 @
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
* U/ p& l$ L8 k# x //SIMO
0 w- p5 R" [4 A2 S0 ^ GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
3 h. w( ?' N0 Z5 G- D$ h, Q) s //SOMI
/ i! t9 u( P9 j/ q1 Y) F GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI& ]3 P: o7 |6 H# E/ `, M1 ^
//CLK
: J3 t4 s9 T7 L/ A1 I' r3 j2 } GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK, V, B8 a" _$ ?; u% ]* i
& O9 e' r5 E2 \( N. b1 c1 |
// LDAC6 P) r. v9 ^1 {% x8 X% n2 W# `
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
+ i+ }! X- r# `8 ]9 p+ ~6 ~! d- l GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN, z$ ~7 _, e& e+ p! t
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS25 B: x1 [1 [- s# C& V0 e- Z
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
+ p! F4 ?1 Z3 A6 X$ [ GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY" p% d/ l2 w7 X m- l9 V9 @
}
0 l+ e# e1 P; l8 O3 D7 N0 K" }+ X5 ~+ }" e: R. Z2 Q5 L
int main(void)' r' p9 h; K7 y
{
4 @- \( g" U: G( X+ ?2 X7 d! g2 M U // 外设使能 z1 m# H7 \8 V P( U
PSCInit();
: o1 F& e( @7 ?2 \& B1 d" H7 l t! b1 {( \
5 v$ i! H# t4 T; C# P0 Y& y0 Q
// 管脚复用配置
- C$ u, u9 m" ]5 I d GPIOBankPinMuxSet();4 Z V3 b5 Y: c8 Q# U3 v% a( d# N& t
for(;;)
5 Q( i* u" p Y {' D8 P2 R# X* g7 V
SET_SCLK();//时钟正常输出
2 k' x2 Y! |$ `6 v GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2% v" n6 x3 h4 i+ P
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
7 Y! c2 d/ }6 J, L$ u GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
6 P' R1 f% ?- Q0 N; v \7 U, C2 W2 x6 r# |8 d3 y* M G y
delay(20);
/ w5 ^0 {+ ]( E+ L CLR_SCLK();" I7 M8 x J& Z9 j
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS30 i+ b& Y5 s* S: V! W: e+ K
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS36 J1 m' Q+ B+ r) m
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
$ F3 ^, V5 a2 W, y) f4 L) I delay(20);5 _: S w' ?; `0 I9 [
}0 k/ }# d% x% Q4 E
}
5 |; G* l) o! o( g7 H& i |
|