|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
0 x: j8 ` u3 V9 c- L$ Lvoid PSCInit(void)
+ D9 M6 }. u9 b* H& a. r{# M5 S1 X9 C0 d. N. v( p
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
3 |8 e7 f1 F3 S4 s}
; P$ _4 w3 J6 `9 t, b! H' c3 C4 ~4 G8 _, [# U9 N4 G* ^/ {* H8 B$ p
void GPIOBankPinMuxSet(void)
& t( T% C) g0 @{
+ K) _0 ^0 b' R9 I: ]# w // DRDY ------------ GPIO6[14] -- 111
" d3 k% S5 P% A. w // SPI1_CLK ------------ GPIO2[13] -- 46
) W" y( V5 v; A1 H; ?7 X. t // SPI1_SOMI------------ GPIO2[11] -- 44! `8 ]+ \; z+ n7 ~* d: N0 I' ]; `
// SPI1_SIMO------------ GPIO2[10] -- 43
( T, w( H0 ?0 j, x3 R // SPI1_CS2 ------------ GPIO1[0] -- 17
5 R$ W" @2 |6 d; X3 J // SPI1_CS3 ------------ GPIO1[1] -- 18
, j% ~; l" [( [9 c3 I5 I" Y% G2 K
! o: j# b! @% _5 R) q! U" K# n) P HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);) Y4 I$ g; w' @$ F
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
" _! Z- q, ^) s' t T, d: s HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);/ \2 a' `% _$ M* P( w/ m/ z
, Y2 p8 u1 @1 z( U9 P //DRDY
% o/ g$ Y K& Q7 S5 v GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY$ T- y8 g1 t( w D' L
// CS2,CS3
) Q8 J3 A$ q) _& W$ x GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2 B+ y& z' r# y8 a
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3; q& i' H5 ^6 S; B6 u0 X
//SIMO( s' l) r) w* h3 v0 @ E* S, e
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO# Z' g9 N) K: T% L* D
//SOMI b6 l/ f! v" b, C# D9 B; Y- n
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI& _7 K; I5 M! H3 _8 T6 i! I' ~
//CLK3 p8 G; M- U6 [; w9 w3 |
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
7 O$ n" g- B0 K% V
& k$ d0 N( c: |2 G- s- S; n( r // LDAC b* r; m* w" f8 P8 p
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK( O* Y9 I: f3 l7 I: k5 `
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN8 q, |/ q5 v+ p. L
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS22 I- y7 Q- \# n8 H" x( G. t, L
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3# i( ^2 C/ M7 Z6 v
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
- }: Q F, E' A7 G5 x}7 S, P2 z& v: p* v1 z$ w
; j" w( F: ^6 _4 \. B6 X
int main(void)! K& Q$ R% p* y8 G3 @
{
) V* n+ m& O1 G+ t' m6 K5 \ // 外设使能+ ]; X! d/ ]7 a; J8 ]4 Y
PSCInit();8 ?. W5 x( s. f2 y6 n+ g
! |' l% }2 g# v
: N: {' o {( T _* P- ^ // 管脚复用配置. U3 o# _- B( s# e
GPIOBankPinMuxSet();
: ]: I* `' ]1 K$ B3 D6 m( a for(;;)2 R% L8 B. {! U/ Z/ @% y ~9 q
{
8 v/ }4 Y9 I! K SET_SCLK();//时钟正常输出+ {6 D% s3 T8 m
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
( `8 `& g% C1 C9 ?: G6 {- ^6 v GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
3 [, J6 h; S( s% d GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN! c9 P! I1 n4 J9 I3 N2 \4 P. I( Y
0 h6 V9 ^! {$ y' n! V
delay(20);5 |2 j3 ^* D; C# S0 E/ `9 C
CLR_SCLK();. x* F& H5 @- l6 i: m
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3& n& t* P4 V) g7 ^$ o( ~
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
, C4 J% L! |- l3 u: l5 j0 I GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
4 F. {3 ?( d9 r( A delay(20);. k# ^: m8 c( t: D0 c, m) |
}
7 g. o! k; B! h. d* s9 c& {}
* x; T: C6 E9 T- m3 ^4 I' k |
|