|
|
使用下面的例子代码,不能使SIMO和CS为低电平:8 y- \; ?! l+ |! N% b7 S! z
void PSCInit(void)0 ~1 x6 k9 @2 C7 s9 v/ j/ q
{( h4 k. y, x. s2 N! s6 m8 j" A$ O
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);9 W: w) P5 j+ I
}( O _+ Z1 m9 ^
& b2 I4 O. m, H& I/ Q
void GPIOBankPinMuxSet(void): J: y1 k0 W' y8 \' T7 p
{
0 `, z( z9 i. T0 K* ^. Y // DRDY ------------ GPIO6[14] -- 1117 O1 m. }9 u! s0 D$ e& Y! g: A
// SPI1_CLK ------------ GPIO2[13] -- 46
* k$ j0 a4 k: N% W; ]. }& Z2 I // SPI1_SOMI------------ GPIO2[11] -- 44
+ [5 U5 p# A R3 A* l4 i // SPI1_SIMO------------ GPIO2[10] -- 43
* g( E2 z2 n5 `! J0 u5 E // SPI1_CS2 ------------ GPIO1[0] -- 17% w1 i+ {9 n$ d& E
// SPI1_CS3 ------------ GPIO1[1] -- 18# x+ n4 S7 B& y ~
: p% _ ?, H! \ |9 q# [ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
' o6 h: S1 f/ l- | HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
7 h! T* z0 C3 j+ e) ? HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);( k& B; Y' U, p! O8 g* T
- m# V* m# L" l- ~5 }1 J ~ //DRDY0 G3 @7 ?0 n2 P% K( T4 D
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY; C5 N7 j8 u& Y0 x) Z9 D7 _- O
// CS2,CS3
1 V( V4 `# S- `0 {3 M GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
/ ?3 q7 O3 k+ B$ ~: U0 F, x GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3! a3 W4 C- Y) C! q) r7 @) b
//SIMO# m/ f& f& q4 a. }, _1 d
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
; d$ F/ P) {7 M' x6 O //SOMI
; Y+ w+ D% T6 `& {. J7 ` GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
# s2 o% c) p% r9 t Z) h8 r4 o' p //CLK
( T4 S; y: |$ O' D( m$ b GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
. e4 e6 e4 m. @+ e {- w' \
. [* P4 {* ^9 z5 J2 L* y // LDAC! d& r+ K6 r1 }4 j: l( o- m
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK* P4 z4 }/ o8 O3 m/ U
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN2 ~9 ^4 s: R0 a3 M
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2: U; Z/ e# I$ g% f) b/ g! r( l" L
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
; a4 f$ ]$ ^* Q8 k A# k$ G GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
* `3 {2 D! V& M$ b0 S. S! Q$ h' {}' a1 M. o' T1 c1 u% b" j3 K
+ ]8 y# r( x" z) p9 cint main(void)4 x" O' K; }; x# D) H. o
{! [8 ]$ ~; n! U4 d" P* {
// 外设使能
1 u) m3 |+ P4 n PSCInit();0 ^" ~0 e( `" [+ i$ `
$ O1 Q) d4 Q3 n( P# g
% O$ {; N1 R& M2 Z# ^8 Z
// 管脚复用配置
# t; u1 a, @% ? j4 k$ [8 y GPIOBankPinMuxSet();4 O, R& t4 y" ^3 Z8 ^
for(;;)
+ h8 M @ g% \3 } {; Q" Y8 }/ k1 D
SET_SCLK();//时钟正常输出
5 s; o1 v( r+ g: L GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2+ U+ e$ L- O+ P: D2 D+ b) e# c
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS32 R X- h0 R1 i! n! Q4 f
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN' i9 R+ e4 E- v( g1 Z
( B# ?0 k8 t# x& `% i
delay(20);
) u2 C0 z$ G$ i$ S* H5 g/ _( t1 X. y CLR_SCLK();
: r, w. A: l) Q- B+ M GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS34 g" Q% k; P: i/ a$ l
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
+ R" f p2 ]: A* n GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
2 b1 a& ^" F" C9 P3 k delay(20);
: h" L" z$ p+ A5 N" V9 }0 c }' Q0 L/ r. W) B. L' c9 l
} ]2 M" v3 p, a, q% T: b% T
|
|